fix bug #316180. gtk_window_map_event(): new function to work around lost
Fri Sep 16 14:00:20 2005 Tim Janik <timj@imendio.com> * gtk/gtkwindow.c: fix bug #316180. gtk_window_map_event(): new function to work around lost unmap requests.
This commit is contained in:
@@ -1,3 +1,8 @@
|
||||
Fri Sep 16 14:00:20 2005 Tim Janik <timj@imendio.com>
|
||||
|
||||
* gtk/gtkwindow.c: fix bug #316180.
|
||||
gtk_window_map_event(): new function to work around lost unmap requests.
|
||||
|
||||
2005-09-16 Tor Lillqvist <tml@novell.com>
|
||||
|
||||
* modules/engines/ms-windows/msw_style.c (draw_extension,
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
Fri Sep 16 14:00:20 2005 Tim Janik <timj@imendio.com>
|
||||
|
||||
* gtk/gtkwindow.c: fix bug #316180.
|
||||
gtk_window_map_event(): new function to work around lost unmap requests.
|
||||
|
||||
2005-09-16 Tor Lillqvist <tml@novell.com>
|
||||
|
||||
* modules/engines/ms-windows/msw_style.c (draw_extension,
|
||||
|
||||
@@ -189,6 +189,8 @@ static void gtk_window_size_allocate (GtkWidget *widget,
|
||||
GtkAllocation *allocation);
|
||||
static gint gtk_window_event (GtkWidget *widget,
|
||||
GdkEvent *event);
|
||||
static gboolean gtk_window_map_event (GtkWidget *widget,
|
||||
GdkEventAny *event);
|
||||
static gboolean gtk_window_frame_event (GtkWindow *window,
|
||||
GdkEvent *event);
|
||||
static gint gtk_window_configure_event (GtkWidget *widget,
|
||||
@@ -383,6 +385,7 @@ gtk_window_class_init (GtkWindowClass *klass)
|
||||
widget_class->show = gtk_window_show;
|
||||
widget_class->hide = gtk_window_hide;
|
||||
widget_class->map = gtk_window_map;
|
||||
widget_class->map_event = gtk_window_map_event;
|
||||
widget_class->unmap = gtk_window_unmap;
|
||||
widget_class->realize = gtk_window_realize;
|
||||
widget_class->unrealize = gtk_window_unrealize;
|
||||
@@ -4013,6 +4016,24 @@ gtk_window_map (GtkWidget *widget)
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gtk_window_map_event (GtkWidget *widget,
|
||||
GdkEventAny *event)
|
||||
{
|
||||
if (!GTK_WIDGET_MAPPED (widget))
|
||||
{
|
||||
/* we should be be unmapped, but are getting a MapEvent, this may happen
|
||||
* to toplevel XWindows if mapping was intercepted by a window manager
|
||||
* and an unmap request occoured while the MapRequestEvent was still
|
||||
* being handled. we work around this situaiton here by re-requesting
|
||||
* the window being unmapped. more details can be found in:
|
||||
* http://bugzilla.gnome.org/show_bug.cgi?id=316180
|
||||
*/
|
||||
gdk_window_hide (widget->window);
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_window_unmap (GtkWidget *widget)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user