X-Git-Url: https://git.distorted.org.uk/~mdw/disorder/blobdiff_plain/e7eb3a2744aa45179daea235800753d3d1955338..23d0e9637b6ffa80a8181f4ed47f24b266bef173:/disobedience/queue-generic.h diff --git a/disobedience/queue-generic.h b/disobedience/queue-generic.h index 9a493e8..c15b383 100644 --- a/disobedience/queue-generic.h +++ b/disobedience/queue-generic.h @@ -15,6 +15,9 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ +/** @file disobedience/queue-generic.h + * @brief Disobedience queue widgets + */ #ifndef QUEUE_GENERIC_H #define QUEUE_GENERIC_H @@ -52,7 +55,7 @@ struct queuelike { const char *name; /** @brief Initialization function */ - void (*init)(void); + void (*init)(struct queuelike *ql); /** @brief Columns */ const struct queue_column *columns; @@ -87,6 +90,22 @@ struct queuelike { /** @brief Menu callbacks */ struct tabtype tabtype; + + /** @brief Drag-drop callback, or NULL for no drag+drop + * @param ql Owning queuelike + * @param ntracks Number of tracks to be dropped + * @param tracks List of track names + * @param ids List of track IDs + * @param after_me Drop after this or NULL to drop at head + * + * If the rearrangement is impossible then the displayed queue must be put + * back. + */ + void (*drop)(struct queuelike *ql, int ntracks, char **tracks, char **ids, + struct queue_entry *after_me); + + /** @brief Stashed drag target row */ + GtkTreePath *drag_target; }; enum { @@ -131,6 +150,9 @@ void ql_remove_activate(GtkMenuItem *menuitem, int ql_play_sensitive(void *extra); void ql_play_activate(GtkMenuItem *menuitem, gpointer user_data); +int ql_adopt_sensitive(void *extra); +void ql_adopt_activate(GtkMenuItem *menuitem, + gpointer user_data); gboolean ql_button_release(GtkWidget *widget, GdkEventButton *event, gpointer user_data); @@ -151,6 +173,8 @@ const char *column_length(const struct queue_entry *q, struct tabtype *ql_tabtype(struct queuelike *ql); struct queue_entry *ql_iter_to_q(GtkTreeModel *model, GtkTreeIter *iter); +struct queue_entry *ql_path_to_q(GtkTreeModel *model, + GtkTreePath *path); #endif /* QUEUE_GENERIC_H */