summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar waker <wakeroid@gmail.com>2011-06-23 22:38:10 +0200
committerGravatar waker <wakeroid@gmail.com>2011-06-23 22:38:10 +0200
commitbc4db3ee279c6ddb2d82323200b057a1e6fd3d7e (patch)
tree7221ec85445bbd444ccc0c58fb392652e8de2ab2
parentc6f25378c2d82ed6b04faf345a3a7cd0a0327922 (diff)
fixed playlist column headers context menu (grouping)
-rw-r--r--plugins/gtkui/mainplaylist.c10
-rw-r--r--plugins/gtkui/plcommon.c35
-rw-r--r--plugins/gtkui/plcommon.h12
-rw-r--r--plugins/gtkui/search.c18
4 files changed, 43 insertions, 32 deletions
diff --git a/plugins/gtkui/mainplaylist.c b/plugins/gtkui/mainplaylist.c
index e1114fc0..17083b7c 100644
--- a/plugins/gtkui/mainplaylist.c
+++ b/plugins/gtkui/mainplaylist.c
@@ -253,6 +253,14 @@ main_vscroll_changed (int pos) {
deadbeef->conf_set_int (conf, pos);
}
+void
+main_header_context_menu (DdbListview *ps, int column) {
+ GtkWidget *menu = create_headermenu (1);
+ set_last_playlist_cm (ps); // playlist ptr for context menu
+ set_active_column_cm (column);
+ gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, ps, 3, gtk_get_current_event_time());
+}
+
DdbListviewBinding main_binding = {
// rows
.count = main_get_count,
@@ -289,7 +297,7 @@ DdbListviewBinding main_binding = {
// callbacks
.handle_doubleclick = main_handle_doubleclick,
.selection_changed = main_selection_changed,
- .header_context_menu = header_context_menu,
+ .header_context_menu = main_header_context_menu,
.list_context_menu = list_context_menu,
.delete_selected = main_delete_selected,
.vscroll_changed = main_vscroll_changed,
diff --git a/plugins/gtkui/plcommon.c b/plugins/gtkui/plcommon.c
index 41e3fdd8..5cc749d8 100644
--- a/plugins/gtkui/plcommon.c
+++ b/plugins/gtkui/plcommon.c
@@ -281,8 +281,7 @@ on_clear1_activate (GtkMenuItem *menuitem,
gpointer user_data)
{
deadbeef->pl_clear ();
- main_refresh ();
- search_refresh ();
+ deadbeef->sendmessage (DB_EV_PLAYLISTCHANGED, 0, 0, 0);
}
void
@@ -290,8 +289,7 @@ on_remove1_activate (GtkMenuItem *menuitem,
gpointer user_data)
{
int cursor = deadbeef->pl_delete_selected ();
- main_refresh ();
- search_refresh ();
+ deadbeef->sendmessage (DB_EV_PLAYLISTCHANGED, 0, 0, 0);
}
@@ -299,20 +297,16 @@ void
on_crop1_activate (GtkMenuItem *menuitem,
gpointer user_data)
{
- DdbListview *pl = DDB_LISTVIEW (lookup_widget (mainwin, "playlist"));
deadbeef->pl_crop_selected ();
- main_refresh ();
- search_refresh ();
+ deadbeef->sendmessage (DB_EV_PLAYLISTCHANGED, 0, 0, 0);
}
void
on_remove2_activate (GtkMenuItem *menuitem,
gpointer user_data)
{
- GtkWidget *widget = GTK_WIDGET (menuitem);
int cursor = deadbeef->pl_delete_selected ();
- main_refresh ();
- search_refresh ();
+ deadbeef->sendmessage (DB_EV_PLAYLISTCHANGED, 0, 0, 0);
}
void
@@ -348,8 +342,7 @@ on_remove_from_disk_activate (GtkMenuItem *menuitem,
int cursor = deadbeef->pl_delete_selected ();
deadbeef->pl_unlock ();
- main_refresh ();
- search_refresh ();
+ deadbeef->sendmessage (DB_EV_PLAYLISTCHANGED, 0, 0, 0);
}
void
@@ -702,6 +695,16 @@ static DdbListview *last_playlist;
static int active_column;
void
+set_last_playlist_cm (DdbListview *pl) {
+ last_playlist = pl;
+}
+
+void
+set_active_column_cm (int col) {
+ active_column = col;
+}
+
+void
append_column_from_textdef (DdbListview *listview, const uint8_t *def) {
// syntax: "title" "format" id width alignright
char token[MAX_TOKEN];
@@ -1034,14 +1037,6 @@ create_headermenu (int groupby)
}
void
-header_context_menu (DdbListview *ps, int column) {
- GtkWidget *menu = create_headermenu (GTK_WIDGET (ps) == lookup_widget (mainwin, "playlist") ? 1 : 0);
- last_playlist = ps;
- active_column = column;
- gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, ps, 3, gtk_get_current_event_time());
-}
-
-void
add_column_helper (DdbListview *listview, const char *title, int width, int id, const char *format, int align_right) {
if (!format) {
format = "";
diff --git a/plugins/gtkui/plcommon.h b/plugins/gtkui/plcommon.h
index 6a3114c1..edd7d3f2 100644
--- a/plugins/gtkui/plcommon.h
+++ b/plugins/gtkui/plcommon.h
@@ -41,12 +41,18 @@ void
list_context_menu (DdbListview *listview, DdbListviewIter it, int idx);
void
-header_context_menu (DdbListview *ps, int column);
-
-void
append_column_from_textdef (DdbListview *listview, const uint8_t *def);
void
add_column_helper (DdbListview *listview, const char *title, int width, int id, const char *format, int align_right);
+GtkWidget*
+create_headermenu (int groupby);
+
+void
+set_last_playlist_cm (DdbListview *pl);
+
+void
+set_active_column_cm (int col);
+
#endif // __PLCOLUMNS_H
diff --git a/plugins/gtkui/search.c b/plugins/gtkui/search.c
index e3d46819..d3665bf3 100644
--- a/plugins/gtkui/search.c
+++ b/plugins/gtkui/search.c
@@ -319,13 +319,7 @@ void search_handle_doubleclick (DdbListview *listview, DdbListviewIter iter, int
}
void search_selection_changed (DdbListviewIter it, int idx) {
- DdbListview *main = DDB_LISTVIEW (lookup_widget (mainwin, "playlist"));
- if (idx == -1) {
- ddb_listview_refresh (main, DDB_REFRESH_LIST);
- }
- else {
- ddb_listview_draw_row (main, main_get_idx ((DB_playItem_t *)it), it);
- }
+ deadbeef->sendmessage (DB_EV_SELCHANGED, 0, 0, 0);
}
void
@@ -335,6 +329,14 @@ search_delete_selected (void) {
search_refresh ();
}
+void
+search_header_context_menu (DdbListview *ps, int column) {
+ GtkWidget *menu = create_headermenu (0);
+ set_last_playlist_cm (ps); // playlist ptr for context menu
+ set_active_column_cm (column);
+ gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, ps, 3, gtk_get_current_event_time());
+}
+
DdbListviewBinding search_binding = {
// rows
.count = search_get_count,
@@ -371,7 +373,7 @@ DdbListviewBinding search_binding = {
// callbacks
.handle_doubleclick = search_handle_doubleclick,
.selection_changed = search_selection_changed,
- .header_context_menu = header_context_menu,
+ .header_context_menu = search_header_context_menu,
.list_context_menu = list_context_menu,
.delete_selected = search_delete_selected,
.modification_idx = gtkui_get_curr_playlist_mod,