From cee83dfdc88640ee55f5b980f9668e4249945050 Mon Sep 17 00:00:00 2001 From: eidheim Date: Mon, 31 Aug 2015 16:46:02 +0200 Subject: [PATCH] Key state fix for Ubuntu 15 and possibly other platforms. --- src/source.cc | 10 +++++----- src/window.cc | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/source.cc b/src/source.cc index a9f76de..c4bf36a 100644 --- a/src/source.cc +++ b/src/source.cc @@ -248,7 +248,7 @@ void Source::View::set_tooltip_events() { signal_motion_notify_event().connect([this](GdkEventMotion* event) { if(on_motion_last_x!=event->x || on_motion_last_y!=event->y) { delayed_tooltips_connection.disconnect(); - if(event->state==0) { + if((event->state&GDK_BUTTON1_MASK)==0) { gdouble x=event->x; gdouble y=event->y; delayed_tooltips_connection=Glib::signal_timeout().connect([this, x, y]() { @@ -501,7 +501,7 @@ bool Source::View::on_key_press_event(GdkEventKey* key) { get_source_buffer()->begin_user_action(); //Indent as in next or previous line - if(key->keyval==GDK_KEY_Return && key->state==0 && !get_buffer()->get_has_selection()) { + if(key->keyval==GDK_KEY_Return && !get_buffer()->get_has_selection()) { auto insert_it=get_buffer()->get_insert()->get_iter(); int line_nr=insert_it.get_line(); auto line=get_line_before_insert(); @@ -528,7 +528,7 @@ bool Source::View::on_key_press_event(GdkEventKey* key) { } } //Indent right when clicking tab, no matter where in the line the cursor is. Also works on selected text. - else if(key->keyval==GDK_KEY_Tab && key->state==0) { + else if(key->keyval==GDK_KEY_Tab) { Gtk::TextIter selection_start, selection_end; get_source_buffer()->get_selection_bounds(selection_start, selection_end); int line_start=selection_start.get_line(); @@ -541,7 +541,7 @@ bool Source::View::on_key_press_event(GdkEventKey* key) { return true; } //Indent left when clicking shift-tab, no matter where in the line the cursor is. Also works on selected text. - else if((key->keyval==GDK_KEY_ISO_Left_Tab || key->keyval==GDK_KEY_Tab) && key->state==GDK_SHIFT_MASK) { + else if((key->keyval==GDK_KEY_ISO_Left_Tab || key->keyval==GDK_KEY_Tab) && (key->state&GDK_SHIFT_MASK)>0) { Gtk::TextIter selection_start, selection_end; get_source_buffer()->get_selection_bounds(selection_start, selection_end); int line_start=selection_start.get_line(); @@ -1070,7 +1070,7 @@ bool Source::ClangViewParse::on_key_press_event(GdkEventKey* key) { get_source_buffer()->begin_user_action(); //Indent depending on if/else/etc and brackets - if(key->keyval==GDK_KEY_Return && key->state==0) { + if(key->keyval==GDK_KEY_Return) { string line(get_line_before_insert()); std::smatch sm; if(std::regex_match(line, sm, bracket_regex)) { diff --git a/src/window.cc b/src/window.cc index 3fd573e..464a977 100644 --- a/src/window.cc +++ b/src/window.cc @@ -570,7 +570,7 @@ void Window::search_and_replace_entry() { notebook.get_current_view()->search_highlight(search_entry_it->get_text(), case_sensitive_search, regex_search); } search_entry_it->signal_key_press_event().connect([this](GdkEventKey* event){ - if(event->keyval==GDK_KEY_Return && event->state==GDK_SHIFT_MASK) { + if(event->keyval==GDK_KEY_Return && (event->state&GDK_SHIFT_MASK)>0) { if(notebook.get_current_page()!=-1) notebook.get_current_view()->search_backward(); } @@ -590,7 +590,7 @@ void Window::search_and_replace_entry() { replace_entry_it++; replace_entry_it->set_placeholder_text("Replace"); replace_entry_it->signal_key_press_event().connect([this, replace_entry_it](GdkEventKey* event){ - if(event->keyval==GDK_KEY_Return && event->state==GDK_SHIFT_MASK) { + if(event->keyval==GDK_KEY_Return && (event->state&GDK_SHIFT_MASK)>0) { if(notebook.get_current_page()!=-1) notebook.get_current_view()->replace_backward(replace_entry_it->get_text()); }