diff options
author | waker <wakeroid@gmail.com> | 2012-09-06 20:00:35 +0200 |
---|---|---|
committer | waker <wakeroid@gmail.com> | 2012-09-06 20:00:35 +0200 |
commit | cc8bd9dbcdc7e6c78952e29598c331f88fa4a399 (patch) | |
tree | e144d01047c5ca9c58ae3b0828e2d37d4af99c22 | |
parent | a9b14cad4a26ad0ab03e369f0d2b6a0052d64955 (diff) |
gtkui: new fix for auto-resize columns, now includes search window as well
-rw-r--r-- | plugins/gtkui/ddblistview.c | 11 | ||||
-rw-r--r-- | plugins/gtkui/ddblistview.h | 5 | ||||
-rw-r--r-- | plugins/gtkui/gtkui.c | 9 | ||||
-rw-r--r-- | plugins/gtkui/gtkui.h | 1 | ||||
-rw-r--r-- | plugins/gtkui/search.c | 8 |
5 files changed, 27 insertions, 7 deletions
diff --git a/plugins/gtkui/ddblistview.c b/plugins/gtkui/ddblistview.c index d0265fec..19493806 100644 --- a/plugins/gtkui/ddblistview.c +++ b/plugins/gtkui/ddblistview.c @@ -321,6 +321,7 @@ ddb_listview_init(DdbListview *listview) listview->header_width = 0; listview->columns = NULL; + listview->lock_columns = 1; listview->groups = NULL; listview->block_redraw_on_scroll = 0; @@ -2369,8 +2370,11 @@ ddb_listview_header_configure_event (GtkWidget *widget, gtk_widget_set_size_request (widget, -1, height); } - if (gtkui_init_complete) { + if (!ps->lock_columns) { if (ps->header_width != a.width && deadbeef->conf_get_int ("gtkui.autoresize_columns", 0)) { + if (ps->header_width == 0) { + ps->header_width = a.width; + } float ratio = (float)a.width / ps->header_width; ps->header_width = a.width; struct _DdbListviewColumn *c; @@ -2387,6 +2391,11 @@ ddb_listview_header_configure_event (GtkWidget *widget, return FALSE; } +void +ddb_listview_lock_columns (DdbListview *lv, gboolean lock) { + lv->lock_columns = lock; +} + void ddb_listview_header_realize (GtkWidget *widget, diff --git a/plugins/gtkui/ddblistview.h b/plugins/gtkui/ddblistview.h index b2855000..143ef28c 100644 --- a/plugins/gtkui/ddblistview.h +++ b/plugins/gtkui/ddblistview.h @@ -142,6 +142,8 @@ struct _DdbListview { int header_width; // previous width before resize struct _DdbListviewColumn *columns; + gboolean lock_columns; + struct _DdbListviewGroup *groups; int groups_build_idx; // must be the same as playlist modification idx int fullheight; @@ -261,6 +263,9 @@ ddb_listview_list_drag_end (GtkWidget *widget, void ddb_listview_clear_sort (DdbListview *listview); +void +ddb_listview_lock_columns (DdbListview *lv, gboolean lock); + G_END_DECLS #endif // __DDBLISTVIEW_H diff --git a/plugins/gtkui/gtkui.c b/plugins/gtkui/gtkui.c index 4eb96eec..6f633d32 100644 --- a/plugins/gtkui/gtkui.c +++ b/plugins/gtkui/gtkui.c @@ -73,7 +73,6 @@ GtkWidget *theme_treeview; GtkWidget *theme_button; int gtkui_embolden_current_track; -int gtkui_init_complete; #define TRAY_ICON "deadbeef_tray_icon" @@ -1061,9 +1060,9 @@ smclient_save_state (EggSMClient *client, const char *state_dir, gpointer user_d } #endif -gboolean -gtkui_init_complete_cb (void *ctx) { - gtkui_init_complete = 1; +static gboolean +unlock_playlist_columns_cb (void *ctx) { + ddb_listview_lock_columns (DDB_LISTVIEW (lookup_widget (mainwin, "playlist")), 0); return FALSE; } @@ -1185,7 +1184,7 @@ gtkui_thread (void *ctx) { gtk_window_set_title (GTK_WINDOW (mainwin), str); gtk_initialized = 1; - g_idle_add (gtkui_init_complete_cb, NULL); + g_idle_add (unlock_playlist_columns_cb, NULL); gtk_main (); diff --git a/plugins/gtkui/gtkui.h b/plugins/gtkui/gtkui.h index 0945291e..0f764901 100644 --- a/plugins/gtkui/gtkui.h +++ b/plugins/gtkui/gtkui.h @@ -35,7 +35,6 @@ extern DB_functions_t *deadbeef; extern GtkWidget *mainwin; extern GtkWidget *searchwin; extern int gtkui_embolden_current_track; -extern int gtkui_init_complete; struct _GSList; diff --git a/plugins/gtkui/search.c b/plugins/gtkui/search.c index 2ffaf75b..decd3fe4 100644 --- a/plugins/gtkui/search.c +++ b/plugins/gtkui/search.c @@ -50,12 +50,20 @@ extern DB_functions_t *deadbeef; // defined in gtkui.c extern GtkWidget *searchwin; extern GtkWidget *mainwin; +static gboolean +unlock_search_columns_cb (void *ctx) { + ddb_listview_lock_columns (DDB_LISTVIEW (lookup_widget (searchwin, "searchlist")), 0); + return FALSE; +} + void search_start (void) { + ddb_listview_lock_columns (DDB_LISTVIEW (lookup_widget (searchwin, "searchlist")), 1); wingeom_restore (searchwin, "searchwin", -1, -1, 450, 150, 0); gtk_entry_set_text (GTK_ENTRY (lookup_widget (searchwin, "searchentry")), ""); gtk_widget_show (searchwin); gtk_window_present (GTK_WINDOW (searchwin)); + g_idle_add (unlock_search_columns_cb, NULL); search_refresh (); main_refresh (); } |