summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorGravatar waker <wakeroid@gmail.com>2012-09-06 20:00:35 +0200
committerGravatar waker <wakeroid@gmail.com>2012-09-06 20:00:35 +0200
commitcc8bd9dbcdc7e6c78952e29598c331f88fa4a399 (patch)
treee144d01047c5ca9c58ae3b0828e2d37d4af99c22 /plugins
parenta9b14cad4a26ad0ab03e369f0d2b6a0052d64955 (diff)
gtkui: new fix for auto-resize columns, now includes search window as well
Diffstat (limited to 'plugins')
-rw-r--r--plugins/gtkui/ddblistview.c11
-rw-r--r--plugins/gtkui/ddblistview.h5
-rw-r--r--plugins/gtkui/gtkui.c9
-rw-r--r--plugins/gtkui/gtkui.h1
-rw-r--r--plugins/gtkui/search.c8
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 ();
}