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