From 958df5fb7450f9a4d9ae1d170c722a9248cd7f3a Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 9 Jul 2019 19:37:21 +0200 Subject: [PATCH] Use IME in wxGTK wxComboBox too There was confusing with the method GTKIMFilterKeypress() in wxGTK wxTextEntry: it was called the same as wxWindow virtual method of the same name, but didn't override it, of course, as wxTextEntry doesn't derive from wxWindow. It also wasn't called for wxComboBox which inherited from wxTextEntry but didn't override wxWindow::GTKIMFilterKeypress() to actually call its method. Fix this and rename the wxTextEntry to use a different name for clarity. --- include/wx/gtk/combobox.h | 4 ++++ include/wx/gtk/textentry.h | 5 +++-- src/gtk/textentry.cpp | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/include/wx/gtk/combobox.h b/include/wx/gtk/combobox.h index 06da278b1b..cb64c7aaf6 100644 --- a/include/wx/gtk/combobox.h +++ b/include/wx/gtk/combobox.h @@ -145,6 +145,10 @@ protected: virtual GtkEntry *GetEntry() const wxOVERRIDE { return m_entry; } + virtual int GTKIMFilterKeypress(GdkEventKey* event) const wxOVERRIDE + { return GTKEntryIMFilterKeypress(event); } + + GtkEntry* m_entry; private: diff --git a/include/wx/gtk/textentry.h b/include/wx/gtk/textentry.h index aad2982d80..a4f92fc7b7 100644 --- a/include/wx/gtk/textentry.h +++ b/include/wx/gtk/textentry.h @@ -91,8 +91,9 @@ protected: virtual bool DoAutoCompleteStrings(const wxArrayString& choices) wxOVERRIDE; virtual bool DoAutoCompleteCustom(wxTextCompleter *completer) wxOVERRIDE; - // Override the base class method to use GtkEntry IM context. - virtual int GTKIMFilterKeypress(GdkEventKey* event) const; + // Call this from the overridden wxWindow::GTKIMFilterKeypress() to use + // GtkEntry IM context. + int GTKEntryIMFilterKeypress(GdkEventKey* event) const; static int GTKGetEntryTextLength(GtkEntry* entry); diff --git a/src/gtk/textentry.cpp b/src/gtk/textentry.cpp index 850082ec41..6d5d04edbe 100644 --- a/src/gtk/textentry.cpp +++ b/src/gtk/textentry.cpp @@ -862,7 +862,7 @@ void wxTextEntry::ForceUpper() // IM handling // ---------------------------------------------------------------------------- -int wxTextEntry::GTKIMFilterKeypress(GdkEventKey* event) const +int wxTextEntry::GTKEntryIMFilterKeypress(GdkEventKey* event) const { int result = false; #if GTK_CHECK_VERSION(2, 22, 0)