X-Git-Url: https://git.distorted.org.uk/~mdw/disorder/blobdiff_plain/a49c2c0fd00383f4191e63d869b813adb2b00d25..23d0e9637b6ffa80a8181f4ed47f24b266bef173:/disobedience/queue-generic.h diff --git a/disobedience/queue-generic.h b/disobedience/queue-generic.h index 4b31fe9..c15b383 100644 --- a/disobedience/queue-generic.h +++ b/disobedience/queue-generic.h @@ -55,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; @@ -90,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 { @@ -157,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 */