From 641da23dbc1ef27c3b698c93ce022252a7b1779c Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 13 Sep 2006 17:32:48 +0000 Subject: [PATCH] Use a GtkWindow instead of a GtkInvisible for the grab widget, to make the 2006-09-13 Matthias Clasen * gtk/gtkcolorsel.c: Use a GtkWindow instead of a GtkInvisible for the grab widget, to make the color picker work with window groups. --- ChangeLog | 6 ++++++ gtk/gtkcolorsel.c | 23 +++++++++++++++++------ 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index a32f41bf48..6d1f65cd7e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-09-13 Matthias Clasen + + * gtk/gtkcolorsel.c: Use a GtkWindow instead of a GtkInvisible + for the grab widget, to make the color picker work with window + groups. + 2006-09-12 Hong Jen Yee signed off by: Dom Lachowicz diff --git a/gtk/gtkcolorsel.c b/gtk/gtkcolorsel.c index 6e66a000ce..9b21d3258e 100644 --- a/gtk/gtkcolorsel.c +++ b/gtk/gtkcolorsel.c @@ -1427,20 +1427,31 @@ get_screen_color (GtkWidget *button) GdkScreen *screen = gtk_widget_get_screen (GTK_WIDGET (button)); GdkCursor *picker_cursor; GdkGrabStatus grab_status; + GtkWidget *grab_widget, *toplevel; + guint32 time = gtk_get_current_event_time (); if (priv->dropper_grab_widget == NULL) { - priv->dropper_grab_widget = gtk_invisible_new_for_screen (screen); + grab_widget = gtk_window_new (GTK_WINDOW_POPUP); + gtk_window_set_screen (GTK_WINDOW (grab_widget), screen); + gtk_window_resize (GTK_WINDOW (grab_widget), 1, 1); + gtk_window_move (GTK_WINDOW (grab_widget), -100, -100); + gtk_widget_show (grab_widget); - gtk_widget_add_events (priv->dropper_grab_widget, + gtk_widget_add_events (grab_widget, GDK_BUTTON_RELEASE_MASK | GDK_BUTTON_PRESS_MASK | GDK_POINTER_MOTION_MASK); - gtk_widget_set_parent_window (priv->dropper_grab_widget, - GTK_WIDGET (colorsel)->window); - gtk_widget_show (priv->dropper_grab_widget); + toplevel = gtk_widget_get_toplevel (colorsel); + + if (GTK_IS_WINDOW (toplevel)) + { + if (GTK_WINDOW (toplevel)->group) + gtk_window_group_add_window (GTK_WINDOW (toplevel)->group, + GTK_WINDOW (grab_widget)); + } - gdk_window_set_user_data (priv->dropper_grab_widget->window, colorsel); + priv->dropper_grab_widget = grab_widget; } if (gdk_keyboard_grab (priv->dropper_grab_widget->window,