From c6bf84bd907d9e45acbd77e41c88bfed15804273 Mon Sep 17 00:00:00 2001 From: eidheim Date: Tue, 8 Jun 2021 09:05:52 +0200 Subject: [PATCH] Cleanup of on_motion_notify_event --- src/source.cpp | 31 ++++++------------------------- src/source.hpp | 1 - src/source_base.cpp | 16 ++++++++++++++++ src/source_base.hpp | 1 + src/terminal.cpp | 19 +------------------ 5 files changed, 24 insertions(+), 44 deletions(-) diff --git a/src/source.cpp b/src/source.cpp index e736550..4eb6ab8 100644 --- a/src/source.cpp +++ b/src/source.cpp @@ -2030,7 +2030,7 @@ bool Source::View::find_close_symbol_forward(Gtk::TextIter iter, Gtk::TextIter & long curly_count = 0; do { if(curly_count == 0 && *iter == positive_char && is_code_iter(iter)) { - if((is_c || is_cpp) && positive_char == '>') { + if(is_cpp && positive_char == '>') { auto prev = iter; if(prev.backward_char() && *prev == '-') continue; @@ -2043,7 +2043,7 @@ bool Source::View::find_close_symbol_forward(Gtk::TextIter iter, Gtk::TextIter & count++; } else if(curly_count == 0 && *iter == negative_char && is_code_iter(iter)) { - if((is_c || is_cpp) && negative_char == '>') { + if(is_cpp && negative_char == '>') { auto prev = iter; if(prev.backward_char() && *prev == '-') continue; @@ -2091,7 +2091,7 @@ bool Source::View::find_open_symbol_backward(Gtk::TextIter iter, Gtk::TextIter & long curly_count = 0; do { if(curly_count == 0 && *iter == positive_char && is_code_iter(iter)) { - if((is_c || is_cpp) && positive_char == '>') { + if(is_cpp && positive_char == '>') { auto prev = iter; if(prev.backward_char() && *prev == '-') continue; @@ -2108,7 +2108,7 @@ bool Source::View::find_open_symbol_backward(Gtk::TextIter iter, Gtk::TextIter & count++; } else if(curly_count == 0 && *iter == negative_char && is_code_iter(iter)) { - if((is_c || is_cpp) && negative_char == '>') { + if(is_cpp && negative_char == '>') { auto prev = iter; if(prev.backward_char() && *prev == '-') continue; @@ -2804,7 +2804,7 @@ bool Source::View::on_key_press_event_bracket_language(GdkEventKey *event) { if(found_tabs_end_iter.get_line_offset() == tabs_end_iter.get_line_offset()) { has_right_curly_bracket = true; // Special case for functions and classes with no indentation after: namespace { - if((is_c || is_cpp) && tabs_end_iter.starts_line()) { + if(is_cpp && tabs_end_iter.starts_line()) { auto iter = condition_iter; Gtk::TextIter open_iter; if(iter.backward_char() && find_open_symbol_backward(iter, open_iter, '{', '}')) { @@ -3350,7 +3350,7 @@ bool Source::View::on_key_press_event_smart_inserts(GdkEventKey *event) { if(found_tabs_end_iter.get_line_offset() == tabs_end_iter.get_line_offset()) { has_right_curly_bracket = true; // Special case for functions and classes with no indentation after: namespace {: - if((is_c || is_cpp) && tabs_end_iter.starts_line()) { + if(is_cpp && tabs_end_iter.starts_line()) { Gtk::TextIter open_iter; if(find_open_symbol_backward(iter, open_iter, '{', '}')) { if(open_iter.starts_line()) // in case of: namespace test\n{ @@ -3518,22 +3518,3 @@ bool Source::View::on_button_press_event(GdkEventButton *event) { } return Gsv::View::on_button_press_event(event); } - -bool Source::View::on_motion_notify_event(GdkEventMotion *event) { - // Workaround for drag-and-drop crash on MacOS - // TODO 2018: check if this bug has been fixed -#ifdef __APPLE__ - if((event->state & GDK_BUTTON1_MASK) == 0 || (event->state & GDK_SHIFT_MASK) > 0) - return Gsv::View::on_motion_notify_event(event); - else { - int x, y; - window_to_buffer_coords(Gtk::TextWindowType::TEXT_WINDOW_TEXT, event->x, event->y, x, y); - Gtk::TextIter iter; - get_iter_at_location(iter, x, y); - get_buffer()->select_range(iter, get_buffer()->get_selection_bound()->get_iter()); - return true; - } -#else - return Gsv::View::on_motion_notify_event(event); -#endif -} diff --git a/src/source.hpp b/src/source.hpp index a9d2ab9..c81bc42 100644 --- a/src/source.hpp +++ b/src/source.hpp @@ -170,7 +170,6 @@ namespace Source { bool on_key_press_event_smart_brackets(GdkEventKey *event); bool on_key_press_event_smart_inserts(GdkEventKey *event); bool on_button_press_event(GdkEventButton *event) override; - bool on_motion_notify_event(GdkEventMotion *motion_event) override; bool interactive_completion = true; diff --git a/src/source_base.cpp b/src/source_base.cpp index cd955e0..f5b9003 100644 --- a/src/source_base.cpp +++ b/src/source_base.cpp @@ -136,6 +136,22 @@ bool Source::CommonView::on_key_press_event(GdkEventKey *event) { return Gsv::View::on_key_press_event(event); } +bool Source::CommonView::on_motion_notify_event(GdkEventMotion *event) { + // Workaround for drag-and-drop crash on MacOS + // TODO 2023: check if this bug has been fixed +#ifdef __APPLE__ + if((event->state & GDK_BUTTON1_MASK) > 0 && (event->state & GDK_SHIFT_MASK) == 0) { + int x, y; + window_to_buffer_coords(Gtk::TextWindowType::TEXT_WINDOW_TEXT, event->x, event->y, x, y); + Gtk::TextIter iter; + get_iter_at_location(iter, x, y); + get_buffer()->select_range(iter, get_buffer()->get_selection_bound()->get_iter()); + return true; + } +#endif + return Gsv::View::on_motion_notify_event(event); +} + void Source::CommonView::cut() { if(!get_editable()) return copy(); diff --git a/src/source_base.hpp b/src/source_base.hpp index 864b93b..d957fde 100644 --- a/src/source_base.hpp +++ b/src/source_base.hpp @@ -55,6 +55,7 @@ namespace Source { protected: bool on_key_press_event(GdkEventKey *event) override; + bool on_motion_notify_event(GdkEventMotion *motion_event) override; private: GtkSourceSearchContext *search_context; diff --git a/src/terminal.cpp b/src/terminal.cpp index 687c753..fa19c1b 100644 --- a/src/terminal.cpp +++ b/src/terminal.cpp @@ -380,24 +380,7 @@ bool Terminal::on_motion_notify_event(GdkEventMotion *event) { else get_window(Gtk::TextWindowType::TEXT_WINDOW_TEXT)->set_cursor(default_mouse_cursor); - // Workaround for drag-and-drop crash on MacOS - // TODO 2018: check if this bug has been fixed -#ifdef __APPLE__ - if((event->state & GDK_BUTTON1_MASK) == 0) - return Gtk::TextView::on_motion_notify_event(event); - else { - int x, y; - window_to_buffer_coords(Gtk::TextWindowType::TEXT_WINDOW_TEXT, event->x, event->y, x, y); - Gtk::TextIter iter; - get_iter_at_location(iter, x, y); - get_buffer()->select_range(get_buffer()->get_insert()->get_iter(), iter); - return true; - } -#else - return Gtk::TextView::on_motion_notify_event(event); -#endif - - return Gtk::TextView::on_motion_notify_event(event); + return Source::CommonView::on_motion_notify_event(event); } boost::optional Terminal::find_link(const std::string &line) {