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:
@@ -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+
|
||||
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user