summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <matthiasc@src.gnome.org>2006-09-13 17:23:14 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2006-09-13 17:23:14 +0000
commitf2afe34b314ee81f8beb4bf0a90ea43d6a6986b8 (patch)
tree74677ff171f0f353122a4054dde05f120f710015
parent91e69830af226ebfc70dec7a145645746dc65875 (diff)
downloadgtk+-f2afe34b314ee81f8beb4bf0a90ea43d6a6986b8.tar.gz
Fix the color picker with window groups
-rw-r--r--ChangeLog6
-rw-r--r--gtk/gtkcolorsel.c23
2 files changed, 23 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 05221b72c6..a854756c45 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2006-09-13 Matthias Clasen <mclasen@redhat.com>
+
+ * 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 <pcman.tw@gmail.com>
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,