Browse Source

Cleanup of on_motion_notify_event

merge-requests/404/merge
eidheim 5 years ago
parent
commit
c6bf84bd90
  1. 31
      src/source.cpp
  2. 1
      src/source.hpp
  3. 16
      src/source_base.cpp
  4. 1
      src/source_base.hpp
  5. 19
      src/terminal.cpp

31
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
}

1
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;

16
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();

1
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;

19
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::Link> Terminal::find_link(const std::string &line) {

Loading…
Cancel
Save