summaryrefslogtreecommitdiff
path: root/gtk/gtkplug.c
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2001-06-14 21:44:01 +0000
committerOwen Taylor <otaylor@src.gnome.org>2001-06-14 21:44:01 +0000
commitcf2fab907731469bc0753b4f73b04c11633d336c (patch)
treee897e81aee574e87ab3f0bbeb14cc2ade51c5da2 /gtk/gtkplug.c
parent22491fd6a4ee247bf49988db49250a6e3c278bf0 (diff)
downloadgtk+-cf2fab907731469bc0753b4f73b04c11633d336c.tar.gz
Add a GtkWindowGroup struct that allows grouping together multiple windows
Fri Jun 8 17:56:52 2001 Owen Taylor <otaylor@redhat.com> * gtk/gtkwindow.[ch] gtk/gtkmain.c: Add a GtkWindowGroup struct that allows grouping together multiple windows so that grabs within that set of windows only affect those windows. * gtk/gtkmain.c gtk/gtkwidget.[ch]: Add a "grab_notify" signal for notification when a widget becomes shadowed by a grab or is no longer shadowed by a grab. * gtk/gtkwidget.c (gtk_widget_propagate_state) gtk/gtkmain.c: (gtk_widget_grab_add): Don't allow insenstive widgets to maintain a grab.
Diffstat (limited to 'gtk/gtkplug.c')
-rw-r--r--gtk/gtkplug.c19
1 files changed, 7 insertions, 12 deletions
diff --git a/gtk/gtkplug.c b/gtk/gtkplug.c
index 1f7319b390..fa2b37c9f2 100644
--- a/gtk/gtkplug.c
+++ b/gtk/gtkplug.c
@@ -119,10 +119,6 @@ gtk_plug_init (GtkPlug *plug)
window->type = GTK_WINDOW_TOPLEVEL;
window->auto_shrink = TRUE;
-
-#if 0
- gtk_window_set_grab_group (window, window);
-#endif
}
void
@@ -168,10 +164,11 @@ gtk_plug_unrealize (GtkWidget *widget)
plug->socket_window = NULL;
}
-#if 0
if (plug->modality_window)
handle_modality_off (plug);
-#endif
+
+ gtk_window_group_remove_window (plug->modality_group, GTK_WINDOW (plug));
+ g_object_unref (plug->modality_group);
if (GTK_WIDGET_CLASS (parent_class)->unrealize)
(* GTK_WIDGET_CLASS (parent_class)->unrealize) (widget);
@@ -236,6 +233,9 @@ gtk_plug_realize (GtkWidget *widget)
gtk_style_set_background (widget->style, widget->window, GTK_STATE_NORMAL);
gdk_window_add_filter (widget->window, gtk_plug_filter_func, widget);
+
+ plug->modality_group = gtk_window_group_new ();
+ gtk_window_group_add_window (plug->modality_group, window);
}
static gboolean
@@ -574,27 +574,22 @@ focus_first_last (GtkPlug *plug,
static void
handle_modality_on (GtkPlug *plug)
{
-#if 0
if (!plug->modality_window)
{
plug->modality_window = gtk_window_new (GTK_WINDOW_POPUP);
- gtk_window_set_grab_group (GTK_WINDOW (plug->modality_window), GTK_WINDOW (plug));
+ gtk_window_group_add_window (plug->modality_group, GTK_WINDOW (plug->modality_window));
gtk_grab_add (plug->modality_window);
}
-#endif
}
static void
handle_modality_off (GtkPlug *plug)
{
-#if 0
if (plug->modality_window)
{
- gtk_grab_remove (plug->modality_window);
gtk_widget_destroy (plug->modality_window);
plug->modality_window = NULL;
}
-#endif
}
static void