static void gtk_application_window_update_shell_shows_menubar (GtkApplicationWindow *window, GtkSettings *settings) { gboolean shown_by_shell; g_object_get (settings, "gtk-shell-shows-menubar", &shown_by_shell, NULL); if (shown_by_shell) { /* the shell shows it, so don't show it locally */ if (g_menu_model_get_n_items (G_MENU_MODEL (window->priv->menubar_section)) != 0) g_menu_remove (window->priv->menubar_section, 0); } else { /* the shell does not show it, so make sure we show it */ if (g_menu_model_get_n_items (G_MENU_MODEL (window->priv->menubar_section)) == 0) { GMenuModel *menubar = NULL; if (gtk_window_get_application (GTK_WINDOW (window)) != NULL) menubar = gtk_application_get_menubar (gtk_window_get_application (GTK_WINDOW (window))); if (menubar != NULL) g_menu_append_section (window->priv->menubar_section, NULL, menubar); } } }
static void gtk_application_window_update_shell_shows_app_menu (GtkApplicationWindow *window, GtkSettings *settings) { gboolean shown_by_shell; gboolean shown_by_titlebar; g_object_get (settings, "gtk-shell-shows-app-menu", &shown_by_shell, NULL); shown_by_titlebar = _gtk_window_titlebar_shows_app_menu (GTK_WINDOW (window)); if (shown_by_shell || shown_by_titlebar) { /* the shell shows it, so don't show it locally */ if (g_menu_model_get_n_items (G_MENU_MODEL (window->priv->app_menu_section)) != 0) g_menu_remove (window->priv->app_menu_section, 0); } else { /* the shell does not show it, so make sure we show it */ if (g_menu_model_get_n_items (G_MENU_MODEL (window->priv->app_menu_section)) == 0) { GMenuModel *app_menu = NULL; if (gtk_window_get_application (GTK_WINDOW (window)) != NULL) app_menu = gtk_application_get_app_menu (gtk_window_get_application (GTK_WINDOW (window))); if (app_menu != NULL) { const gchar *app_name; gchar *name; app_name = g_get_application_name (); if (app_name != g_get_prgname ()) { /* the app has set its application name, use it */ name = g_strdup (app_name); } else { /* get the name from .desktop file */ name = gtk_application_window_get_app_desktop_name (); if (name == NULL) name = g_strdup (_("Application")); } g_menu_append_submenu (window->priv->app_menu_section, name, app_menu); g_free (name); } } } }
static void gtk_application_window_real_map (GtkWidget *widget) { GtkApplicationWindow *window = GTK_APPLICATION_WINDOW (widget); /* XXX could eliminate this by tweaking gtk_window_map */ if (window->priv->menubar) gtk_widget_map (window->priv->menubar); #ifdef GDK_WINDOWING_WAYLAND { GdkWindow *gdkwindow; GtkApplication *application; application = gtk_window_get_application (GTK_WINDOW (window)); gdkwindow = gtk_widget_get_window (widget); if (GDK_IS_WAYLAND_WINDOW (gdkwindow) && window->priv->session) { gdk_wayland_window_set_dbus_properties_libgtk_only (gdkwindow, g_application_get_application_id (G_APPLICATION (application)), gtk_application_get_app_menu_object_path (application), gtk_application_get_menubar_object_path (application), window->priv->object_path, g_application_get_dbus_object_path (G_APPLICATION (application)), g_dbus_connection_get_unique_name (window->priv->session)); } } #endif GTK_WIDGET_CLASS (gtk_application_window_parent_class)->map (widget); }
static void gtk_application_window_real_realize (GtkWidget *widget) { GtkApplicationWindow *window = GTK_APPLICATION_WINDOW (widget); GtkApplication *application; GtkSettings *settings; application = gtk_window_get_application (GTK_WINDOW (window)); settings = gtk_widget_get_settings (widget); g_signal_connect (settings, "notify::gtk-shell-shows-app-menu", G_CALLBACK (gtk_application_window_shell_shows_app_menu_changed), window); g_signal_connect (settings, "notify::gtk-shell-shows-menubar", G_CALLBACK (gtk_application_window_shell_shows_menubar_changed), window); if (!window->priv->muxer_initialised) { g_action_muxer_insert (G_ACTION_MUXER (window->priv->muxer), "app", G_ACTION_GROUP (application)); g_action_muxer_insert (G_ACTION_MUXER (window->priv->muxer), "win", G_ACTION_GROUP (window)); window->priv->muxer_initialised = TRUE; } gtk_application_window_update_shell_shows_app_menu (window, settings); gtk_application_window_update_shell_shows_menubar (window, settings); gtk_application_window_update_menubar (window); gtk_application_window_update_accels (window); GTK_WIDGET_CLASS (gtk_application_window_parent_class) ->realize (widget); #ifdef GDK_WINDOWING_X11 { GdkWindow *gdkwindow; gdkwindow = gtk_widget_get_window (GTK_WIDGET (window)); if (GDK_IS_X11_WINDOW (gdkwindow) && window->priv->session) { gdk_x11_window_set_utf8_property (gdkwindow, "_GTK_APPLICATION_ID", g_application_get_application_id (G_APPLICATION (application))); gdk_x11_window_set_utf8_property (gdkwindow, "_GTK_UNIQUE_BUS_NAME", g_dbus_connection_get_unique_name (window->priv->session)); gdk_x11_window_set_utf8_property (gdkwindow, "_GTK_APPLICATION_OBJECT_PATH", g_application_get_dbus_object_path (G_APPLICATION (application))); gdk_x11_window_set_utf8_property (gdkwindow, "_GTK_WINDOW_OBJECT_PATH", window->priv->object_path); gdk_x11_window_set_utf8_property (gdkwindow, "_GTK_APP_MENU_OBJECT_PATH", gtk_application_get_app_menu_object_path (application)); gdk_x11_window_set_utf8_property (gdkwindow, "_GTK_MENUBAR_OBJECT_PATH", gtk_application_get_menubar_object_path (application)); } } #endif }
static void gtk_application_window_real_realize (GtkWidget *widget) { GtkApplicationWindow *window = GTK_APPLICATION_WINDOW (widget); GtkApplication *application; GtkSettings *settings; application = gtk_window_get_application (GTK_WINDOW (window)); settings = gtk_widget_get_settings (widget); g_signal_connect (settings, "notify::gtk-shell-shows-app-menu", G_CALLBACK (gtk_application_window_shell_shows_app_menu_changed), window); g_signal_connect (settings, "notify::gtk-shell-shows-menubar", G_CALLBACK (gtk_application_window_shell_shows_menubar_changed), window); gtk_application_window_update_shell_shows_app_menu (window, settings); gtk_application_window_update_shell_shows_menubar (window, settings); gtk_application_window_update_menubar (window); /* Update the accelerators, and ensure we do again * if the accel map changes */ gtk_application_window_update_accels (window); window->priv->accel_map_changed_id = g_signal_connect_swapped (gtk_accel_map_get (), "changed", G_CALLBACK (gtk_application_window_update_accels), window); GTK_WIDGET_CLASS (gtk_application_window_parent_class) ->realize (widget); #ifdef GDK_WINDOWING_X11 { GdkWindow *gdkwindow; gdkwindow = gtk_widget_get_window (GTK_WIDGET (window)); if (GDK_IS_X11_WINDOW (gdkwindow) && window->priv->session) { gdk_x11_window_set_utf8_property (gdkwindow, "_GTK_APPLICATION_ID", g_application_get_application_id (G_APPLICATION (application))); gdk_x11_window_set_utf8_property (gdkwindow, "_GTK_UNIQUE_BUS_NAME", g_dbus_connection_get_unique_name (window->priv->session)); gdk_x11_window_set_utf8_property (gdkwindow, "_GTK_APPLICATION_OBJECT_PATH", g_application_get_dbus_object_path (G_APPLICATION (application))); gdk_x11_window_set_utf8_property (gdkwindow, "_GTK_WINDOW_OBJECT_PATH", window->priv->object_path); gdk_x11_window_set_utf8_property (gdkwindow, "_GTK_APP_MENU_OBJECT_PATH", gtk_application_get_app_menu_object_path (application)); gdk_x11_window_set_utf8_property (gdkwindow, "_GTK_MENUBAR_OBJECT_PATH", gtk_application_get_menubar_object_path (application)); } } #endif }
static void assistant_view_open_uri_cb (DhAssistantView *view, const char *uri, DhAssistant *assistant) { DhApp *app; GtkWindow *window; app = DH_APP (gtk_window_get_application (GTK_WINDOW (assistant))); window = dh_app_peek_first_window (app); _dh_window_display_uri (DH_WINDOW (window), uri); }
static void application_set_cb (GObject *object, GParamSpec *pspec, GnomeControlCenter *self) { /* update small screen settings now - to avoid visible resizing, we want * to do it before showing the window, and GtkApplicationWindow cannot be * realized unless its application property has been set */ if (gtk_window_get_application (GTK_WINDOW (self->priv->window))) { gtk_widget_realize (self->priv->window); update_small_screen_settings (self); } }
static AnjutaShell * anjuta_window_create_window (AnjutaShell *shell, GError **error) { AnjutaWindow *win = NULL; AnjutaApplication *app; /* AnjutaWindow assertions */ g_return_val_if_fail (ANJUTA_IS_WINDOW (shell), NULL); app = ANJUTA_APPLICATION (gtk_window_get_application (GTK_WINDOW (shell))); win = anjuta_application_create_window (ANJUTA_APPLICATION (app)); return ANJUTA_SHELL (win); }
static void gtk_application_window_actions_change_action_state_full (GRemoteActionGroup *remote, const gchar *action_name, GVariant *value, GVariant *platform_data) { GtkApplicationWindowActions *actions = (GtkApplicationWindowActions *) remote; GApplication *application; GApplicationClass *class; application = G_APPLICATION (gtk_window_get_application (actions->window)); class = G_APPLICATION_GET_CLASS (application); class->before_emit (application, platform_data); g_action_group_change_action_state (G_ACTION_GROUP (actions), action_name, value); class->after_emit (application, platform_data); }
/** * g_paste_ui_header_new: * @topwin: the main #GtkWindow * @client: a #GPasteClient instance * * Create a new instance of #GPasteUiHeader * * Returns: a newly allocated #GPasteUiHeader * free it with g_object_unref */ G_PASTE_VISIBLE GtkWidget * g_paste_ui_header_new (GtkWindow *topwin, GPasteClient *client) { g_return_val_if_fail (GTK_IS_WINDOW (topwin), NULL); g_return_val_if_fail (G_PASTE_IS_CLIENT (client), NULL); GtkWidget *self = gtk_widget_new (G_PASTE_TYPE_UI_HEADER, NULL); GtkHeaderBar *bar = GTK_HEADER_BAR (self); gtk_header_bar_pack_start (bar, g_paste_ui_switch_new (topwin, client)); gtk_header_bar_pack_end (bar, g_paste_ui_about_new (gtk_window_get_application (topwin))); gtk_header_bar_pack_end (bar, g_paste_ui_empty_new (topwin, client)); return self; }
static GObject * find_action_owner (GtkActionable *actionable) { GtkWidget *widget = GTK_WIDGET (actionable); const gchar *full_name; const gchar *dot; const gchar *name; gchar *prefix; GtkWidget *win; GActionGroup *group; full_name = gtk_actionable_get_action_name (actionable); if (!full_name) return NULL; dot = strchr (full_name, '.'); prefix = g_strndup (full_name, dot - full_name); name = dot + 1; win = gtk_widget_get_ancestor (widget, GTK_TYPE_APPLICATION_WINDOW); if (g_strcmp0 (prefix, "win") == 0) { if (G_IS_OBJECT (win)) return (GObject *)win; } else if (g_strcmp0 (prefix, "app") == 0) { if (GTK_IS_WINDOW (win)) return (GObject *)gtk_window_get_application (GTK_WINDOW (win)); } while (widget != NULL) { group = _gtk_widget_get_action_group (widget, prefix); if (group && g_action_group_has_action (group, name)) return (GObject *)widget; widget = action_ancestor (widget); } return NULL; }
static void nautilus_bookmarks_window_constructed (GObject *object) { NautilusBookmarksWindow *self = NAUTILUS_BOOKMARKS_WINDOW (object); GtkBuilder *builder; GError *error = NULL; GtkWindow *window; GtkWidget *content; GtkTreeViewColumn *col; GtkCellRenderer *rend; G_OBJECT_CLASS (nautilus_bookmarks_window_parent_class)->constructed (object); builder = gtk_builder_new (); if (!gtk_builder_add_from_resource (builder, "/org/gnome/nautilus/nautilus-bookmarks-window.ui", &error)) { g_object_unref (builder); g_critical ("Can't load UI description for the bookmarks editor: %s", error->message); g_error_free (error); return; } window = GTK_WINDOW (object); gtk_window_set_title (window, _("Bookmarks")); gtk_window_set_default_size (window, BOOKMARKS_WINDOW_INITIAL_WIDTH, BOOKMARKS_WINDOW_INITIAL_HEIGHT); gtk_window_set_application (window, gtk_window_get_application (GTK_WINDOW (self->priv->parent_window))); gtk_window_set_destroy_with_parent (window, TRUE); gtk_window_set_transient_for (window, GTK_WINDOW (self->priv->parent_window)); gtk_window_set_position (window, GTK_WIN_POS_CENTER_ON_PARENT); gtk_container_set_border_width (GTK_CONTAINER (window), 6); g_signal_connect (window, "key-press-event", G_CALLBACK (nautilus_bookmarks_window_key_press_event_cb), NULL); content = GTK_WIDGET (gtk_builder_get_object (builder, "bookmarks_window_content")); gtk_container_add (GTK_CONTAINER (window), content); /* tree view */ self->priv->tree_view = GTK_TREE_VIEW (gtk_builder_get_object (builder, "bookmark_tree_view")); self->priv->selection = gtk_tree_view_get_selection (self->priv->tree_view); gtk_tree_selection_set_mode (self->priv->selection, GTK_SELECTION_BROWSE); rend = gtk_cell_renderer_pixbuf_new (); g_object_set (rend, "follow-state", TRUE, NULL); col = gtk_tree_view_column_new_with_attributes ("Icon", rend, "gicon", BOOKMARK_LIST_COLUMN_ICON, NULL); gtk_tree_view_append_column (self->priv->tree_view, GTK_TREE_VIEW_COLUMN (col)); gtk_tree_view_column_set_fixed_width (GTK_TREE_VIEW_COLUMN (col), NAUTILUS_ICON_SIZE_SMALLER); rend = gtk_cell_renderer_text_new (); g_object_set (rend, "ellipsize", PANGO_ELLIPSIZE_END, "ellipsize-set", TRUE, NULL); col = gtk_tree_view_column_new_with_attributes ("Icon", rend, "text", BOOKMARK_LIST_COLUMN_NAME, "style", BOOKMARK_LIST_COLUMN_STYLE, NULL); gtk_tree_view_append_column (self->priv->tree_view, GTK_TREE_VIEW_COLUMN (col)); self->priv->model = create_bookmark_store (); setup_empty_list (self); /* name entry */ self->priv->name_field = nautilus_entry_new (); gtk_widget_show (self->priv->name_field); gtk_box_pack_start (GTK_BOX (gtk_builder_get_object (builder, "bookmark_name_placeholder")), self->priv->name_field, TRUE, TRUE, 0); gtk_label_set_mnemonic_widget ( GTK_LABEL (gtk_builder_get_object (builder, "bookmark_name_label")), self->priv->name_field); /* URI entry */ self->priv->uri_field = nautilus_entry_new (); gtk_widget_show (self->priv->uri_field); gtk_box_pack_start (GTK_BOX (gtk_builder_get_object (builder, "bookmark_location_placeholder")), self->priv->uri_field, TRUE, TRUE, 0); gtk_label_set_mnemonic_widget ( GTK_LABEL (gtk_builder_get_object (builder, "bookmark_location_label")), self->priv->uri_field); /* buttons */ self->priv->remove_button = GTK_WIDGET (gtk_builder_get_object (builder, "bookmark_remove_button")); self->priv->up_button = GTK_WIDGET (gtk_builder_get_object (builder, "bookmark_up_button")); self->priv->down_button = GTK_WIDGET (gtk_builder_get_object (builder, "bookmark_down_button")); g_object_unref (builder); /* setup bookmarks list and signals */ self->priv->bookmarks = nautilus_application_get_bookmarks (NAUTILUS_APPLICATION (g_application_get_default ())); self->priv->bookmarks_changed_id = g_signal_connect (self->priv->bookmarks, "changed", G_CALLBACK (on_bookmark_list_changed), self); self->priv->row_changed_id = g_signal_connect (self->priv->model, "row-changed", G_CALLBACK (on_row_changed), self); self->priv->row_deleted_id = g_signal_connect (self->priv->model, "row-deleted", G_CALLBACK (on_row_deleted), self); self->priv->row_activated_id = g_signal_connect (self->priv->tree_view, "row-activated", G_CALLBACK (on_row_activated), self); self->priv->button_press_id = g_signal_connect (self->priv->tree_view, "button-press-event", G_CALLBACK (on_button_pressed), self); self->priv->key_press_id = g_signal_connect (self->priv->tree_view, "key-press-event", G_CALLBACK (on_key_pressed), self); self->priv->selection_changed_id = g_signal_connect (self->priv->selection, "changed", G_CALLBACK (on_selection_changed), self); self->priv->name_changed_id = g_signal_connect (self->priv->name_field, "changed", G_CALLBACK (on_name_field_changed), self); g_signal_connect (self->priv->name_field, "focus_out_event", G_CALLBACK (on_text_field_focus_out_event), self); g_signal_connect (self->priv->name_field, "activate", G_CALLBACK (name_or_uri_field_activate), self); self->priv->uri_changed_id = g_signal_connect (self->priv->uri_field, "changed", G_CALLBACK (on_uri_field_changed), self); g_signal_connect (self->priv->uri_field, "focus_out_event", G_CALLBACK (on_text_field_focus_out_event), self); g_signal_connect (self->priv->uri_field, "activate", G_CALLBACK (name_or_uri_field_activate), self); g_signal_connect (self->priv->remove_button, "clicked", G_CALLBACK (on_remove_button_clicked), self); g_signal_connect (self->priv->up_button, "clicked", G_CALLBACK (on_up_button_clicked), self); g_signal_connect (self->priv->down_button, "clicked", G_CALLBACK (on_down_button_clicked), self); /* Fill in list widget with bookmarks, must be after signals are wired up. */ repopulate (self); }
static void on_session_load (AnjutaShell *shell, AnjutaSessionPhase phase, AnjutaSession *session, AnjutaWindow *win) { if (phase == ANJUTA_SESSION_PHASE_START) { AnjutaApplication *app; app = ANJUTA_APPLICATION (gtk_window_get_application (GTK_WINDOW (win))); if (app != NULL) { if (anjuta_application_get_no_session (app)) { /* Clear session */ anjuta_session_clear (session); } else if (anjuta_application_get_no_files (app)) { /* Clear files from session */ anjuta_session_set_string_list (session, "File Loader", "Files", NULL); } if (anjuta_application_get_geometry (app)) { /* Set new geometry */ anjuta_session_set_string (session, "Anjuta", "Geometry", anjuta_application_get_geometry (app)); } } } /* We load layout at last so that all plugins would have loaded by now */ if (phase == ANJUTA_SESSION_PHASE_LAST) { gchar *geometry; gchar *layout_file; /* Restore geometry */ geometry = anjuta_session_get_string (session, "Anjuta", "Geometry"); anjuta_window_set_geometry (win, geometry); g_free (geometry); /* Restore window state */ if (anjuta_session_get_int (session, "Anjuta", "Fullscreen")) { /* bug #304495 */ AnjutaUI* ui = anjuta_shell_get_ui(shell, NULL); GtkAction* action = anjuta_ui_get_action (ui, "ActionGroupToggleView", "ActionViewFullscreen"); gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), TRUE); gtk_window_fullscreen (GTK_WINDOW (shell)); } else if (anjuta_session_get_int (session, "Anjuta", "Maximized")) { gtk_window_maximize (GTK_WINDOW (shell)); } else { gtk_window_unmaximize (GTK_WINDOW (shell)); } gtk_widget_show (GTK_WIDGET (win)); /* Restore layout */ layout_file = g_build_filename (anjuta_session_get_session_directory (session), "dock-layout.xml", NULL); anjuta_window_layout_load (win, layout_file, NULL); g_free (layout_file); } }