[gnome-font-viewer] view: improve usage of GApplication API



commit 419afa1a577a1717f40eff7394c791e382180bfe
Author: Cosimo Cecchi <cosimoc gnome org>
Date:   Mon Apr 3 19:44:07 2017 -0700

    view: improve usage of GApplication API
    
    Don't create the window in startup().

 src/font-view.c |   55 +++++++++++++++++++++++++++++--------------------------
 1 files changed, 29 insertions(+), 26 deletions(-)
---
diff --git a/src/font-view.c b/src/font-view.c
index 8c09cb6..898e53b 100644
--- a/src/font-view.c
+++ b/src/font-view.c
@@ -673,6 +673,7 @@ font_view_application_do_overview (FontViewApplication *self)
         GtkCellRenderer *cell;
 
         self->icon_view = icon_view = gtk_icon_view_new_with_model (self->model);
+
         g_object_set (icon_view,
                       "column-spacing", VIEW_COLUMN_SPACING,
                       "margin", VIEW_MARGIN,
@@ -716,9 +717,11 @@ font_view_window_key_press_event_cb (GtkWidget *widget,
                                      GdkEventKey *event,
                                      gpointer user_data)
 {
+    FontViewApplication *self = user_data;
+
     if (event->keyval == GDK_KEY_q &&
         (event->state & GDK_CONTROL_MASK) != 0) {
-        gtk_widget_destroy (widget);
+        g_application_quit (G_APPLICATION (self));
         return TRUE;
     }
 
@@ -799,26 +802,14 @@ static GActionEntry action_entries[] = {
 };
 
 static void
-font_view_application_startup (GApplication *application)
+ensure_window (FontViewApplication *self)
 {
-    FontViewApplication *self = FONT_VIEW_APPLICATION (application);
     GtkWidget *window, *swin;
-    GtkBuilder *builder;
-    GMenuModel *menu;
-
-    G_APPLICATION_CLASS (font_view_application_parent_class)->startup (application);
 
-    g_action_map_add_action_entries (G_ACTION_MAP (self), action_entries, 
-                                     G_N_ELEMENTS (action_entries), self);
-    builder = gtk_builder_new ();
-    gtk_builder_add_from_resource (builder, "/org/gnome/font-viewer/font-view-app-menu.ui", NULL);
-    menu = G_MENU_MODEL (gtk_builder_get_object (builder, "app-menu"));
-    gtk_application_set_app_menu (GTK_APPLICATION (self), menu);
-
-    g_object_unref (builder);
-    g_object_unref (menu);
+    if (self->main_window)
+        return;
 
-    self->main_window = window = gtk_application_window_new (GTK_APPLICATION (application));
+    self->main_window = window = gtk_application_window_new (GTK_APPLICATION (self));
     gtk_window_set_resizable (GTK_WINDOW (window), TRUE);
     gtk_window_set_default_size (GTK_WINDOW (window), 800, 600);
     gtk_window_set_icon_name (GTK_WINDOW (window), "preferences-desktop-font");
@@ -855,19 +846,35 @@ font_view_application_startup (GApplication *application)
 }
 
 static void
-font_view_application_activate (GApplication *application)
+font_view_application_startup (GApplication *application)
 {
     FontViewApplication *self = FONT_VIEW_APPLICATION (application);
+    GtkBuilder *builder;
+    GMenuModel *menu;
 
-    font_view_application_do_overview (self);
+    G_APPLICATION_CLASS (font_view_application_parent_class)->startup (application);
+
+    if (!FcInit ())
+        g_critical ("Can't initialize fontconfig library");
+
+    g_action_map_add_action_entries (G_ACTION_MAP (self), action_entries,
+                                     G_N_ELEMENTS (action_entries), self);
+    builder = gtk_builder_new ();
+    gtk_builder_add_from_resource (builder, "/org/gnome/font-viewer/font-view-app-menu.ui", NULL);
+    menu = G_MENU_MODEL (gtk_builder_get_object (builder, "app-menu"));
+    gtk_application_set_app_menu (GTK_APPLICATION (self), menu);
+
+    g_object_unref (builder);
+    g_object_unref (menu);
 }
 
 static void
-font_view_application_quit_mainloop (GApplication *application)
+font_view_application_activate (GApplication *application)
 {
-    G_APPLICATION_CLASS (font_view_application_parent_class)->quit_mainloop (application);
+    FontViewApplication *self = FONT_VIEW_APPLICATION (application);
 
-    FcFini ();
+    ensure_window (self);
+    font_view_application_do_overview (self);
 }
 
 static void
@@ -896,7 +903,6 @@ font_view_application_class_init (FontViewApplicationClass *klass)
     aclass->activate = font_view_application_activate;
     aclass->startup = font_view_application_startup;
     aclass->open = font_view_application_open;
-    aclass->quit_mainloop = font_view_application_quit_mainloop;
 
     oclass->dispose = font_view_application_dispose;
 }
@@ -922,9 +928,6 @@ main (int argc,
     bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
     textdomain (GETTEXT_PACKAGE);
 
-    if (!FcInit ())
-        g_critical ("Can't initialize fontconfig library");
-
     app = font_view_application_new ();
     g_application_add_main_option_entries (app, goption_options);
     retval = g_application_run (app, argc, argv);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]