invalidate border area when showing or hiding a pizza widget, fixes #12174

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64725 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Paul Cornett
2010-06-25 04:31:45 +00:00
parent df67b58b5b
commit 6e7cf3bd5b
2 changed files with 29 additions and 0 deletions

View File

@@ -114,6 +114,30 @@ static void realize(GtkWidget* widget)
}
}
static void show(GtkWidget* widget)
{
if (widget->parent && WX_PIZZA(widget)->m_border_style)
{
// invalidate whole allocation so borders will be drawn properly
const GtkAllocation& a = widget->allocation;
gtk_widget_queue_draw_area(widget->parent, a.x, a.y, a.width, a.height);
}
parent_class->show(widget);
}
static void hide(GtkWidget* widget)
{
if (widget->parent && WX_PIZZA(widget)->m_border_style)
{
// invalidate whole allocation so borders will be erased properly
const GtkAllocation& a = widget->allocation;
gtk_widget_queue_draw_area(widget->parent, a.x, a.y, a.width, a.height);
}
parent_class->hide(widget);
}
// not used, but needs to exist so gtk_widget_set_scroll_adjustments will work
static void set_scroll_adjustments(GtkWidget*, GtkAdjustment*, GtkAdjustment*)
{
@@ -163,6 +187,8 @@ static void class_init(void* g_class, void*)
GtkWidgetClass* widget_class = (GtkWidgetClass*)g_class;
widget_class->size_allocate = size_allocate;
widget_class->realize = realize;
widget_class->show = show;
widget_class->hide = hide;
wxPizzaClass* klass = (wxPizzaClass*)g_class;
// needed to make widget appear scrollable to GTK+

View File

@@ -305,6 +305,9 @@ expose_event_border(GtkWidget* widget, GdkEventExpose* gdk_event, wxWindow* win)
if (gdk_event->window != gtk_widget_get_parent_window(win->m_wxwindow))
return false;
if (!win->IsShown())
return false;
const GtkAllocation& alloc = win->m_wxwindow->allocation;
const int x = alloc.x;
const int y = alloc.y;