don't show the main window until the theme previews are done.
authorDana Jansens <danakj@orodu.net>
Thu, 31 May 2007 06:34:39 +0000 (06:34 +0000)
committerDana Jansens <danakj@orodu.net>
Thu, 31 May 2007 06:34:39 +0000 (06:34 +0000)
scroll to the current theme whenever theme previews are re-done.

src/appearance.c
src/main.c
src/obconf.glade
src/preview_update.c
src/preview_update.h
src/strings.c
src/theme.c

index 6d282280ffe612ecb07fdad1563c9ce1533ba4b6..61d2228eeff8f4f1ca964e0d1836cbf5450f3b86 100644 (file)
@@ -145,26 +145,36 @@ void on_title_layout_changed(GtkEntry *w, gpointer data)
 
 void on_font_active_font_set(GtkFontButton *w, gpointer data)
 {
+    if (mapping) return;
+
     preview_update_set_active_font(write_font(w, "ActiveWindow"));
 }
 
 void on_font_inactive_font_set(GtkFontButton *w, gpointer data)
 {
+    if (mapping) return;
+
     preview_update_set_inactive_font(write_font(w, "InactiveWindow"));
 }
 
 void on_font_menu_header_font_set(GtkFontButton *w, gpointer data)
 {
+    if (mapping) return;
+
     preview_update_set_menu_header_font(write_font(w, "MenuHeader"));
 }
 
 void on_font_menu_item_font_set(GtkFontButton *w, gpointer data)
 {
+    if (mapping) return;
+
     preview_update_set_menu_item_font(write_font(w, "MenuItem"));
 }
 
 void on_font_display_font_set(GtkFontButton *w, gpointer data)
 {
+    if (mapping) return;
+
     preview_update_set_osd_font(write_font(w, "OnScreenDisplay"));
 }
 
index f038a1b4ab959fffee1eb66633d938d547639d40..5302c7247925011f4da48bdf697ee90b621ea6c7 100644 (file)
@@ -197,8 +197,6 @@ int main(int argc, char **argv)
         sn_launchee_context_setup_window
             (sn_cx, GDK_WINDOW_XWINDOW(GDK_WINDOW(mainwin->window)));
 
-    gtk_widget_show_all(mainwin);
-
     if (sn_cx)
         sn_launchee_context_complete(sn_cx);
 
@@ -209,9 +207,10 @@ int main(int argc, char **argv)
     if (obc_theme_install)
         theme_install(obc_theme_install);
 
+    /* the main window is not shown here ! it is shown when the theme previews
+       are completed */
     gtk_main();
 
-    preview_update_set_list_store(NULL);
     preview_update_set_active_font(NULL);
     preview_update_set_inactive_font(NULL);
     preview_update_set_menu_header_font(NULL);
index 5e22772106d609e13b93cdd57d337af4bbd8abdf..f0c1ca2f89a391ddc25593b84ff6cf4c153648ce 100644 (file)
@@ -5,7 +5,6 @@
 
 <widget class="GtkWindow" id="main_window">
   <property name="border_width">13</property>
-  <property name="visible">True</property>
   <property name="title" translatable="yes">Openbox Configuration Manager</property>
   <property name="type">GTK_WINDOW_TOPLEVEL</property>
   <property name="window_position">GTK_WIN_POS_NONE</property>
@@ -711,7 +710,7 @@ C - The close button</property>
                              <property name="can_focus">True</property>
                              <property name="show_style">True</property>
                              <property name="show_size">True</property>
-                             <property name="use_font">True</property>
+                             <property name="use_font">False</property>
                              <property name="use_size">False</property>
                              <property name="focus_on_click">True</property>
                              <signal name="font_set" handler="on_font_inactive_font_set" last_modification_time="Fri, 25 May 2007 16:03:13 GMT"/>
@@ -732,7 +731,7 @@ C - The close button</property>
                              <property name="can_focus">True</property>
                              <property name="show_style">True</property>
                              <property name="show_size">True</property>
-                             <property name="use_font">True</property>
+                             <property name="use_font">False</property>
                              <property name="use_size">False</property>
                              <property name="focus_on_click">True</property>
                              <signal name="font_set" handler="on_font_menu_header_font_set" last_modification_time="Fri, 25 May 2007 16:03:17 GMT"/>
