static GdkWindow * lmplayer_gtk_plug_get_toplevel (GtkPlug *plug) { Window root, parent, *children; guint nchildren; GdkNativeWindow xid; g_return_val_if_fail (GTK_IS_PLUG (plug), NULL); xid = gtk_plug_get_id (plug); do { /* FIXME: multi-head */ if (XQueryTree (GDK_DISPLAY (), xid, &root, &parent, &children, &nchildren) == 0) { g_warning ("Couldn't find window manager window"); return NULL; } if (root == parent) { GdkWindow *toplevel; toplevel = gdk_window_foreign_new (xid); return toplevel; } xid = parent; } while (TRUE); }
/* Adapted from totem-interface.c */ static Window bacon_video_widget_gtk_plug_get_toplevel (GtkPlug *plug) { Window root, parent, *children; guint nchildren; Window xid; g_return_val_if_fail (GTK_IS_PLUG (plug), 0); xid = gtk_plug_get_id (plug); do { /* FIXME: multi-head */ if (XQueryTree (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), xid, &root, &parent, &children, &nchildren) == 0) { g_warning ("Couldn't find window manager window"); return 0; } if (root == parent) return xid; xid = parent; } while (TRUE); }
void totem_interface_set_transient_for (GtkWindow *window, GtkWindow *parent) { #ifdef GDK_WINDOWING_X11 GdkDisplay *display; display = gdk_display_get_default (); if (GDK_IS_X11_DISPLAY (display) && GTK_IS_PLUG (parent)) { GdkWindow *toplevel; gtk_widget_realize (GTK_WIDGET (window)); toplevel = totem_gtk_plug_get_toplevel (GTK_PLUG (parent)); if (toplevel != NULL) { gdk_window_set_transient_for (gtk_widget_get_window (GTK_WIDGET (window)), toplevel); g_object_unref (toplevel); } return; } #endif /* GDK_WINDOWING_X11 */ gtk_window_set_transient_for (GTK_WINDOW (window), GTK_WINDOW (parent)); }
static void gail_window_real_initialize (AtkObject *obj, gpointer data) { GtkWidget *widget = GTK_WIDGET (data); GailWindow *window; /* * A GailWindow can be created for a GtkHandleBox or a GtkWindow */ if (!GTK_IS_WINDOW (widget) && !GTK_IS_HANDLE_BOX (widget)) gail_return_if_fail (FALSE); ATK_OBJECT_CLASS (gail_window_parent_class)->initialize (obj, data); window = GAIL_WINDOW (obj); window->name_change_handler = 0; window->previous_name = g_strdup (gtk_window_get_title (GTK_WINDOW (data))); g_signal_connect (data, "window_state_event", G_CALLBACK (gail_window_state_event_gtk), NULL); g_object_set_data (G_OBJECT (obj), "atk-component-layer", GINT_TO_POINTER (ATK_LAYER_WINDOW)); if (GTK_IS_FILE_SELECTION (widget)) obj->role = ATK_ROLE_FILE_CHOOSER; else if (GTK_IS_COLOR_SELECTION_DIALOG (widget)) obj->role = ATK_ROLE_COLOR_CHOOSER; else if (GTK_IS_FONT_SELECTION_DIALOG (widget)) obj->role = ATK_ROLE_FONT_CHOOSER; else if (GTK_IS_MESSAGE_DIALOG (widget)) obj->role = ATK_ROLE_ALERT; else if (GTK_IS_DIALOG (widget)) obj->role = ATK_ROLE_DIALOG; else { const gchar *name; name = gtk_widget_get_name (widget); if (name && (!strcmp (name, "gtk-tooltip") || !strcmp (name, "gtk-tooltips"))) obj->role = ATK_ROLE_TOOL_TIP; else if (GTK_IS_PLUG (widget)) obj->role = ATK_ROLE_PANEL; else if (GTK_WINDOW (widget)->type == GTK_WINDOW_POPUP) obj->role = ATK_ROLE_WINDOW; else obj->role = ATK_ROLE_FRAME; } /* * Notify that tooltip is showing */ if (obj->role == ATK_ROLE_TOOL_TIP && gtk_widget_get_mapped (widget)) atk_object_notify_state_change (obj, ATK_STATE_SHOWING, 1); }
static Window bacon_video_widget_gst_get_toplevel (GtkWidget *widget) { GtkWidget *parent; parent = gtk_widget_get_toplevel (GTK_WIDGET (widget)); if (parent == NULL) return 0; if (GTK_IS_PLUG (parent)) return bacon_video_widget_gtk_plug_get_toplevel (GTK_PLUG (parent)); else return GDK_WINDOW_XID(gtk_widget_get_window (parent)); }
static void _matenu_global_menu_item_hierarchy_changed (MatenuGlobalMenuItem* self, GtkWidget* old_toplevel) { GtkWidget* _tmp0_; GtkPlug* toplevel; g_return_if_fail (self != NULL); toplevel = _g_object_ref0 ((_tmp0_ = gtk_widget_get_toplevel ((GtkWidget*) self), GTK_IS_PLUG (_tmp0_) ? ((GtkPlug*) _tmp0_) : NULL)); if (toplevel != NULL) { g_signal_connect_object ((GtkWidget*) toplevel, "configure-event", (GCallback) _matenu_global_menu_item_sync_monitor_num_gtk_widget_configure_event, self, 0); } if (old_toplevel != NULL) { guint _tmp1_; g_signal_parse_name ("configure-event", GTK_TYPE_WIDGET, &_tmp1_, NULL, FALSE); g_signal_handlers_disconnect_matched (old_toplevel, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp1_, 0, NULL, (GCallback) _matenu_global_menu_item_sync_monitor_num_gtk_widget_configure_event, self); } _g_object_unref0 (toplevel); }
void lmplayer_interface_set_transient_for (GtkWindow *window, GtkWindow *parent) { if (GTK_IS_PLUG (parent)) { GdkWindow *toplevel; gtk_widget_realize (GTK_WIDGET (window)); toplevel = lmplayer_gtk_plug_get_toplevel (GTK_PLUG (parent)); if (toplevel != NULL) { gdk_window_set_transient_for (GTK_WIDGET (window)->window, toplevel); g_object_unref (toplevel); } } else { gtk_window_set_transient_for (GTK_WINDOW (window), GTK_WINDOW (parent)); } }