Revision: 2326
          http://gtkpod.svn.sourceforge.net/gtkpod/?rev=2326&view=rev
Author:   jcsjcs
Date:     2009-04-18 12:14:13 +0000 (Sat, 18 Apr 2009)

Log Message:
-----------
        Patch from: Javier Kohen

        * src/display_playlists.c
          src/display_tracks.c
          src/display_sorttabs.c

          Make GUI appear more responsive by highlighting the selected
          playlist / filter tab entry before updating the track
          display.

Modified Paths:
--------------
    gtkpod/trunk/ChangeLog
    gtkpod/trunk/src/display_playlists.c
    gtkpod/trunk/src/display_sorttabs.c
    gtkpod/trunk/src/display_tracks.c

Modified: gtkpod/trunk/ChangeLog
===================================================================
--- gtkpod/trunk/ChangeLog      2009-04-18 00:09:21 UTC (rev 2325)
+++ gtkpod/trunk/ChangeLog      2009-04-18 12:14:13 UTC (rev 2326)
@@ -1,3 +1,15 @@
+2009-04-17 Jorg Schuler <jcsjcs at users.sourceforge.net>
+
+       Patch from: Javier Kohen
+
+       * src/display_playlists.c
+         src/display_tracks.c
+         src/display_sorttabs.c
+
+         Make GUI appear more responsive by highlighting the selected
+         playlist / filter tab entry before updating the track
+         display.
+
 2009-04-17  Todd Zullinger  <[email protected]>
 
        Patch from: Author: Greg Carroll <[email protected]>

Modified: gtkpod/trunk/src/display_playlists.c
===================================================================
--- gtkpod/trunk/src/display_playlists.c        2009-04-18 00:09:21 UTC (rev 
2325)
+++ gtkpod/trunk/src/display_playlists.c        2009-04-18 12:14:13 UTC (rev 
2326)
@@ -1433,11 +1433,13 @@
 }
 
 
-static void pm_selection_changed_cb (GtkTreeSelection *selection,
-                                    gpointer user_data2)
+static gboolean
+pm_selection_changed_cb (gpointer data)
 {
        GtkTreeModel *model;
        GtkTreeIter  iter;
+       GtkTreeView *tree_view = GTK_TREE_VIEW (data);
+       GtkTreeSelection *selection = gtk_tree_view_get_selection (tree_view);
 
 #if DEBUG_TIMING
        GTimeVal time;
@@ -1479,8 +1481,8 @@
            switch (type)
            {
            case PM_COLUMN_PLAYLIST:
-               g_return_if_fail (new_playlist);
-               g_return_if_fail (itdb);
+               g_return_val_if_fail (new_playlist, FALSE);
+               g_return_val_if_fail (itdb, FALSE);
 
                gphoto_change_to_photo_window (FALSE);
 
@@ -1525,8 +1527,8 @@
                gtkpod_tracks_statusbar_update();
                break;
            case PM_COLUMN_PHOTOS:
-               g_return_if_fail (photodb);
-               g_return_if_fail (itdb);
+               g_return_val_if_fail (photodb, FALSE);
+               g_return_val_if_fail (itdb, FALSE);
                gphoto_display_photo_window (itdb);
                break;
            case PM_COLUMN_ITDB:
@@ -1550,6 +1552,8 @@
 #endif 
        /* make only suitable delete menu items available */
        display_adjust_menus ();
+
+       return FALSE;
 }
 
 /* Callback function called when the selection
@@ -1558,7 +1562,10 @@
                                  gpointer user_data)
 {
     if (!pm_selection_blocked)
-       pm_selection_changed_cb (selection, user_data);
+    {
+       g_idle_add (pm_selection_changed_cb,
+                   gtk_tree_selection_get_tree_view (selection));
+    }
 }
 
 

Modified: gtkpod/trunk/src/display_sorttabs.c
===================================================================
--- gtkpod/trunk/src/display_sorttabs.c 2009-04-18 00:09:21 UTC (rev 2325)
+++ gtkpod/trunk/src/display_sorttabs.c 2009-04-18 12:14:13 UTC (rev 2326)
@@ -43,6 +43,11 @@
 #include <string.h>
 #include <stdlib.h>
 
+typedef struct {
+    GtkTreeView *tree_view;
+    guint32 inst;
+} StSelectionEvent;
+
 #define ST_AUTOSELECT(i) TRUE
 /* #define ST_AUTOSELECT(i) (prefs_get_int_index("st_autoselect", (i))) */
 
@@ -1897,11 +1902,12 @@
 }
 
 
