From 70f2b3c6dc31399dc92b19c8f5213e4ac275767b Mon Sep 17 00:00:00 2001 From: eidheim Date: Sat, 24 Dec 2016 11:25:41 +0100 Subject: [PATCH] MacOS: ~ and ^ keys are now handled correctly in search entry on selection dialogs --- src/selection_dialog.cc | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/selection_dialog.cc b/src/selection_dialog.cc index 95fdf99..5f06079 100644 --- a/src/selection_dialog.cc +++ b/src/selection_dialog.cc @@ -274,7 +274,16 @@ bool SelectionDialog::on_key_press(GdkEventKey* key) { } else if(show_search_entry) { #ifdef __APPLE__ //OS X bug most likely: Gtk::Entry will not work if window is of type POPUP - if(key->is_modifier) + int search_entry_length=search_entry.get_text_length(); + if(key->keyval==GDK_KEY_dead_tilde) { + search_entry.insert_text("~", 1, search_entry_length); + return true; + } + else if(key->keyval==GDK_KEY_dead_circumflex) { + search_entry.insert_text("^", 1, search_entry_length); + return true; + } + else if(key->is_modifier) return true; else if(key->keyval==GDK_KEY_BackSpace) { auto length=search_entry.get_text_length(); @@ -285,9 +294,8 @@ bool SelectionDialog::on_key_press(GdkEventKey* key) { else { gunichar unicode=gdk_keyval_to_unicode(key->keyval); if(unicode>=32 && unicode!=126) { - int length=search_entry.get_text_length(); auto ustr=Glib::ustring(1, unicode); - search_entry.insert_text(ustr, ustr.bytes(), length); + search_entry.insert_text(ustr, ustr.bytes(), search_entry_length); return true; } }