From dabdd484f796054566c6369c936060ce8602436b Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Wed, 20 Nov 2019 21:39:26 +0100 Subject: [PATCH] LibVT: Add a context menu to TerminalWidget Starting with only the copy and paste actions. But I'm sure we can come up with some more things to put here. :^) --- Libraries/LibVT/TerminalWidget.cpp | 11 +++++++++++ Libraries/LibVT/TerminalWidget.h | 3 +++ 2 files changed, 14 insertions(+) diff --git a/Libraries/LibVT/TerminalWidget.cpp b/Libraries/LibVT/TerminalWidget.cpp index e00142faff..e1f07f7459 100644 --- a/Libraries/LibVT/TerminalWidget.cpp +++ b/Libraries/LibVT/TerminalWidget.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include @@ -654,3 +655,13 @@ void TerminalWidget::beep() }; force_repaint(); } + +void TerminalWidget::context_menu_event(GContextMenuEvent& event) +{ + if (!m_context_menu) { + m_context_menu = make(); + m_context_menu->add_action(copy_action()); + m_context_menu->add_action(paste_action()); + } + m_context_menu->popup(event.screen_position()); +} diff --git a/Libraries/LibVT/TerminalWidget.h b/Libraries/LibVT/TerminalWidget.h index 3c56ac1e1b..ee28c597ca 100644 --- a/Libraries/LibVT/TerminalWidget.h +++ b/Libraries/LibVT/TerminalWidget.h @@ -72,6 +72,7 @@ private: virtual void doubleclick_event(GMouseEvent&) override; virtual void focusin_event(CEvent&) override; virtual void focusout_event(CEvent&) override; + virtual void context_menu_event(GContextMenuEvent&) override; // ^TerminalClient virtual void beep() override; @@ -128,5 +129,7 @@ private: RefPtr m_copy_action; RefPtr m_paste_action; + OwnPtr m_context_menu; + CElapsedTimer m_triple_click_timer; };