Skip to content

Commit 3aec1b5

Browse files
playlist-manager[-qt]: Handle Delete and F2 key press events
1 parent 43a9b50 commit 3aec1b5

2 files changed

Lines changed: 44 additions & 2 deletions

File tree

src/playlist-manager-qt/playlist-manager-qt.cc

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ class PlaylistsView : public audqt::TreeView
132132
void currentChanged(const QModelIndex & current,
133133
const QModelIndex & previous) override;
134134
void dropEvent(QDropEvent * event) override;
135+
void keyPressEvent(QKeyEvent * event) override;
135136

136137
private:
137138
PlaylistsModel m_model;
@@ -322,6 +323,28 @@ void PlaylistsView::dropEvent(QDropEvent * event)
322323
event->acceptProposedAction();
323324
}
324325

326+
void PlaylistsView::keyPressEvent(QKeyEvent * event)
327+
{
328+
auto CtrlShiftAlt =
329+
Qt::ShiftModifier | Qt::ControlModifier | Qt::AltModifier;
330+
331+
if (!(event->modifiers() & CtrlShiftAlt))
332+
{
333+
switch (event->key())
334+
{
335+
case Qt::Key_Delete:
336+
audqt::playlist_confirm_delete(Playlist::active_playlist());
337+
return;
338+
339+
case Qt::Key_F2:
340+
audqt::playlist_show_rename(Playlist::active_playlist());
341+
return;
342+
}
343+
}
344+
345+
audqt::TreeView::keyPressEvent(event);
346+
}
347+
325348
void PlaylistsView::update(Playlist::UpdateLevel level)
326349
{
327350
m_in_update++;

src/playlist-manager/playlist-manager.cc

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,6 @@ EXPORT PlaylistManager aud_plugin_instance;
5252

5353
static GtkWidget * focus_widget;
5454

55-
static void activate_row (void * user, int row);
56-
5755
static void rename_cb (void * unused)
5856
{
5957
audgui_show_playlist_rename (Playlist::active_playlist ());
@@ -182,6 +180,26 @@ static void position_hook (void * data, void * list_)
182180
audgui_list_set_highlight (list, Playlist::playing_playlist ().index ());
183181
}
184182

183+
static gboolean keypress_cb (GtkWidget * widget, GdkEventKey * event)
184+
{
185+
if ((event->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK | GDK_MOD1_MASK)))
186+
return false;
187+
188+
switch (event->keyval)
189+
{
190+
case GDK_KEY_Delete:
191+
delete_cb (nullptr);
192+
return true;
193+
194+
case GDK_KEY_F2:
195+
rename_cb (nullptr);
196+
return true;
197+
198+
default:
199+
return false;
200+
}
201+
}
202+
185203
static void destroy_cb (GtkWidget * window)
186204
{
187205
hook_dissociate ("playlist update", update_hook);
@@ -228,6 +246,7 @@ void * PlaylistManager::get_gtk_widget ()
228246

229247
focus_widget = playman_pl_lv;
230248

249+
g_signal_connect (playman_pl_lv, "key-press-event", (GCallback) keypress_cb, nullptr);
231250
g_signal_connect (playman_vbox, "destroy", (GCallback) destroy_cb, nullptr);
232251

233252
return playman_vbox;

0 commit comments

Comments
 (0)