From: Po Lu Date: Sat, 12 Nov 2022 13:11:00 +0000 (+0000) Subject: Correctly handle key map updates on Haiku X-Git-Tag: emacs-29.0.90~1616^2~182 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=e7614cc9ac18995ef8ac353096a5c13e8cebddc9;p=emacs.git Correctly handle key map updates on Haiku * src/haiku_support.cc (MessageReceived): Handle B_KEY_MAP_LOADED by clearing the previous keymap. --- diff --git a/src/haiku_support.cc b/src/haiku_support.cc index 0f8e26d0db4..3a982856777 100644 --- a/src/haiku_support.cc +++ b/src/haiku_support.cc @@ -653,6 +653,24 @@ public: Quit (); else if (msg->what == B_CLIPBOARD_CHANGED) haiku_write (CLIPBOARD_CHANGED_EVENT, &rq); + else if (msg->what == B_KEY_MAP_LOADED) + { + /* Install the new keymap. Or rather, clear key_map -- Emacs + will fetch it again from the main thread the next time it + is needed. */ + if (key_map_lock.Lock ()) + { + if (key_map) + free (key_map); + + if (key_chars) + free (key_chars); + + key_map = NULL; + key_chars = NULL; + key_map_lock.Unlock (); + } + } else BApplication::MessageReceived (msg); }