@@ -753,7 +752,7 @@ C - The close button</property>
                              <property name="can_focus">True</property>
                              <property name="show_style">True</property>
                              <property name="show_size">True</property>
-                             <property name="use_font">True</property>
+                             <property name="use_font">False</property>
                              <property name="use_size">False</property>
                              <property name="focus_on_click">True</property>
                              <signal name="font_set" handler="on_font_menu_item_font_set" last_modification_time="Fri, 25 May 2007 16:03:20 GMT"/>
@@ -774,7 +773,7 @@ C - The close button</property>
                              <property name="can_focus">True</property>
                              <property name="show_style">True</property>
                              <property name="show_size">True</property>
-                             <property name="use_font">True</property>
+                             <property name="use_font">False</property>
                              <property name="use_size">False</property>
                              <property name="focus_on_click">True</property>
                              <signal name="font_set" handler="on_font_display_font_set" last_modification_time="Fri, 25 May 2007 16:03:23 GMT"/>
@@ -940,7 +939,7 @@ C - The close button</property>
                              <property name="can_focus">True</property>
                              <property name="show_style">True</property>
                              <property name="show_size">True</property>
-                             <property name="use_font">True</property>
+                             <property name="use_font">False</property>
                              <property name="use_size">False</property>
                              <property name="focus_on_click">True</property>
                              <signal name="font_set" handler="on_font_active_font_set" last_modification_time="Fri, 25 May 2007 16:03:09 GMT"/>
@@ -2981,8 +2980,7 @@ C - The close button</property>
              <property name="can_focus">True</property>
              <property name="label" translatable="yes">Copyright (c) 2003-2007
 Dana Jansens &lt;danakj@orodu.net&gt;
-Tim Riley &lt;tr@slackzone.org&gt;
-Javeed Shaikh &lt;syscrash2k@gmail.com&gt;</property>
+Tim Riley &lt;tr@slackzone.org&gt;</property>
              <property name="use_underline">False</property>
              <property name="use_markup">False</property>
              <property name="justify">GTK_JUSTIFY_CENTER</property>
index 64a5fec264e4c43cbd2546e4c10a0120363793c5..bc45f07002c45db03b4c8011ada495eb87a85c13 100644 (file)
@@ -1,7 +1,9 @@
 #include "preview_update.h"
+#include "main.h"
 
 static gboolean restart_theme_preview_update = TRUE;
 
+static GtkTreeView  *tree_view            = NULL;
 static GtkListStore *list_store           = NULL;
 static gchar        *title_layout         = NULL;
 static RrFont       *active_window_font   = NULL;
@@ -28,10 +30,13 @@ void preview_update_all()
                     list_store, NULL);
 }
 
-void preview_update_set_list_store(GtkListStore *ls)
+void preview_update_set_tree_view(GtkTreeView *tr, GtkListStore *ls)
 {
+    g_assert(!!tr == !!ls);
+
     if (list_store) g_idle_remove_by_data(list_store);
 
+    tree_view = tr;
     list_store = ls;
 
     if (list_store) preview_update_all();
@@ -87,12 +92,22 @@ static gboolean update_theme_preview_iterate(gpointer data)
 
     if (restart_theme_preview_update) {
         if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(ls), &iter))
-            return;
+            return FALSE;
         restart_theme_preview_update = FALSE;
     } else {
         if (!gtk_tree_model_iter_next(GTK_TREE_MODEL(ls), &iter)) {
+            GtkTreePath *path;
+
             restart_theme_preview_update = TRUE;
-            return;
+
+            gtk_tree_view_get_cursor(tree_view, &path, NULL);
+            gtk_tree_view_scroll_to_cell(tree_view, path, NULL,
+                                         FALSE, 0, 0);
+            gtk_tree_path_free(path);
+
+            gtk_widget_show_all(mainwin);
+
+            return FALSE;
         }
     }
 
@@ -103,4 +118,6 @@ static gboolean update_theme_preview_iterate(gpointer data)
                                      inactive_window_font, menu_title_font,
                                      menu_item_font, osd_font),
                        -1);
