diff --git a/src/source_base.cpp b/src/source_base.cpp index 40c1723..73bac7e 100644 --- a/src/source_base.cpp +++ b/src/source_base.cpp @@ -10,6 +10,12 @@ #include #include +#ifdef __APPLE__ +GdkModifierType Source::CommonView::primary_modifier_mask = GDK_MOD2_MASK; +#else +GdkModifierType Source::CommonView::primary_modifier_mask = GDK_CONTROL_MASK; +#endif + Source::CommonView::CommonView(const Glib::RefPtr &language) : Gsv::View() { set_tab_width(4); // Visual size of a \t hardcoded to be equal to visual size of 4 spaces @@ -369,13 +375,6 @@ Source::BaseView::BaseView(const boost::filesystem::path &file_path, const Glib: } set_tab_char_and_size(tab_char, tab_size); -#ifdef __APPLE__ - primary_modifier_mask = GDK_MOD2_MASK; -#else - primary_modifier_mask = GDK_CONTROL_MASK; -#endif - - set_snippets(); snippet_parameter_tag = get_buffer()->create_tag(); diff --git a/src/source_base.hpp b/src/source_base.hpp index f6a160a..3a0a0a7 100644 --- a/src/source_base.hpp +++ b/src/source_base.hpp @@ -50,6 +50,9 @@ namespace Source { bool keep_clipboard = false; + /// Apple key for MacOS, and control key otherwise + static GdkModifierType primary_modifier_mask; + bool on_key_press_event(GdkEventKey *event) override; bool on_motion_notify_event(GdkEventMotion *motion_event) override; @@ -146,9 +149,6 @@ namespace Source { std::string tab; std::pair find_tab_char_and_size(); - /// Apple key for MacOS, and control key otherwise - GdkModifierType primary_modifier_mask; - /// Move iter to line start. Depending on iter position, before or after indentation. /// Works with wrapped lines. Gtk::TextIter get_smart_home_iter(const Gtk::TextIter &iter); diff --git a/src/terminal.cpp b/src/terminal.cpp index 3e3390d..e17e30f 100644 --- a/src/terminal.cpp +++ b/src/terminal.cpp @@ -624,7 +624,8 @@ bool Terminal::on_key_press_event(GdkEventKey *event) { if(event->keyval == GDK_KEY_Home || event->keyval == GDK_KEY_End || event->keyval == GDK_KEY_Page_Up || event->keyval == GDK_KEY_Page_Down || event->keyval == GDK_KEY_Up || event->keyval == GDK_KEY_Down || - event->keyval == GDK_KEY_Left || event->keyval == GDK_KEY_Right) + event->keyval == GDK_KEY_Left || event->keyval == GDK_KEY_Right || + ((event->state & primary_modifier_mask) && event->keyval == GDK_KEY_a)) return Source::CommonView::on_key_press_event(event); LockGuard lock(processes_mutex);