-static void st_page_selected_cb (gpointer user_data1, gpointer user_data2)
+static gboolean
+st_page_selected_cb (gpointer data)
 {
-  GtkNotebook *notebook = (GtkNotebook *)user_data1;
-  guint page = (guint)GPOINTER_TO_UINT(user_data2);
-  guint32 inst = st_get_instance_from_notebook (notebook);
+  GtkNotebook *notebook = GTK_NOTEBOOK (data);
+  guint page;
+  guint32 inst;
   guint oldpage;
   gboolean is_go;
   GList *copy = NULL;
@@ -1917,7 +1923,11 @@
 
 /*  printf("ps%d: cat: %d\n", inst, page);*/
 
-  if (inst == -1) return; /* invalid notebook */
+  inst = st_get_instance_from_notebook (notebook);
+  if (inst == -1) return FALSE; /* invalid notebook */
+
+  page = gtk_notebook_get_current_page (notebook);
+
   st = sorttab[inst];
   /* remember old is_go state and current page */
   is_go = st->is_go;
@@ -1952,6 +1962,8 @@
          inst, page,
          time.tv_sec % 3600, time.tv_usec);
 #endif
+
+  return FALSE;
 }
 
 
@@ -1968,7 +1980,8 @@
   /* inst-1: changing a page in the first sort tab is like selecting a
      new playlist and so on. Therefore we subtract 1 from the
      instance. */
-  st_page_selected_cb (notebook, GUINT_TO_POINTER(page));
+
+  g_idle_add (st_page_selected_cb, notebook);
 }
 
 
@@ -2134,10 +2147,13 @@
 }
 
 