+
+    return TRUE;
 }
index 6d5b788ef6764afb021122158b0c7385f3d47292..1fe96740867593156add8c292d1a7d4e616c31c3 100644 (file)
@@ -6,7 +6,7 @@
 
 void preview_update_all();
 
-void preview_update_set_list_store       (GtkListStore *ls);
+void preview_update_set_tree_view        (GtkTreeView  *tr, GtkListStore *ls);
 void preview_update_set_active_font      (RrFont *f);
 void preview_update_set_inactive_font    (RrFont *f);
 void preview_update_set_menu_header_font (RrFont *f);
index 851bc7c8b762c532f8ad31d47e3c18335ea24461..b9700e1df8968634d390b154feb6b29833cea048 100644 (file)
@@ -92,5 +92,4 @@ gchar *s = N_("<span weight=\"bold\" size=\"xx-large\">ObConf VERSION</span>");
 gchar *s = N_("A preferences manager for Openbox");
 gchar *s = N_("Copyright (c) 2003-2007\n"
               "Dana Jansens <danakj@orodu.net>\n"
-              "Tim Riley <tr@slackzone.org>\n"
-              "Javeed Shaikh <syscrash2k@gmail.com>");
+              "Tim Riley <tr@slackzone.org>");
index a6e297fc4fce2b3602c669dd3c8b6de831fa836e..08a190a29c167d8ee60c1d8748df9903867f6d4e 100644 (file)
@@ -23,6 +23,7 @@
 #include "gettext.h"
 #include "archive.h"
 #include "theme.h"
+#include "preview.h"
 
 static gboolean mapping = FALSE;
 
@@ -48,7 +49,7 @@ void theme_setup_tab()
     /* widget setup */
     theme_store = gtk_list_store_new(2, G_TYPE_STRING, GDK_TYPE_PIXBUF);
     gtk_tree_view_set_model(GTK_TREE_VIEW(w), GTK_TREE_MODEL(theme_store));
-    preview_update_set_list_store(theme_store);
+    preview_update_set_tree_view(GTK_TREE_VIEW(w), theme_store);
     g_object_unref (theme_store);
 
     gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(w)),
@@ -160,7 +161,6 @@ void theme_install(const gchar *path)
 
     if ((name = archive_install(path))) {
         GtkWidget *w;
-        GtkTreePath *path;
         GList *it;
         gint i;
 
@@ -173,10 +173,11 @@ void theme_install(const gchar *path)
         for (it = themes, i = 0; it; it = g_list_next(it), ++i)
             if (!strcmp(it->data, name)) break;
         if (it) {
+            GtkTreePath *path;
+
             path = gtk_tree_path_new_from_indices(i, -1);
             gtk_tree_view_set_cursor(GTK_TREE_VIEW(w), path, NULL, FALSE);
-            gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(w), path, NULL,
-                                         FALSE, 0, 0);
+            gtk_tree_path_free(path);
         }
 
         g_free(name);
@@ -194,6 +195,7 @@ static void reset_theme_names(GtkWidget *w)
     gchar *p;
     GList *it, *next;
     gint i;
+    GtkTreePath *path = NULL;
 
     RrFont *active, *inactive, *menu_t, *menu_i, *osd;
 
@@ -243,20 +245,20 @@ static void reset_theme_names(GtkWidget *w)
                            1, NULL,
                            -1);
 
-        if(!strcmp(name, it->data)) {
-            GtkTreePath *path;
+        if(!strcmp(name, it->data))
             path = gtk_tree_path_new_from_indices(i, -1);
-            gtk_tree_view_set_cursor(GTK_TREE_VIEW(w), path, NULL, FALSE);
-            gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(w), path, NULL,
-                                         FALSE, 0, 0);
-        }
-
 
         ++i;
     }
 
     preview_update_all();
 
+    /* do this after starting the preview update */
+    if (path) {
+        gtk_tree_view_set_cursor(GTK_TREE_VIEW(w), path, NULL, FALSE);
+        gtk_tree_path_free(path);
+    }
+
     g_free(name);
 }