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
|
// not used, but needs to exist so gtk_widget_set_scroll_adjustments will work
|
||||||
static void set_scroll_adjustments(GtkWidget*, GtkAdjustment*, GtkAdjustment*)
|
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;
|
GtkWidgetClass* widget_class = (GtkWidgetClass*)g_class;
|
||||||
widget_class->size_allocate = size_allocate;
|
widget_class->size_allocate = size_allocate;
|
||||||
widget_class->realize = realize;
|
widget_class->realize = realize;
|
||||||
|
widget_class->show = show;
|
||||||
|
widget_class->hide = hide;
|
||||||
wxPizzaClass* klass = (wxPizzaClass*)g_class;
|
wxPizzaClass* klass = (wxPizzaClass*)g_class;
|
||||||
|
|
||||||
// needed to make widget appear scrollable to GTK+
|
// 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))
|
if (gdk_event->window != gtk_widget_get_parent_window(win->m_wxwindow))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
if (!win->IsShown())
|
||||||
|
return false;
|
||||||
|
|
||||||
const GtkAllocation& alloc = win->m_wxwindow->allocation;
|
const GtkAllocation& alloc = win->m_wxwindow->allocation;
|
||||||
const int x = alloc.x;
|
const int x = alloc.x;
|
||||||
const int y = alloc.y;
|
const int y = alloc.y;
|
||||||
|
Reference in New Issue
Block a user