-static void st_selection_changed_cb (gpointer user_data1, gpointer user_data2)
+static gboolean
+st_selection_changed_cb (gpointer data)
 {
-  GtkTreeSelection *selection = (GtkTreeSelection *)user_data1;
-  guint32 inst = (guint32)GPOINTER_TO_UINT(user_data2);
+  StSelectionEvent *event = (StSelectionEvent *) data;
+  GtkTreeView *tree_view = event->tree_view;
+  GtkTreeSelection *selection = gtk_tree_view_get_selection (tree_view);
+  guint32 inst = event->inst;
   GtkTreeModel *model;
   GtkTreeIter  iter;
   TabEntry *new_entry;
@@ -2152,7 +2168,7 @@
 
 /*   printf("st_s_c_cb %d: entered\n", inst); */
   st = sorttab[inst];
-  if (st == NULL) return;
+  if (st == NULL) return FALSE;
   if (gtk_tree_selection_get_selected (selection, &model, &iter) == FALSE)
   {
       /* no selection -- unselect current selection (unless
@@ -2218,9 +2234,10 @@
   printf ("st_selection_changed_cb exit:  %ld.%06ld sec\n",
          time.tv_sec % 3600, time.tv_usec);
 #endif
+
+  return FALSE;
 }
 
-
 /* Callback function called when the selection
    of the sort tab view has changed */
 /* Instead of handling the selection directly, we add a
@@ -2232,7 +2249,13 @@
 #if DEBUG_CB_INIT
     printf("st_s_c enter (inst: %d)\n", (gint)user_data);
 #endif
-    st_selection_changed_cb ((gpointer)selection, user_data);
+    StSelectionEvent *event = g_malloc0 (sizeof (StSelectionEvent));
+    event->tree_view = gtk_tree_selection_get_tree_view (selection);
+    event->inst = (guint32)GPOINTER_TO_UINT(user_data);
+    g_idle_add_full (G_PRIORITY_DEFAULT_IDLE,
+                    st_selection_changed_cb,
+                    event,
+                    g_free);
 #if DEBUG_CB_INIT
     printf("st_s_c exit (inst: %d)\n", (gint)user_data);
 #endif
@@ -2798,6 +2821,7 @@
                    G_CALLBACK (st_drag_end),
                    NULL);
   gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (treeview), TRUE);
+  gtk_tree_view_set_fixed_height_mode (GTK_TREE_VIEW (treeview), TRUE);
   gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeview), FALSE);
   gtk_tree_view_set_enable_search (GTK_TREE_VIEW (treeview), TRUE);
   gtk_tree_view_set_search_column (GTK_TREE_VIEW (treeview), 0);
@@ -2825,6 +2849,7 @@
                                           st_cell_data_func, NULL, NULL);
   gtk_tree_view_column_set_sort_column_id (column, ST_COLUMN_ENTRY);
   gtk_tree_view_column_set_resizable (column, TRUE);
+  gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_FIXED);
   gtk_tree_view_column_set_sort_order (column, GTK_SORT_ASCENDING);
   gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (st->model),
                                   ST_COLUMN_ENTRY,

Modified: gtkpod/trunk/src/display_tracks.c
===================================================================
--- gtkpod/trunk/src/display_tracks.c   2009-04-18 00:09:21 UTC (rev 2325)
+++ gtkpod/trunk/src/display_tracks.c   2009-04-18 12:14:13 UTC (rev 2326)
@@ -2574,11 +2574,10 @@
     return(FALSE);
 }
 
-/* called when the track selection changes */
-static void
-tm_selection_changed_event(GtkTreeSelection *selection, gpointer data)
+static gboolean
+tm_selection_changed_cb (gpointer data)
 {
-    GtkTreeView *treeview = gtk_tree_selection_get_tree_view (selection);
+    GtkTreeView *treeview = GTK_TREE_VIEW (data);
     GtkTreePath *path;
     GtkTreeViewColumn *column;
     TM_item col_id;
@@ -2599,9 +2598,19 @@
        if(track != NULL)
                coverart_select_cover (track);
     }
+
+    return FALSE;
 }
 
+/* called when the track selection changes */
+static void
+tm_selection_changed(GtkTreeSelection *selection, gpointer data)
+{
+    g_idle_add (tm_selection_changed_cb,
+               gtk_tree_selection_get_tree_view (selection));
+}
 
+
 /* Create tracks treeview */
 void tm_create_treeview (void)
 {
@@ -2627,6 +2636,7 @@
       gtk_list_store_new (1, G_TYPE_POINTER));
     gtk_tree_view_set_model (track_treeview, GTK_TREE_MODEL (model));
     gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (track_treeview), TRUE);
+    gtk_tree_view_set_fixed_height_mode (GTK_TREE_VIEW (track_treeview), TRUE);
     gtk_tree_view_set_search_equal_func (GTK_TREE_VIEW (track_treeview), 
                        tm_search_equal_func,
                        NULL,
@@ -2635,7 +2645,7 @@
     gtk_tree_selection_set_mode (select,
                    GTK_SELECTION_MULTIPLE);
     g_signal_connect (G_OBJECT (select) , "changed",
-            G_CALLBACK (tm_selection_changed_event),
+            G_CALLBACK (tm_selection_changed),
             NULL);
 
     tm_add_columns ();


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Stay on top of everything new and different, both inside and 
around Java (TM) technology - register by April 22, and save
$200 on the JavaOne (SM) conference, June 2-5, 2009, San Francisco.
300 plus technical and hands-on sessions. Register today. 
Use priority code J9JMT32. http://p.sf.net/sfu/p
_______________________________________________
gtkpod-cvs2 mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gtkpod-cvs2

Reply via email to