static void photos_main_window_constructed (GObject *object) { PhotosMainWindow *self = PHOTOS_MAIN_WINDOW (object); GApplication *app; G_OBJECT_CLASS (photos_main_window_parent_class)->constructed (object); /* HACK: Since GtkWindow:application is a non-construct property it * will be set after constructed has finished. We explicitly add * the window to the application here before creating the rest of * the widget hierarchy. This ensures that we can use * photos_application_get_scale_factor while constructing the * widgets. */ app = g_application_get_default (); gtk_application_add_window (GTK_APPLICATION (app), GTK_WINDOW (self)); self->edit_cancel = g_action_map_lookup_action (G_ACTION_MAP (app), "edit-cancel"); self->import_cancel = g_action_map_lookup_action (G_ACTION_MAP (app), "import-cancel"); self->load_next = g_action_map_lookup_action (G_ACTION_MAP (app), "load-next"); self->load_previous = g_action_map_lookup_action (G_ACTION_MAP (app), "load-previous"); gtk_widget_init_template (GTK_WIDGET (self)); }
static gboolean photos_main_window_window_state_event (GtkWidget *widget, GdkEventWindowState *event) { PhotosMainWindow *self = PHOTOS_MAIN_WINDOW (widget); GdkWindow *window; GdkWindowState state; gboolean maximized; gboolean ret_val; ret_val = GTK_WIDGET_CLASS (photos_main_window_parent_class)->window_state_event (widget, event); window = gtk_widget_get_window (widget); state = gdk_window_get_state (window); if (state & GDK_WINDOW_STATE_FULLSCREEN) { photos_mode_controller_set_fullscreen (self->mode_cntrlr, TRUE); return ret_val; } photos_mode_controller_set_fullscreen (self->mode_cntrlr, FALSE); maximized = (state & GDK_WINDOW_STATE_MAXIMIZED); g_settings_set_boolean (self->settings, "window-maximized", maximized); return ret_val; }
static gboolean photos_main_window_configure_id_timeout (gpointer user_data) { PhotosMainWindow *self = PHOTOS_MAIN_WINDOW (user_data); self->priv->configure_id = 0; photos_main_window_save_geometry (self); return G_SOURCE_REMOVE; }
static gboolean photos_main_window_delete_event (GtkWidget *widget, GdkEventAny *event) { PhotosMainWindow *self = PHOTOS_MAIN_WINDOW (widget); if (self->configure_id != 0) { g_source_remove (self->configure_id); self->configure_id = 0; } photos_main_window_save_geometry (self); return GDK_EVENT_PROPAGATE; }
static gboolean photos_main_window_key_press_event (GtkWidget *widget, GdkEventKey *event) { PhotosMainWindow *self = PHOTOS_MAIN_WINDOW (widget); PhotosMainWindowPrivate *priv = self->priv; PhotosMainToolbar *toolbar; PhotosWindowMode mode; gboolean handled = GDK_EVENT_PROPAGATE; handled = photos_main_window_handle_back_key (self, event); if (handled) goto out; toolbar = photos_embed_get_main_toolbar (PHOTOS_EMBED (priv->embed)); handled = photos_main_toolbar_handle_event (toolbar, event); if (handled) goto out; mode = photos_mode_controller_get_window_mode (priv->mode_cntrlr); switch (mode) { case PHOTOS_WINDOW_MODE_NONE: handled = GDK_EVENT_PROPAGATE; break; case PHOTOS_WINDOW_MODE_PREVIEW: handled = photos_main_window_handle_key_preview (self, event); break; case PHOTOS_WINDOW_MODE_COLLECTIONS: case PHOTOS_WINDOW_MODE_FAVORITES: case PHOTOS_WINDOW_MODE_OVERVIEW: case PHOTOS_WINDOW_MODE_SEARCH: handled = photos_main_window_handle_key_overview (self, event); break; default: g_assert_not_reached (); break; } out: if (!handled) handled = GTK_WIDGET_CLASS (photos_main_window_parent_class)->key_press_event (widget, event); return handled; }
static void photos_main_window_dispose (GObject *object) { PhotosMainWindow *self = PHOTOS_MAIN_WINDOW (object); g_clear_object (&self->settings); g_clear_object (&self->item_mngr); g_clear_object (&self->mode_cntrlr); g_clear_object (&self->sel_cntrlr); if (self->configure_id != 0) { g_source_remove (self->configure_id); self->configure_id = 0; } G_OBJECT_CLASS (photos_main_window_parent_class)->dispose (object); }
static gboolean photos_main_window_configure_event (GtkWidget *widget, GdkEventConfigure *event) { PhotosMainWindow *self = PHOTOS_MAIN_WINDOW (widget); gboolean ret_val; ret_val = GTK_WIDGET_CLASS (photos_main_window_parent_class)->configure_event (widget, event); if (photos_mode_controller_get_fullscreen (self->mode_cntrlr)) return ret_val; if (self->configure_id != 0) { g_source_remove (self->configure_id); self->configure_id = 0; } self->configure_id = g_timeout_add (CONFIGURE_ID_TIMEOUT, photos_main_window_configure_id_timeout, self); return ret_val; }
static void photos_main_window_constructed (GObject *object) { PhotosMainWindow *self = PHOTOS_MAIN_WINDOW (object); PhotosMainWindowPrivate *priv = self->priv; GApplication *app; G_OBJECT_CLASS (photos_main_window_parent_class)->constructed (object); /* HACK: Since GtkWindow:application is a non-construct property it * will be set after constructed has finished. We explicitly add * the window to the application here before creating the rest of * the widget hierarchy. This ensures that we can use * photos_application_get_scale_factor while constructing the * widgets. */ app = g_application_get_default (); gtk_application_add_window (GTK_APPLICATION (app), GTK_WINDOW (self)); priv->embed = photos_embed_new (); gtk_container_add (GTK_CONTAINER (self), priv->embed); }
static void photos_application_about (PhotosApplication *self, GVariant *parameter) { photos_main_window_show_about (PHOTOS_MAIN_WINDOW (self->priv->main_window)); }