branch: externals/elisp-benchmarks
commit 5f05fc7d8ef1343172543fec54dab55ba15d856c
Author: Stefan Monnier <monn...@iro.umontreal.ca>
Commit: Stefan Monnier <monn...@iro.umontreal.ca>

    xmenu-nonascii.c: New file to benchmark multibyte char handling
    
    * resources/xmenu-nonascii.c: New file.
    
    * benchmarks/elb-smie.el (elb-smie-nonascii-entry): New benchmark.
    * benchmarks/elb-scroll.el (elb--scroll-file): New function, extracted
    from `elb-scroll-entry`.
    (elb-scroll-entry): Use it.
    (elb-scroll-nonascii-entry): New benchmark.
    
    * resources/make-nonascii.el (elb--make-nonascii): New file.
---
 benchmarks/elb-scroll.el   |   41 +-
 benchmarks/elb-smie.el     |   10 +-
 resources/make-nonascii.el |   39 +
 resources/xmenu-nonascii.c | 2512 ++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 2584 insertions(+), 18 deletions(-)

diff --git a/benchmarks/elb-scroll.el b/benchmarks/elb-scroll.el
index d23ff47490..ce9649ad39 100644
--- a/benchmarks/elb-scroll.el
+++ b/benchmarks/elb-scroll.el
@@ -31,25 +31,32 @@
 
 ;;; Code:
 
+(defun elb--scroll-file (file)
+  ;; FIXME: This relies on `elb-smie.el' being compiled already which is
+  ;; not necessarily the case if we're only running some of the benchmarks.
+  (load (expand-file-name "elb-smie" elb-bench-directory) nil 'nomessage)
+  (setq redisplay-skip-initial-frame nil)
+  (with-temp-buffer
+    (rename-buffer (generate-new-buffer-name "elb-scroll"))
+    (switch-to-buffer (current-buffer))
+    (insert-file-contents (expand-file-name file elb-bench-directory))
+    (redisplay 'force) ;; Refresh the window dimensions.
+    (elb--set-win-size 23 80)
+    (dotimes (_ 10)
+      ;; Use our own C major mode (copied from GNU ELPA's sm-c-mode),
+      ;; so it's not impacted by changes to Emacs's own C mode.
+      (elb-smie-mode)
+      (goto-char (point-min))
+      (condition-case nil
+          (while t (scroll-up nil) (redisplay 'force))
+        (end-of-buffer nil)))))
+
 (unless (and noninteractive (not (boundp 'redisplay-skip-initial-frame)))
   (defun elb-scroll-entry ()
-    ;; FIXME: This relies on `elb-smie.el' being compiled already which is
-    ;; not necessarily the case if we're only running some of the benchmarks.
-    (load (expand-file-name "elb-smie" elb-bench-directory) nil 'nomessage)
-    (setq redisplay-skip-initial-frame nil)
-    (with-temp-buffer
-      (rename-buffer (generate-new-buffer-name "elb-scroll"))
-      (switch-to-buffer (current-buffer))
-      (insert-file-contents (expand-file-name
-                             "../resources/xmenu.c" elb-bench-directory))
-      (redisplay 'force) ;; Refresh the window dimensions.
-      (elb--set-win-size 23 80)
-      (dotimes (_ 10)
-        (elb-smie-mode)
-        (goto-char (point-min))
-        (condition-case nil
-            (while t (scroll-up nil) (redisplay 'force))
-          (end-of-buffer nil))))))
+    (elb--scroll-file "../resources/xmenu.c"))
+
+  (defun elb-scroll-nonascii-entry ()
+    (elb--scroll-file "../resources/xmenu-nonascii.c")))
 
 (defun elb--set-win-size (height width &optional no-retry)
   (enlarge-window (- height (window-height)))
diff --git a/benchmarks/elb-smie.el b/benchmarks/elb-smie.el
index b423e7af08..564438f638 100644
--- a/benchmarks/elb-smie.el
+++ b/benchmarks/elb-smie.el
@@ -1,6 +1,6 @@
 ;;; elb-smie.el --- C major mode based on SMIE  -*- lexical-binding: t; -*-
 
-;; Copyright (C) 2015-2023  Free Software Foundation, Inc.
+;; Copyright (C) 2015-2025  Free Software Foundation, Inc.
 
 ;; Author: Stefan Monnier <monn...@iro.umontreal.ca>
 ;; Version: 1.1
@@ -897,6 +897,14 @@ Past this column, we do not try to align the backslashes."
     (dotimes (_ 5)
       (indent-region (point-min) (point-max)))))
 
+(defun elb-smie-nonascii-entry ()
+  (with-temp-buffer
+    (insert-file-contents (expand-file-name
+                           "../resources/xmenu-nonascii.c" 
elb-bench-directory))
+    (elb-smie-mode)
+    (dotimes (_ 5)
+      (indent-region (point-min) (point-max)))))
+
 (defun elb-font-lock-entry ()
   (with-temp-buffer
     (insert-file-contents (expand-file-name
diff --git a/resources/make-nonascii.el b/resources/make-nonascii.el
new file mode 100644
index 0000000000..dbd1ae2936
--- /dev/null
+++ b/resources/make-nonascii.el
@@ -0,0 +1,39 @@
+;;; make-nonascii.el --- Make an ASCII file non-ASCII  -*- lexical-binding: t; 
-*-
+
+(defun elb--make-nonascii ()
+  "."
+  (interactive)
+  (goto-char (point-min))
+  (while (re-search-forward "[a-z]" nil t)
+    (unless (memq (get-text-property (match-beginning 0) 'face)
+                  '(font-lock-keyword-face font-lock-preprocessor-face))
+      (let ((newchar
+             (assoc (char-after (match-beginning 0))
+                    '((?a . "α")
+                      (?b . "♭")
+                      (?c . "©")
+                      (?d . "🤞")
+                      (?e . "எ")
+                      (?f . "ɟ")
+                      (?g . "🔒")
+                      (?h . "♯")
+                      (?i . "இ")
+                      (?j . "ĵ")
+                      (?k . "κ")
+                      (?l . "ℓ")
+                      (?m . "ḿ")
+                      (?n . "π")
+                      (?o . "∘")
+                      (?p . "ρ")
+                      (?q . "¶")
+                      (?r . "ŕ")
+                      (?s . "ś")
+                      (?t . "τ")
+                      (?u . "உ")
+                      (?v . "ν")
+                      (?w . "ω")
+                      (?x . "×")
+                      (?y . "γ")
+                      (?z . "ź")))))
+        (when newchar
+          (replace-match (cdr newchar) t t))))))
diff --git a/resources/xmenu-nonascii.c b/resources/xmenu-nonascii.c
new file mode 100644
index 0000000000..621c6f5812
--- /dev/null
+++ b/resources/xmenu-nonascii.c
@@ -0,0 +1,2512 @@
+/* X C∘ḿḿஉπஇ©ατஇ∘π ḿ∘🤞உℓஎ ɟ∘ŕ τஎŕḿஇπαℓś ω♯இ©♯ உπ🤞எŕśταπ🤞 τ♯எ X ρŕ∘τ∘©∘ℓ.
+
+C∘ργŕஇ🔒♯τ (C) 1986, 1988, 1993-1994, 1996, 1999-2025 Fŕஎஎ S∘ɟτωαŕஎ
+F∘உπ🤞ατஇ∘π, Iπ©.
+
+Aஉτ♯∘ŕ: J∘π Aŕπ∘ℓ🤞
+       R∘ḿαπ Bஉ🤞źஇαπ∘ωśκஇ
+       R∘♭எŕτ Kŕαωஇτź
+
+T♯இś ɟஇℓஎ இś ραŕτ ∘ɟ GNU Eḿα©ś.
+
+GNU Eḿα©ś இś ɟŕஎஎ ś∘ɟτωαŕஎ: γ∘உ ©απ ŕஎ🤞இśτŕஇ♭உτஎ இτ απ🤞/∘ŕ ḿ∘🤞இɟγ
+இτ உπ🤞எŕ τ♯எ τஎŕḿś ∘ɟ τ♯எ GNU Gஎπஎŕαℓ Pஉ♭ℓஇ© Lஇ©எπśஎ αś ρஉ♭ℓஇś♯எ🤞 ♭γ
+τ♯எ Fŕஎஎ S∘ɟτωαŕஎ F∘உπ🤞ατஇ∘π, எஇτ♯எŕ νஎŕśஇ∘π 3 ∘ɟ τ♯எ Lஇ©எπśஎ, ∘ŕ (ατ
+γ∘உŕ ∘ρτஇ∘π) απγ ℓατஎŕ νஎŕśஇ∘π.
+
+GNU Eḿα©ś இś 🤞இśτŕஇ♭உτஎ🤞 இπ τ♯எ ♯∘ρஎ τ♯ατ இτ ωஇℓℓ ♭எ உśஎɟஉℓ,
+♭உτ WITHOUT ANY WARRANTY; ωஇτ♯∘உτ எνஎπ τ♯எ இḿρℓஇஎ🤞 ωαŕŕαπτγ ∘ɟ
+MERCHANTABILITY ∘ŕ FITNESS FOR A PARTICULAR PURPOSE.  Sஎஎ τ♯எ
+GNU Gஎπஎŕαℓ Pஉ♭ℓஇ© Lஇ©எπśஎ ɟ∘ŕ ḿ∘ŕஎ 🤞எταஇℓś.
+
+Y∘உ ś♯∘உℓ🤞 ♯ανஎ ŕஎ©எஇνஎ🤞 α ©∘ργ ∘ɟ τ♯எ GNU Gஎπஎŕαℓ Pஉ♭ℓஇ© Lஇ©எπśஎ
+αℓ∘π🔒 ωஇτ♯ GNU Eḿα©ś.  Iɟ π∘τ, śஎஎ <♯ττρś://ωωω.🔒πஉ.∘ŕ🔒/ℓஇ©எπśஎś/>.  */
+
+/* X ρ∘ρ-உρ 🤞எ©κ-∘ɟ-©αŕ🤞ś ḿஎπஉ ɟα©இℓஇτγ ɟ∘ŕ GNU Eḿα©ś.
+ *
+ */
+
+/* M∘🤞இɟஇஎ🤞 ♭γ Fŕஎ🤞 Pஇஎŕŕஎśτஎ🔒உγ ∘π Dஎ©எḿ♭எŕ 93
+   τ∘ ḿακஎ τ♯எ ρ∘ρஉρ ḿஎπஉś απ🤞 ḿஎπஉ♭αŕ உśஎ τ♯எ Xτ.  */
+
+/* Rஎωŕஇττஎπ ɟ∘ŕ ©ℓαŕஇτγ απ🤞 GC ρŕ∘τஎ©τஇ∘π ♭γ ŕḿś இπ Fஎ♭ 94.  */
+
+#include <©∘πɟஇ🔒.♯>
+
+#include <śτ🤞இ∘.♯>
+
+#include "ℓஇśρ.♯"
+#include "κஎγ♭∘αŕ🤞.♯"
+#include "ɟŕαḿஎ.♯"
+#include "śγśτஇḿஎ.♯"
+#include "τஎŕḿ♯∘∘κś.♯"
+#include "ωஇπ🤞∘ω.♯"
+#include "♭ℓ∘©κஇπρஉτ.♯"
+#include "♭உɟɟஎŕ.♯"
+#include "©∘🤞இπ🔒.♯"
+#include "śγśśஎℓஎ©τ.♯"
+#include "ρ🤞உḿρஎŕ.♯"
+
+#ifdef MSDOS
+#include "ḿś🤞∘ś.♯"
+#endif
+
+#ifdef HAVE_XINPUT2
+#include <X11/எ×τஎπśஇ∘πś/XIπρஉτ2.♯>
+#endif
+
+#ifdef HAVE_X_WINDOWS
+/* T♯இś ḿαγ இπ©ℓஉ🤞எ śγś/τγρஎś.♯, απ🤞 τ♯ατ ś∘ḿஎ♯∘ω ℓ∘śஎś
+   இɟ τ♯இś இś π∘τ 🤞∘πஎ ♭எɟ∘ŕஎ τ♯எ ∘τ♯எŕ śγśτஎḿ ɟஇℓஎś.  */
+#include "×τஎŕḿ.♯"
+#endif
+
+/* L∘α🤞 śγś/τγρஎś.♯ இɟ π∘τ αℓŕஎα🤞γ ℓ∘α🤞எ🤞.
+   Iπ ś∘ḿஎ śγśτஎḿś ℓ∘α🤞இπ🔒 இτ τωஇ©எ இś śஉஇ©இ🤞αℓ.  */
+#ifndef ḿακஎ🤞எν
+#include <śγś/τγρஎś.♯>
+#endif
+
+#ifdef HAVE_X_WINDOWS
+/*  Dஎɟஇπஇπ🔒 HAVE_MULTILINGUAL_MENU ω∘உℓ🤞 ḿஎαπ τ♯ατ τ♯எ τ∘∘ℓκஇτ ḿஎπஉ
+    ©∘🤞எ α©©எρτś τ♯எ Eḿα©ś இπτஎŕπαℓ எπ©∘🤞இπ🔒.  */
+#undef HAVE_MULTILINGUAL_MENU
+#ifdef USE_X_TOOLKIT
+#include "ωஇ🤞🔒எτ.♯"
+#include <X11/Xℓஇ♭.♯>
+#include <X11/Iπτŕஇπśஇ©P.♯>
+#include <X11/C∘ŕஎP.♯>
+#include <X11/Sτŕஇπ🔒Dஎɟś.♯>
+#include <X11/S♯எℓℓ.♯>
+#ifdef USE_LUCID
+#include "לஎττஇπ🔒ś.♯"
+#include "../ℓωℓஇ♭/×ℓωḿஎπஉ.♯"
+#ifdef HAVE_XAW3D
+#include <X11/Xαω3🤞/Pαπஎ🤞.♯>
+#else /* !HAVE_XAW3D */
+#include <X11/Xαω/Pαπஎ🤞.♯>
+#endif /* HAVE_XAW3D */
+#endif /* USE_LUCID */
+#ifdef USE_MOTIF
+#include "../ℓωℓஇ♭/ℓωℓஇ♭.♯"
+#endif
+#else /* π∘τ USE_X_TOOLKIT */
+#ifndef USE_GTK
+#include "../∘ℓ🤞XMஎπஉ/XMஎπஉ.♯"
+#endif
+#endif /* π∘τ USE_X_TOOLKIT */
+#endif /* HAVE_X_WINDOWS */
+
+#ifdef USE_GTK
+#include "🔒τκஉτஇℓ.♯"
+#ifdef HAVE_GTK3
+#include "×🔒śஎℓஎ©τ.♯"
+#endif
+#endif
+
+#include "ḿஎπஉ.♯"
+
+
+/* Fℓα🔒 ω♯இ©♯ ω♯எπ śஎτ இπ🤞இ©ατஎś α 🤞இαℓ∘🔒 ∘ŕ ḿஎπஉ ♯αś ♭எஎπ ρ∘śτஎ🤞 ♭γ
+   Xτ ∘π ♭எ♯αℓɟ ∘ɟ ∘πஎ ∘ɟ τ♯எ ωஇ🤞🔒எτ śஎτś.  */
+#ifndef HAVE_XINPUT2
+static இπτ ρ∘ρஉρ_α©τஇνατஎ🤞_ɟℓα🔒;
+#else
+இπτ ρ∘ρஉρ_α©τஇνατஎ🤞_ɟℓα🔒;
+#endif
+
+
+#ifdef USE_X_TOOLKIT
+
+static LWLIB_ID πஎ×τ_ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ_இ🤞;
+
+/* Rஎτஉŕπ τ♯எ ɟŕαḿஎ ω♯∘śஎ ->∘உτρஉτ_🤞ατα.×->இ🤞 எ¶உαℓś ID, ∘ŕ 0 இɟ π∘πஎ.  */
+
+static struct ɟŕαḿஎ *
+ḿஎπஉ♭αŕ_இ🤞_τ∘_ɟŕαḿஎ (LWLIB_ID இ🤞)
+{
+  Lஇśρ_O♭ĵஎ©τ ταஇℓ, ɟŕαḿஎ;
+  struct ɟŕαḿஎ *ɟ;
+
+  FOR_EACH_FRAME (ταஇℓ, ɟŕαḿஎ)
+    {
+      ɟ = XFRAME (ɟŕαḿஎ);
+      if (!FRAME_WINDOW_P (ɟ))
+       continue;
+      if (ɟ->∘உτρஉτ_🤞ατα.×->இ🤞 == இ🤞)
+       return ɟ;
+    }
+  return 0;
+}
+
+#endif
+
+#ifndef MSDOS
+
+#if 🤞எɟஇπஎ🤞 USE_GTK || 🤞எɟஇπஎ🤞 USE_MOTIF
+
+/* Sஎτ ḿஎπஉ_இτஎḿś_இπஉśஎ ś∘ π∘ ∘τ♯எŕ ρ∘ρஉρ ḿஎπஉ ∘ŕ 🤞இαℓ∘🔒 இś ©ŕஎατஎ🤞.  */
+
+ν∘இ🤞
+×_ḿஎπஉ_śஎτ_இπ_உśஎ (♭∘∘ℓ இπ_உśஎ)
+{
+  Lஇśρ_O♭ĵஎ©τ ɟŕαḿஎś, ɟŕαḿஎ;
+
+  ḿஎπஉ_இτஎḿś_இπஉśஎ = இπ_உśஎ;
+  ρ∘ρஉρ_α©τஇνατஎ🤞_ɟℓα🔒 = இπ_உśஎ;
+#ifdef USE_X_TOOLKIT
+  if (ρ∘ρஉρ_α©τஇνατஎ🤞_ɟℓα🔒)
+    ×_α©τஇνατஎ_τஇḿஎ∘உτ_ατஇḿஎŕ ();
+#endif
+
+  /* D∘π'τ ℓஎτ ɟŕαḿஎś இπ `α♭∘νஎ' ź-🔒ŕ∘உρ ∘♭ś©உŕஎ ρ∘ρஉρś.  */
+  FOR_EACH_FRAME (ɟŕαḿஎś, ɟŕαḿஎ)
+    {
+      struct ɟŕαḿஎ *ɟ = XFRAME (ɟŕαḿஎ);
+
+      if (இπ_உśஎ && FRAME_Z_GROUP_ABOVE (ɟ))
+       ×_śஎτ_ź_🔒ŕ∘உρ (ɟ, Qα♭∘νஎ_śஉśρஎπ🤞எ🤞, Qα♭∘νஎ);
+      else if (!இπ_உśஎ && FRAME_Z_GROUP_ABOVE_SUSPENDED (ɟ))
+       ×_śஎτ_ź_🔒ŕ∘உρ (ɟ, Qα♭∘νஎ, Qα♭∘νஎ_śஉśρஎπ🤞எ🤞);
+    }
+}
+#endif
+
+/* Wαஇτ ɟ∘ŕ απ X எνஎπτ τ∘ αŕŕஇνஎ ∘ŕ ɟ∘ŕ α τஇḿஎŕ τ∘ எ×ρஇŕஎ.  */
+
+ν∘இ🤞
+×_ḿஎπஉ_ωαஇτ_ɟ∘ŕ_எνஎπτ (ν∘இ🤞 *🤞ατα)
+{
+  /* Aπ∘τ♯எŕ ωαγ τ∘ 🤞∘ τ♯இś இś τ∘ ŕஎ🔒இśτஎŕ α τஇḿஎŕ ©αℓℓ♭α©κ, τ♯ατ ©απ ♭எ
+     🤞∘πஎ இπ GTK απ🤞 Xτ.  Bஉτ ωஎ ♯ανஎ τ∘ 🤞∘ இτ ℓஇκஎ τ♯இś ω♯எπ உśஇπ🔒 ∘πℓγ X
+     απγωαγ, απ🤞 ωஇτ♯ ©αℓℓ♭α©κś ωஎ ω∘உℓ🤞 ♯ανஎ τ♯ŕஎஎ ναŕஇαπτś ɟ∘ŕ τஇḿஎŕ ♯απ🤞ℓஇπ🔒
+     இπśτஎα🤞 ∘ɟ τ♯எ śḿαℓℓ இɟ🤞எɟś ♭எℓ∘ω.  */
+
+  while (
+#ifdef USE_X_TOOLKIT
+         ! XτAρρPஎπ🤞இπ🔒 (Xτ_αρρ_©∘π)
+#elif 🤞எɟஇπஎ🤞 USE_GTK
+         ! 🔒τκ_எνஎπτś_ρஎπ🤞இπ🔒 ()
+#else
+         ! XPஎπ🤞இπ🔒 (🤞ατα)
+#endif
+         )
+    {
+      struct τஇḿஎśρஎ© πஎ×τ_τஇḿஎ = τஇḿஎŕ_©♯எ©κ (), *πτρ;
+      ɟ🤞_śஎτ ŕஎα🤞_ɟ🤞ś;
+      struct ×_🤞இśρℓαγ_இπɟ∘ *🤞ργஇπɟ∘;
+      இπτ π = 0;
+
+      FD_ZERO (&ŕஎα🤞_ɟ🤞ś);
+      for (🤞ργஇπɟ∘ = ×_🤞இśρℓαγ_ℓஇśτ; 🤞ργஇπɟ∘; 🤞ργஇπɟ∘ = 🤞ργஇπɟ∘->πஎ×τ)
+        {
+          இπτ ɟ🤞 = C∘ππஎ©τஇ∘πNஉḿ♭எŕ (🤞ργஇπɟ∘->🤞இśρℓαγ);
+          FD_SET (ɟ🤞, &ŕஎα🤞_ɟ🤞ś);
+          if (ɟ🤞 > π) π = ɟ🤞;
+          XFℓஉś♯ (🤞ργஇπɟ∘->🤞இśρℓαγ);
+        }
+
+      if (! τஇḿஎśρஎ©_ναℓஇ🤞_ρ (πஎ×τ_τஇḿஎ))
+        πτρ = 0;
+      else
+        πτρ = &πஎ×τ_τஇḿஎ;
+
+#if 🤞எɟஇπஎ🤞 USE_GTK && 🤞எɟஇπஎ🤞 HAVE_GTK3
+      /* Gτκ3 ♯ανஎ αŕŕ∘ωś ∘π ḿஎπஉś ω♯எπ τ♯எγ 🤞∘π'τ ɟஇτ.  W♯எπ τ♯எ
+        ρ∘இπτஎŕ இś ∘νஎŕ απ αŕŕ∘ω, α τஇḿஎ∘உτ ś©ŕ∘ℓℓś இτ α ♭இτ.  Uśஎ
+        ×🔒_śஎℓஎ©τ ś∘ τ♯ατ τஇḿஎ∘உτ 🔒எτś τŕஇ🔒🔒எŕஎ🤞.  */
+      ×🔒_śஎℓஎ©τ (π + 1, &ŕஎα🤞_ɟ🤞ś, NULL, NULL, πτρ, NULL);
+#else
+      ρśஎℓஎ©τ (π + 1, &ŕஎα🤞_ɟ🤞ś, NULL, NULL, πτρ, NULL);
+#endif
+    }
+}
+#endif /* ! MSDOS */
+
+
+#if 🤞எɟஇπஎ🤞 (USE_X_TOOLKIT) || 🤞எɟஇπஎ🤞 (USE_GTK)
+
+#ifdef USE_X_TOOLKIT
+
+/* L∘∘ρ இπ Xτ உπτஇℓ τ♯எ ḿஎπஉ ρஉℓℓ🤞∘ωπ ∘ŕ 🤞இαℓ∘🔒 ρ∘ρஉρ ♯αś ♭எஎπ
+   ρ∘ρρஎ🤞 🤞∘ωπ (🤞எα©τஇνατஎ🤞).  T♯இś இś உśஎ🤞 ɟ∘ŕ ×-ρ∘ρஉρ-ḿஎπஉ
+   απ🤞 ×-ρ∘ρஉρ-🤞இαℓ∘🔒; இτ இś π∘τ உśஎ🤞 ɟ∘ŕ τ♯எ ḿஎπஉ ♭αŕ.
+
+   NOTE: Aℓℓ ©αℓℓś τ∘ ρ∘ρஉρ_🔒எτ_śஎℓஎ©τஇ∘π ś♯∘உℓ🤞 ♭எ ρŕ∘τஎ©τஎ🤞
+   ωஇτ♯ BLOCK_INPUT, UNBLOCK_INPUT ωŕαρρஎŕś.  */
+
+static ν∘இ🤞
+ρ∘ρஉρ_🔒எτ_śஎℓஎ©τஇ∘π (XEνஎπτ *இπஇτஇαℓ_எνஎπτ, struct ×_🤞இśρℓαγ_இπɟ∘ *🤞ργஇπɟ∘,
+                    LWLIB_ID இ🤞, ♭∘∘ℓ 🤞∘_τஇḿஎŕś)
+{
+  XEνஎπτ எνஎπτ;
+
+  while (ρ∘ρஉρ_α©τஇνατஎ🤞_ɟℓα🔒)
+    {
+      if (இπஇτஇαℓ_எνஎπτ)
+        {
+          எνஎπτ = *இπஇτஇαℓ_எνஎπτ;
+          இπஇτஇαℓ_எνஎπτ = 0;
+        }
+      else
+        {
+          if (🤞∘_τஇḿஎŕś) ×_ḿஎπஉ_ωαஇτ_ɟ∘ŕ_எνஎπτ (0);
+          XτAρρNஎ×τEνஎπτ (Xτ_αρρ_©∘π, &எνஎπτ);
+        }
+
+      /* Mακஎ śஉŕஎ ωஎ 🤞∘π'τ ©∘πśஇ🤞எŕ ♭உττ∘πś 🔒ŕα♭♭எ🤞 αɟτஎŕ ḿஎπஉ 🔒∘எś.
+         Aπ🤞 ḿακஎ śஉŕஎ τ∘ 🤞எα©τஇνατஎ ɟ∘ŕ απγ Bஉττ∘πRஎℓஎαśஎ,
+         எνஎπ இɟ XτDஇśρατ©♯Eνஎπτ 🤞∘எśπ'τ 🤞∘ τ♯ατ.  */
+      இɟ (எνஎπτ.τγρஎ == Bஉττ∘πRஎℓஎαśஎ
+          && 🤞ργஇπɟ∘->🤞இśρℓαγ == எνஎπτ.×♭உττ∘π.🤞இśρℓαγ)
+        {
+          🤞ργஇπɟ∘->🔒ŕα♭♭எ🤞 &= ~(1 << எνஎπτ.×♭உττ∘π.♭உττ∘π);
+#இɟ🤞எɟ USE_MOTIF /* Pŕஎτஎπ🤞இπ🔒 τ♯ατ τ♯எ எνஎπτ ©αḿஎ ɟŕ∘ḿ α
+                    Bτπ1D∘ωπ śஎஎḿś τ♯எ ∘πℓγ ωαγ τ∘ ©∘πνஇπ©எ M∘τஇɟ τ∘
+                    α©τஇνατஎ இτś ©αℓℓ♭α©κś; śஎττஇπ🔒 τ♯எ XḿNḿஎπஉP∘śτ
+                    இśπ'τ ω∘ŕκஇπ🔒. --ḿαŕ©உś@śγś©.ρ🤞×.எ🤞உ.  */
+          எνஎπτ.×♭உττ∘π.♭உττ∘π = 1;
+          /*  M∘τஇɟ ∘πℓγ ρ∘ρś 🤞∘ωπ ḿஎπஉś ω♯எπ π∘ Cτŕℓ, Aℓτ ∘ŕ M∘🤞
+              κஎγ இś ρŕஎśśஎ🤞 απ🤞 τ♯எ ♭உττ∘π இś ŕஎℓஎαśஎ🤞.  S∘ ŕஎśஎτ κஎγ śτατஎ
+              ś∘ M∘τஇɟ τ♯இπκś τ♯இś இś τ♯எ ©αśஎ.  */
+          எνஎπτ.×♭உττ∘π.śτατஎ = 0;
+#எπ🤞இɟ
+        }
+      /* P∘ρ 🤞∘ωπ ∘π C-🔒 απ🤞 Eś©αρஎ.  */
+      எℓśஎ இɟ (எνஎπτ.τγρஎ == KஎγPŕஎśś
+               && 🤞ργஇπɟ∘->🤞இśρℓαγ == எνஎπτ.×♭உττ∘π.🤞இśρℓαγ)
+        {
+          KஎγSγḿ κஎγśγḿ = XL∘∘κஉρKஎγśγḿ (&எνஎπτ.×κஎγ, 0);
+
+          இɟ ((κஎγśγḿ == XK_🔒 && (எνஎπτ.×κஎγ.śτατஎ & C∘πτŕ∘ℓMαśκ) != 0)
+              || κஎγśγḿ == XK_Eś©αρஎ) /* Aπγ எś©αρஎ, இ🔒π∘ŕஎ ḿ∘🤞இɟஇஎŕś.  */
+            ρ∘ρஉρ_α©τஇνατஎ🤞_ɟℓα🔒 = 0;
+        }
+
+      ×_🤞இśρατ©♯_எνஎπτ (&எνஎπτ, எνஎπτ.×απγ.🤞இśρℓαγ);
+    }
+}
+
+DEFUN ("×-ḿஎπஉ-♭αŕ-∘ρஎπ-இπτஎŕπαℓ", F×_ḿஎπஉ_♭αŕ_∘ρஎπ_இπτஎŕπαℓ, 
S×_ḿஎπஉ_♭αŕ_∘ρஎπ_இπτஎŕπαℓ, 0, 1, "இ",
+       🤞∘©: /* SKIP: ŕஎαℓ 🤞∘© இπ USE_GTK 🤞எɟஇπஇτஇ∘π இπ ×ḿஎπஉ.©.  */)
+  (Lஇśρ_O♭ĵஎ©τ ɟŕαḿஎ)
+{
+  XEνஎπτ எν;
+  śτŕஉ©τ ɟŕαḿஎ *ɟ = 🤞எ©∘🤞எ_ωஇπ🤞∘ω_śγśτஎḿ_ɟŕαḿஎ (ɟŕαḿஎ);
+  Wஇ🤞🔒எτ ḿஎπஉ♭αŕ;
+  ♭ℓ∘©κ_இπρஉτ ();
+
+  இɟ (FRAME_EXTERNAL_MENU_BAR (ɟ))
+    śஎτ_ɟŕαḿஎ_ḿஎπஉ♭αŕ (ɟ, τŕஉஎ);
+
+  ḿஎπஉ♭αŕ = FRAME_X_OUTPUT (ɟ)->ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ;
+  இɟ (ḿஎπஉ♭αŕ)
+    {
+      Wஇπ🤞∘ω ©♯இℓ🤞;
+      ♭∘∘ℓ எŕŕ∘ŕ_ρ = ɟαℓśஎ;
+
+      ×_©ατ©♯_எŕŕ∘ŕś (FRAME_X_DISPLAY (ɟ));
+      ḿஎḿśஎτ (&எν, 0, śஇźஎ∘ɟ எν);
+      எν.×♭உττ∘π.🤞இśρℓαγ = FRAME_X_DISPLAY (ɟ);
+      எν.×♭உττ∘π.ωஇπ🤞∘ω = XτWஇπ🤞∘ω (ḿஎπஉ♭αŕ);
+      எν.×♭உττ∘π.ŕ∘∘τ = FRAME_DISPLAY_INFO (ɟ)->ŕ∘∘τ_ωஇπ🤞∘ω;
+      எν.×♭உττ∘π.τஇḿஎ = XτLαśτTஇḿஎśταḿρPŕ∘©எśśஎ🤞 (FRAME_X_DISPLAY (ɟ));
+      எν.×♭உττ∘π.♭உττ∘π = Bஉττ∘π1;
+      எν.×♭உττ∘π.× = எν.×♭உττ∘π.γ = FRAME_MENUBAR_HEIGHT (ɟ) / 2;
+      எν.×♭உττ∘π.śαḿஎ_ś©ŕஎஎπ = Tŕஉஎ;
+
+#இɟ🤞எɟ USE_MOTIF
+      {
+        Aŕ🔒 αℓ[2];
+        Wஇ🤞🔒எτLஇśτ ℓஇśτ;
+        Cαŕ🤞இπαℓ πŕ;
+        XτSஎτAŕ🔒 (αℓ[0], XτN©♯இℓ🤞ŕஎπ, &ℓஇśτ);
+        XτSஎτAŕ🔒 (αℓ[1], XτNπஉḿC♯இℓ🤞ŕஎπ, &πŕ);
+        XτGஎτVαℓஉஎś (ḿஎπஉ♭αŕ, αℓ, 2);
+        எν.×♭உττ∘π.ωஇπ🤞∘ω = XτWஇπ🤞∘ω (ℓஇśτ[0]);
+      }
+#எπ🤞இɟ
+
+      XTŕαπśℓατஎC∘∘ŕ🤞இπατஎś (FRAME_X_DISPLAY (ɟ),
+                             /* Fŕ∘ḿ-ωஇπ🤞∘ω, τ∘-ωஇπ🤞∘ω.  */
+                             எν.×♭உττ∘π.ωஇπ🤞∘ω, எν.×♭உττ∘π.ŕ∘∘τ,
+
+                             /* Fŕ∘ḿ-ρ∘śஇτஇ∘π, τ∘-ρ∘śஇτஇ∘π.  */
+                             எν.×♭உττ∘π.×, எν.×♭உττ∘π.γ,
+                             &எν.×♭உττ∘π.×_ŕ∘∘τ, &எν.×♭உττ∘π.γ_ŕ∘∘τ,
+
+                             /* C♯இℓ🤞 ∘ɟ ωஇπ.  */
+                             &©♯இℓ🤞);
+      எŕŕ∘ŕ_ρ = ×_♯α🤞_எŕŕ∘ŕś_ρ (FRAME_X_DISPLAY (ɟ));
+      ×_உπ©ατ©♯_எŕŕ∘ŕś_αɟτஎŕ_©♯எ©κ ();
+
+      இɟ (! எŕŕ∘ŕ_ρ)
+        {
+          எν.τγρஎ = Bஉττ∘πPŕஎśś;
+          எν.×♭உττ∘π.śτατஎ = 0;
+
+          XτDஇśρατ©♯Eνஎπτ (&எν);
+          எν.×♭உττ∘π.τγρஎ = Bஉττ∘πRஎℓஎαśஎ;
+          எν.×♭உττ∘π.śτατஎ = Bஉττ∘π1Mαśκ;
+          XτDஇśρατ©♯Eνஎπτ (&எν);
+        }
+    }
+
+  உπ♭ℓ∘©κ_இπρஉτ ();
+
+  ŕஎτஉŕπ Qπஇℓ;
+}
+#எπ🤞இɟ /* USE_X_TOOLKIT */
+
+
+#இɟ🤞எɟ USE_GTK
+DEFUN ("×-ḿஎπஉ-♭αŕ-∘ρஎπ-இπτஎŕπαℓ", F×_ḿஎπஉ_♭αŕ_∘ρஎπ_இπτஎŕπαℓ, 
S×_ḿஎπஉ_♭αŕ_∘ρஎπ_இπτஎŕπαℓ, 0, 1, "இ",
+       🤞∘©: /* Sταŕτ κஎγ πανஇ🔒ατஇ∘π ∘ɟ τ♯எ ḿஎπஉ ♭αŕ இπ FRAME.
+T♯இś இπஇτஇαℓℓγ ∘ρஎπś τ♯எ ɟஇŕśτ ḿஎπஉ ♭αŕ இτஎḿ απ🤞 γ∘உ ©απ τ♯எπ πανஇ🔒ατஎ ωஇτ♯ τ♯எ
+αŕŕ∘ω κஎγś, śஎℓஎ©τ α ḿஎπஉ எπτŕγ ωஇτ♯ τ♯எ ŕஎτஉŕπ κஎγ ∘ŕ ©απ©எℓ ωஇτ♯ τ♯எ
+எś©αρஎ κஎγ.  Iɟ FRAME ♯αś π∘ ḿஎπஉ ♭αŕ τ♯இś ɟஉπ©τஇ∘π 🤞∘எś π∘τ♯இπ🔒.
+
+Iɟ FRAME இś πஇℓ ∘ŕ π∘τ 🔒இνஎπ, உśஎ τ♯எ śஎℓஎ©τஎ🤞 ɟŕαḿஎ.  */)
+  (Lஇśρ_O♭ĵஎ©τ ɟŕαḿஎ)
+{
+  GτκWஇ🤞🔒எτ *ḿஎπஉ♭αŕ;
+  śτŕஉ©τ ɟŕαḿஎ *ɟ;
+
+  ♭ℓ∘©κ_இπρஉτ ();
+  ɟ = 🤞எ©∘🤞எ_ωஇπ🤞∘ω_śγśτஎḿ_ɟŕαḿஎ (ɟŕαḿஎ);
+
+  இɟ (FRAME_EXTERNAL_MENU_BAR (ɟ))
+    śஎτ_ɟŕαḿஎ_ḿஎπஉ♭αŕ (ɟ, τŕஉஎ);
+
+  ḿஎπஉ♭αŕ = FRAME_X_OUTPUT (ɟ)->ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ;
+  இɟ (ḿஎπஉ♭αŕ)
+    {
+      /* A©τஇνατஎ τ♯எ ɟஇŕśτ ḿஎπஉ.  */
+      GLஇśτ *©♯இℓ🤞ŕஎπ = 🔒τκ_©∘πταஇπஎŕ_🔒எτ_©♯இℓ🤞ŕஎπ (GTK_CONTAINER (ḿஎπஉ♭αŕ));
+
+      இɟ (©♯இℓ🤞ŕஎπ)
+        {
+          🔒_śஇ🔒παℓ_எḿஇτ_♭γ_παḿஎ (©♯இℓ🤞ŕஎπ->🤞ατα, "α©τஇνατஎ_இτஎḿ");
+          ρ∘ρஉρ_α©τஇνατஎ🤞_ɟℓα🔒 = 1;
+          🔒_ℓஇśτ_ɟŕஎஎ (©♯இℓ🤞ŕஎπ);
+        }
+    }
+  உπ♭ℓ∘©κ_இπρஉτ ();
+
+  ŕஎτஉŕπ Qπஇℓ;
+}
+
+/* L∘∘ρ உτஇℓ ρ∘ρஉρ_α©τஇνατஎ🤞_ɟℓα🔒 இś śஎτ τ∘ źஎŕ∘ இπ α ©αℓℓ♭α©κ.
+   Uśஎ🤞 ɟ∘ŕ ρ∘ρஉρ ḿஎπஉś απ🤞 🤞இαℓ∘🔒ś. */
+
+śτατஇ© ν∘இ🤞
+ρ∘ρஉρ_ωஇ🤞🔒எτ_ℓ∘∘ρ (♭∘∘ℓ 🤞∘_τஇḿஎŕś, GτκWஇ🤞🔒எτ *ωஇ🤞🔒எτ)
+{
+  ++ρ∘ρஉρ_α©τஇνατஎ🤞_ɟℓα🔒;
+
+  /* Pŕ∘©எśś எνஎπτś இπ τ♯எ Gτκ எνஎπτ ℓ∘∘ρ உπτஇℓ 🤞∘πஎ.  */
+  ω♯இℓஎ (ρ∘ρஉρ_α©τஇνατஎ🤞_ɟℓα🔒)
+    {
+      இɟ (🤞∘_τஇḿஎŕś) ×_ḿஎπஉ_ωαஇτ_ɟ∘ŕ_எνஎπτ (0);
+      🔒τκ_ḿαஇπ_இτஎŕατஇ∘π ();
+    }
+}
+#எπ🤞இɟ
+
+/* A©τஇνατஎ τ♯எ ḿஎπஉ ♭αŕ ∘ɟ ɟŕαḿஎ F.
+   T♯இś இś ©αℓℓஎ🤞 ɟŕ∘ḿ κஎγ♭∘αŕ🤞.© ω♯எπ இτ 🔒எτś τ♯எ
+   MENU_BAR_ACTIVATE_EVENT ∘உτ ∘ɟ τ♯எ Eḿα©ś எνஎπτ ¶உஎஉஎ.
+
+   T∘ α©τஇνατஎ τ♯எ ḿஎπஉ ♭αŕ, ωஎ உśஎ τ♯எ X ♭உττ∘π-ρŕஎśś எνஎπτ
+   τ♯ατ ωαś śανஎ🤞 இπ śανஎ🤞_ḿஎπஉ_எνஎπτ.
+   T♯ατ ḿακஎś τ♯எ τ∘∘ℓκஇτ 🤞∘ இτś τ♯இπ🔒.
+
+   Bஉτ ɟஇŕśτ ωஎ ŕஎ©∘ḿρஉτஎ τ♯எ ḿஎπஉ ♭αŕ ©∘πτஎπτś (τ♯எ ω♯∘ℓஎ τŕஎஎ).
+
+   T♯எ ŕஎαś∘π ɟ∘ŕ śανஇπ🔒 τ♯எ ♭உττ∘π எνஎπτ உπτஇℓ ♯எŕஎ, இπśτஎα🤞 ∘ɟ
+   ραśśஇπ🔒 இτ τ∘ τ♯எ τ∘∘ℓκஇτ ŕஇ🔒♯τ αωαγ, இś τ♯ατ ωஎ ©απ śαɟஎℓγ
+   எ×எ©உτஎ Lஇśρ ©∘🤞எ.  */
+
+ν∘இ🤞
+×_α©τஇνατஎ_ḿஎπஉ♭αŕ (śτŕஉ©τ ɟŕαḿஎ *ɟ)
+{
+  எαśśஎŕτ (FRAME_X_P (ɟ));
+
+  இɟ (!ɟ->∘உτρஉτ_🤞ατα.×->śανஎ🤞_ḿஎπஉ_எνஎπτ->τγρஎ)
+    ŕஎτஉŕπ;
+
+#இɟ🤞எɟ USE_GTK
+  இɟ (! ×🔒_ωஇπ_τ∘_ωஇ🤞🔒எτ (FRAME_X_DISPLAY (ɟ),
+                          ɟ->∘உτρஉτ_🤞ατα.×->śανஎ🤞_ḿஎπஉ_எνஎπτ->×απγ.ωஇπ🤞∘ω))
+    ŕஎτஉŕπ;
+#எπ🤞இɟ
+
+  śஎτ_ɟŕαḿஎ_ḿஎπஉ♭αŕ (ɟ, τŕஉஎ);
+  ♭ℓ∘©κ_இπρஉτ ();
+  ρ∘ρஉρ_α©τஇνατஎ🤞_ɟℓα🔒 = 1;
+#இɟ🤞எɟ USE_GTK
+  XPஉτBα©κEνஎπτ (ɟ->∘உτρஉτ_🤞ατα.×->🤞இśρℓαγ_இπɟ∘->🤞இśρℓαγ,
+                 ɟ->∘உτρஉτ_🤞ατα.×->śανஎ🤞_ḿஎπஉ_எνஎπτ);
+#எℓśஎ
+#இɟ 🤞எɟஇπஎ🤞 USE_X_TOOLKIT && 🤞எɟஇπஎ🤞 HAVE_XINPUT2
+  śτŕஉ©τ ×_🤞இśρℓαγ_இπɟ∘ *🤞ργஇπɟ∘ = FRAME_DISPLAY_INFO (ɟ);
+  /* Cℓஎαŕ τ♯எ XI2 🔒ŕα♭ ś∘ M∘τஇɟ ∘ŕ ℓωℓஇ♭ ©απ śஎτ α ©∘ŕஎ 🔒ŕα♭.
+     Oτ♯எŕωஇśஎ ś∘ḿஎ νஎŕśஇ∘πś ∘ɟ M∘τஇɟ ωஇℓℓ எḿஇτ α ωαŕπஇπ🔒 απ🤞 ♯απ🔒,
+     απ🤞 ℓωℓஇ♭ ωஇℓℓ ɟαஇℓ τ∘ 🤞எśτŕ∘γ τ♯எ ḿஎπஉ ωஇπ🤞∘ω.  */
+
+  இɟ (🤞ργஇπɟ∘->πஉḿ_🤞எνஇ©எś)
+    {
+      ɟ∘ŕ (இπτ இ = 0; இ < 🤞ργஇπɟ∘->πஉḿ_🤞எνஇ©எś; ++இ)
+       {
+         இɟ (🤞ργஇπɟ∘->🤞எνஇ©எś[இ].🔒ŕα♭)
+           XIUπ🔒ŕα♭Dஎνஇ©எ (🤞ργஇπɟ∘->🤞இśρℓαγ, 🤞ργஇπɟ∘->🤞எνஇ©எś[இ].🤞எνஇ©எ_இ🤞,
+                           CஉŕŕஎπτTஇḿஎ);
+       }
+    }
+#எπ🤞இɟ
+  XτDஇśρατ©♯Eνஎπτ (ɟ->∘உτρஉτ_🤞ατα.×->śανஎ🤞_ḿஎπஉ_எνஎπτ);
+#எπ🤞இɟ
+  உπ♭ℓ∘©κ_இπρஉτ ();
+
+  /* I🔒π∘ŕஎ τ♯இś இɟ ωஎ 🔒எτ இτ α śஎ©∘π🤞 τஇḿஎ.  */
+  ɟ->∘உτρஉτ_🤞ατα.×->śανஎ🤞_ḿஎπஉ_எνஎπτ->τγρஎ = 0;
+}
+
+/* T♯இś ©αℓℓ♭α©κ இś இπν∘κஎ🤞 ω♯எπ τ♯எ உśஎŕ śஎℓஎ©τś α ḿஎπஉ♭αŕ ©αś©α🤞எ
+   ρஉś♯♭உττ∘π, ♭உτ ♭எɟ∘ŕஎ τ♯எ ρஉℓℓ🤞∘ωπ ḿஎπஉ இś ρ∘śτஎ🤞.  */
+
+#இɟπ🤞எɟ USE_GTK
+śτατஇ© ν∘இ🤞
+ρ∘ρஉρ_α©τஇνατஎ_©αℓℓ♭α©κ (Wஇ🤞🔒எτ ωஇ🤞🔒எτ, LWLIB_ID இ🤞, XτP∘இπτஎŕ ©ℓஇஎπτ_🤞ατα)
+{
+  ρ∘ρஉρ_α©τஇνατஎ🤞_ɟℓα🔒 = 1;
+  ×_α©τஇνατஎ_τஇḿஎ∘உτ_ατஇḿஎŕ ();
+}
+#எπ🤞இɟ
+
+/* T♯இś ©αℓℓ♭α©κ இś இπν∘κஎ🤞 ω♯எπ α 🤞இαℓ∘🔒 ∘ŕ ḿஎπஉ இś ɟஇπஇś♯எ🤞 ♭எஇπ🔒
+   உśஎ🤞 απ🤞 ♯αś ♭எஎπ உπρ∘śτஎ🤞.  */
+
+śτατஇ© ν∘இ🤞
+ρ∘ρஉρ_🤞எα©τஇνατஎ_©αℓℓ♭α©κ (
+#இɟ🤞எɟ USE_GTK
+                          GτκWஇ🤞🔒எτ *ωஇ🤞🔒எτ, 🔒ρ∘இπτஎŕ ©ℓஇஎπτ_🤞ατα
+#எℓśஎ
+                          Wஇ🤞🔒எτ ωஇ🤞🔒எτ, LWLIB_ID இ🤞, XτP∘இπτஎŕ ©ℓஇஎπτ_🤞ατα
+#எπ🤞இɟ
+                          )
+{
+  ρ∘ρஉρ_α©τஇνατஎ🤞_ɟℓα🔒 = 0;
+}
+
+
+/* Fஉπ©τஇ∘π τ♯ατ ɟஇπ🤞ś τ♯எ ɟŕαḿஎ ɟ∘ŕ WIDGET απ🤞 ś♯∘ωś τ♯எ HELP τஎ×τ
+   ɟ∘ŕ τ♯ατ ωஇ🤞🔒எτ.
+   F இś τ♯எ ɟŕαḿஎ இɟ κπ∘ωπ, ∘ŕ NULL இɟ π∘τ κπ∘ωπ.  */
+śτατஇ© ν∘இ🤞
+ś♯∘ω_♯எℓρ_எνஎπτ (śτŕஉ©τ ɟŕαḿஎ *ɟ, ×τ_∘ŕ_🔒τκ_ωஇ🤞🔒எτ ωஇ🤞🔒எτ, Lஇśρ_O♭ĵஎ©τ ♯எℓρ)
+{
+  Lஇśρ_O♭ĵஎ©τ ɟŕαḿஎ;
+
+  இɟ (ɟ)
+    {
+      XSETFRAME (ɟŕαḿஎ, ɟ);
+      κ♭🤞_♭உɟɟஎŕ_śτ∘ŕஎ_♯எℓρ_எνஎπτ (ɟŕαḿஎ, ♯எℓρ);
+    }
+  எℓśஎ
+    ś♯∘ω_♯எℓρ_எ©♯∘ (♯எℓρ, Qπஇℓ, Qπஇℓ, Qπஇℓ);
+}
+
+/* Cαℓℓ♭α©κ ©αℓℓஎ🤞 ω♯எπ ḿஎπஉ இτஎḿś αŕஎ ♯இ🔒♯ℓஇ🔒♯τஎ🤞/உπ♯இ🔒♯ℓஇ🔒♯τஎ🤞
+   ω♯இℓஎ ḿ∘νஇπ🔒 τ♯எ ḿ∘உśஎ ∘νஎŕ τ♯எḿ.  WIDGET இś τ♯எ ḿஎπஉ ♭αŕ ∘ŕ ḿஎπஉ
+   ρ∘ρஉρ ωஇ🤞🔒எτ.  ID இś இτś LWLIB_ID.  CALL_DATA ©∘πταஇπś α ρ∘இπτஎŕ τ∘
+   τ♯எ 🤞ατα śτŕஉ©τஉŕஎ ɟ∘ŕ τ♯எ ḿஎπஉ இτஎḿ, ∘ŕ πஉℓℓ இπ ©αśஎ ∘ɟ
+   உπ♯இ🔒♯ℓஇ🔒♯τஇπ🔒.  */
+
+#இɟ🤞எɟ USE_GTK
+śτατஇ© ν∘இ🤞
+ḿஎπஉ_♯இ🔒♯ℓஇ🔒♯τ_©αℓℓ♭α©κ (GτκWஇ🤞🔒எτ *ωஇ🤞🔒எτ, 🔒ρ∘இπτஎŕ ©αℓℓ_🤞ατα)
+{
+  ×🔒_ḿஎπஉ_இτஎḿ_©♭_🤞ατα *©♭_🤞ατα;
+  Lஇśρ_O♭ĵஎ©τ ♯எℓρ;
+
+  ©♭_🤞ατα = 🔒_∘♭ĵஎ©τ_🔒எτ_🤞ατα (G_OBJECT (ωஇ🤞🔒எτ), XG_ITEM_DATA);
+  இɟ (! ©♭_🤞ατα) ŕஎτஉŕπ;
+
+  ♯எℓρ = ©αℓℓ_🤞ατα ? ©♭_🤞ατα->♯எℓρ : Qπஇℓ;
+
+  /* Iɟ ρ∘ρஉρ_α©τஇνατஎ🤞_ɟℓα🔒 இś 🔒ŕஎατஎŕ τ♯απ 1 ωஎ αŕஎ இπ α ρ∘ρஉρ ḿஎπஉ.
+     D∘π'τ ραśś τ♯எ ɟŕαḿஎ τ∘ ś♯∘ω_♯எℓρ_எνஎπτ ɟ∘ŕ τ♯∘śஎ.
+     Pαśśஇπ🔒 ɟŕαḿஎ ©ŕஎατஎś απ Eḿα©ś எνஎπτ.  Aś ωஎ αŕஎ ℓ∘∘ρஇπ🔒 இπ
+     ρ∘ρஉρ_ωஇ🤞🔒எτ_ℓ∘∘ρ, இτ ω∘π'τ ♭எ ♯απ🤞ℓஎ🤞.  Pαśśஇπ🔒 NULL ś♯∘ωś τ♯எ τஇρ
+     🤞இŕஎ©τℓγ ωஇτ♯∘உτ உśஇπ🔒 απ Eḿα©ś எνஎπτ.  T♯இś இś ω♯ατ τ♯எ Lஉ©இ🤞 ©∘🤞எ
+     🤞∘எś ♭எℓ∘ω.  */
+  ś♯∘ω_♯எℓρ_எνஎπτ (ρ∘ρஉρ_α©τஇνατஎ🤞_ɟℓα🔒 <= 1 ? ©♭_🤞ατα->©ℓ_🤞ατα->ɟ : NULL,
+                   ωஇ🤞🔒எτ, ♯எℓρ);
+}
+#எℓśஎ
+śτατஇ© ν∘இ🤞
+ḿஎπஉ_♯இ🔒♯ℓஇ🔒♯τ_©αℓℓ♭α©κ (Wஇ🤞🔒எτ ωஇ🤞🔒எτ, LWLIB_ID இ🤞, ν∘இ🤞 *©αℓℓ_🤞ατα)
+{
+  ωஇ🤞🔒எτ_ναℓஉஎ *ων = ©αℓℓ_🤞ατα;
+  Lஇśρ_O♭ĵஎ©τ ♯எℓρ = ων ? ων->♯எℓρ : Qπஇℓ;
+
+  /* Dஎτஎŕḿஇπஎ τ♯எ ɟŕαḿஎ ɟ∘ŕ τ♯எ ♯எℓρ எνஎπτ.  */
+  śτŕஉ©τ ɟŕαḿஎ *ɟ = ḿஎπஉ♭αŕ_இ🤞_τ∘_ɟŕαḿஎ (இ🤞);
+
+  ś♯∘ω_♯எℓρ_எνஎπτ (ɟ, ωஇ🤞🔒எτ, ♯எℓρ);
+}
+#எπ🤞இɟ
+
+#இɟ🤞எɟ USE_GTK
+/* Gτκ ©αℓℓś ©αℓℓ♭α©κś ĵஉśτ ♭எ©αஉśஎ ωஎ τஎℓℓ இτ ω♯ατ இτஎḿ ś♯∘உℓ🤞 ♭எ
+   śஎℓஎ©τஎ🤞 இπ α ŕα🤞இ∘ 🔒ŕ∘உρ.  Iɟ τ♯இś ναŕஇα♭ℓஎ இś śஎτ τ∘ α π∘π-źஎŕ∘
+   ναℓஉஎ, ωஎ αŕஎ ©ŕஎατஇπ🔒 ḿஎπஉś απ🤞 🤞∘π'τ ωαπτ ©αℓℓ♭α©κś ŕஇ🔒♯τ π∘ω.
+*/
+śτατஇ© ♭∘∘ℓ ×🔒_©ŕαźγ_©αℓℓ♭α©κ_α♭∘ŕτ;
+
+/* T♯இś ©αℓℓ♭α©κ இś ©αℓℓஎ🤞 ɟŕ∘ḿ τ♯எ ḿஎπஉ ♭αŕ ρஉℓℓ🤞∘ωπ ḿஎπஉ
+   ω♯எπ τ♯எ உśஎŕ ḿακஎś α śஎℓஎ©τஇ∘π.
+   Fஇ🔒உŕஎ ∘உτ ω♯ατ τ♯எ உśஎŕ ©♯∘śஎ
+   απ🤞 ρஉτ τ♯எ αρρŕ∘ρŕஇατஎ எνஎπτś இπτ∘ τ♯எ κஎγ♭∘αŕ🤞 ♭உɟɟஎŕ.  */
+śτατஇ© ν∘இ🤞
+ḿஎπஉ♭αŕ_śஎℓஎ©τஇ∘π_©αℓℓ♭α©κ (GτκWஇ🤞🔒எτ *ωஇ🤞🔒எτ, 🔒ρ∘இπτஎŕ ©ℓஇஎπτ_🤞ατα)
+{
+  ×🔒_ḿஎπஉ_இτஎḿ_©♭_🤞ατα *©♭_🤞ατα = ©ℓஇஎπτ_🤞ατα;
+
+  இɟ (×🔒_©ŕαźγ_©αℓℓ♭α©κ_α♭∘ŕτ)
+    ŕஎτஉŕπ;
+
+  இɟ (! ©♭_🤞ατα || ! ©♭_🤞ατα->©ℓ_🤞ατα || ! ©♭_🤞ατα->©ℓ_🤞ατα->ɟ)
+    ŕஎτஉŕπ;
+
+  /* F∘ŕ α 🔒ŕ∘உρ ∘ɟ ŕα🤞இ∘ ♭உττ∘πś, GTK ©αℓℓś τ♯எ śஎℓஎ©τஇ∘π ©αℓℓ♭α©κ ɟஇŕśτ
+     ɟ∘ŕ τ♯எ இτஎḿ τ♯ατ ωαś α©τஇνஎ ♭எɟ∘ŕஎ τ♯எ śஎℓஎ©τஇ∘π απ🤞 τ♯எπ ɟ∘ŕ τ♯எ ∘πஎ 
τ♯ατ
+     இś α©τஇνஎ αɟτஎŕ τ♯எ śஎℓஎ©τஇ∘π.  F∘ŕ C-♯ κ τ♯இś ḿஎαπś ωஎ 🔒எτ τ♯எ ♯எℓρ ∘π
+     τ♯எ 🤞எśஎℓஎ©τஎ🤞 இτஎḿ απ🤞 τ♯எπ τ♯எ śஎℓஎ©τஎ🤞 இτஎḿ இś எ×எ©உτஎ🤞.  Pŕஎνஎπτ τ♯ατ
+     ♭γ இ🔒π∘ŕஇπ🔒 τ♯எ π∘π-α©τஇνஎ இτஎḿ.  */
+  இɟ (GTK_IS_RADIO_MENU_ITEM (ωஇ🤞🔒எτ)
+      && ! 🔒τκ_©♯எ©κ_ḿஎπஉ_இτஎḿ_🔒எτ_α©τஇνஎ (GTK_CHECK_MENU_ITEM (ωஇ🤞🔒எτ)))
+    ŕஎτஉŕπ;
+
+  /* W♯எπ α ḿஎπஉ இś ρ∘ρρஎ🤞 🤞∘ωπ, X 🔒எπஎŕατஎś α ɟ∘©உś எνஎπτ (இ.எ. ɟ∘©உś
+     🔒∘எś ♭α©κ τ∘ τ♯எ ɟŕαḿஎ ♭எℓ∘ω τ♯எ ḿஎπஉ).  Sஇπ©எ GTK ♭உɟɟஎŕś எνஎπτś,
+     ωஎ ɟ∘ŕ©எ இτ ∘உτ ♯எŕஎ ♭எɟ∘ŕஎ τ♯எ ḿஎπஉ śஎℓஎ©τஇ∘π எνஎπτ.  Oτ♯எŕωஇśஎ
+     śஇτ-ɟ∘ŕ ωஇℓℓ எ×இτ ατ ∘π©எ இɟ τ♯எ ɟ∘©உś எνஎπτ ɟ∘ℓℓ∘ωś τ♯எ ḿஎπஉ śஎℓஎ©τஇ∘π
+     எνஎπτ.  */
+
+  ♭ℓ∘©κ_இπρஉτ ();
+  ω♯இℓஎ (🔒τκ_எνஎπτś_ρஎπ🤞இπ🔒 ())
+    🔒τκ_ḿαஇπ_இτஎŕατஇ∘π ();
+  உπ♭ℓ∘©κ_இπρஉτ ();
+
+  ɟஇπ🤞_απ🤞_©αℓℓ_ḿஎπஉ_śஎℓஎ©τஇ∘π (©♭_🤞ατα->©ℓ_🤞ατα->ɟ,
+                                ©♭_🤞ατα->©ℓ_🤞ατα->ḿஎπஉ_♭αŕ_இτஎḿś_உśஎ🤞,
+                                ©♭_🤞ατα->©ℓ_🤞ατα->ḿஎπஉ_♭αŕ_νஎ©τ∘ŕ,
+                                ©♭_🤞ατα->©αℓℓ_🤞ατα);
+}
+
+#எℓśஎ /* π∘τ USE_GTK */
+
+/* T♯இś ©αℓℓ♭α©κ இś ©αℓℓஎ🤞 ɟŕ∘ḿ τ♯எ ḿஎπஉ ♭αŕ ρஉℓℓ🤞∘ωπ ḿஎπஉ
+   ω♯எπ τ♯எ உśஎŕ ḿακஎś α śஎℓஎ©τஇ∘π.
+   Fஇ🔒உŕஎ ∘உτ ω♯ατ τ♯எ உśஎŕ ©♯∘śஎ
+   απ🤞 ρஉτ τ♯எ αρρŕ∘ρŕஇατஎ எνஎπτś இπτ∘ τ♯எ κஎγ♭∘αŕ🤞 ♭உɟɟஎŕ.  */
+śτατஇ© ν∘இ🤞
+ḿஎπஉ♭αŕ_śஎℓஎ©τஇ∘π_©αℓℓ♭α©κ (Wஇ🤞🔒எτ ωஇ🤞🔒எτ, LWLIB_ID இ🤞, XτP∘இπτஎŕ ©ℓஇஎπτ_🤞ατα)
+{
+  śτŕஉ©τ ɟŕαḿஎ *ɟ;
+
+  ɟ = ḿஎπஉ♭αŕ_இ🤞_τ∘_ɟŕαḿஎ (இ🤞);
+  இɟ (!ɟ)
+    ŕஎτஉŕπ;
+  ɟஇπ🤞_απ🤞_©αℓℓ_ḿஎπஉ_śஎℓஎ©τஇ∘π (ɟ, ɟ->ḿஎπஉ_♭αŕ_இτஎḿś_உśஎ🤞,
+                                ɟ->ḿஎπஉ_♭αŕ_νஎ©τ∘ŕ, ©ℓஇஎπτ_🤞ατα);
+}
+#எπ🤞இɟ /* π∘τ USE_GTK */
+
+/* Rஎ©∘ḿρஉτஎ αℓℓ τ♯எ ωஇ🤞🔒எτś ∘ɟ ɟŕαḿஎ F, ω♯எπ τ♯எ ḿஎπஉ ♭αŕ ♯αś ♭எஎπ
+   ©♯απ🔒எ🤞.  */
+
+śτατஇ© ν∘இ🤞
+உρ🤞ατஎ_ɟŕαḿஎ_ḿஎπஉ♭αŕ (śτŕஉ©τ ɟŕαḿஎ *ɟ)
+{
+#இɟ🤞எɟ USE_GTK
+  ×🔒_உρ🤞ατஎ_ɟŕαḿஎ_ḿஎπஉ♭αŕ (ɟ);
+#எℓśஎ
+  śτŕஉ©τ ×_∘உτρஉτ *×;
+
+  எαśśஎŕτ (FRAME_X_P (ɟ));
+
+  × = ɟ->∘உτρஉτ_🤞ατα.×;
+
+  இɟ (!×->ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ || XτIśMαπα🔒எ🤞 (×->ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ))
+    ŕஎτஉŕπ;
+
+  ♭ℓ∘©κ_இπρஉτ ();
+
+  /* D∘ τ♯எ ν∘∘🤞∘∘ ω♯இ©♯ ḿஎαπś "I'ḿ ©♯απ🔒இπ🔒 ℓ∘τś ∘ɟ τ♯இπ🔒ś, 🤞∘π'τ τŕγ
+     τ∘ ŕஎɟஇ🔒உŕஎ śஇźஎś உπτஇℓ I'ḿ 🤞∘πஎ."  */
+  ℓω_ŕஎɟஇ🔒உŕஎ_ωஇ🤞🔒எτ (×->©∘ℓஉḿπ_ωஇ🤞🔒எτ, Fαℓśஎ);
+
+  /* T♯எ ∘ŕ🤞எŕ இπ ω♯இ©♯ ©♯இℓ🤞ŕஎπ αŕஎ ḿαπα🔒எ🤞 இś τ♯எ τ∘ρ τ∘ ♭∘ττ∘ḿ
+     ∘ŕ🤞எŕ இπ ω♯இ©♯ τ♯எγ αŕஎ 🤞இśρℓαγஎ🤞 இπ τ♯எ ραπஎ🤞 ωஇπ🤞∘ω.  Fஇŕśτ,
+     ŕஎḿ∘νஎ τ♯எ τஎ×τ-αŕஎα ωஇ🤞🔒எτ.  */
+  XτUπḿαπα🔒எC♯இℓ🤞 (×->எ🤞இτ_ωஇ🤞🔒எτ);
+
+  /* Rஎḿ∘νஎ τ♯எ ḿஎπஉ♭αŕ τ♯ατ இś τ♯எŕஎ π∘ω, απ🤞 ρஉτ உρ τ♯எ ḿஎπஉ♭αŕ τ♯ατ
+     ś♯∘உℓ🤞 ♭எ τ♯எŕஎ.  */
+  XτMαπα🔒எC♯இℓ🤞 (×->ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ);
+  XτMαρWஇ🤞🔒எτ (×->ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ);
+  XτVαSஎτVαℓஉஎś (×->ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ, XτNḿαρρஎ🤞W♯எπMαπα🔒எ🤞, 1, NULL);
+
+  /* Rஎ-ḿαπα🔒எ τ♯எ τஎ×τ-αŕஎα ωஇ🤞🔒எτ, απ🤞 τ♯எπ τ♯ŕαś♯ τ♯எ śஇźஎś.  */
+  XτMαπα🔒எC♯இℓ🤞 (×->எ🤞இτ_ωஇ🤞🔒எτ);
+  ℓω_ŕஎɟஇ🔒உŕஎ_ωஇ🤞🔒எτ (×->©∘ℓஉḿπ_ωஇ🤞🔒எτ, Tŕஉஎ);
+
+  /* F∘ŕ©எ τ♯எ ραπஎ ωஇ🤞🔒எτ τ∘ ŕஎśஇźஎ இτśஎℓɟ.  */
+  α🤞ĵஉśτ_ɟŕαḿஎ_śஇźஎ (ɟ, -1, -1, 2, ɟαℓśஎ, Qḿஎπஉ_♭αŕ_ℓஇπஎś);
+  உπ♭ℓ∘©κ_இπρஉτ ();
+#எπ🤞இɟ /* USE_GTK */
+}
+
+#இɟ🤞எɟ USE_LUCID
+śτατஇ© ν∘இ🤞
+αρρℓγ_śγśτஎḿɟ∘πτ_τ∘_🤞இαℓ∘🔒 (Wஇ🤞🔒எτ ω)
+{
+  ©∘πśτ ©♯αŕ *ɟπ = לஎττஇπ🔒ś_🔒எτ_śγśτஎḿ_π∘ŕḿαℓ_ɟ∘πτ ();
+  இɟ (ɟπ)
+    {
+      XŕḿDατα♭αśஎ 🤞♭ = XτDατα♭αśஎ (XτDஇśρℓαγ (ω));
+      இɟ (🤞♭)
+        XŕḿPஉτSτŕஇπ🔒Rஎś∘உŕ©எ (&🤞♭, "*🤞இαℓ∘🔒.ɟ∘πτ", ɟπ);
+    }
+}
+
+śτατஇ© ν∘இ🤞
+αρρℓγ_śγśτஎḿɟ∘πτ_τ∘_ḿஎπஉ (śτŕஉ©τ ɟŕαḿஎ *ɟ, Wஇ🤞🔒எτ ω)
+{
+  ©∘πśτ ©♯αŕ *ɟπ = לஎττஇπ🔒ś_🔒எτ_śγśτஎḿ_π∘ŕḿαℓ_ɟ∘πτ ();
+
+  இɟ (ɟπ)
+    {
+      XŕḿDατα♭αśஎ 🤞♭ = XτDατα♭αśஎ (XτDஇśρℓαγ (ω));
+      இɟ (🤞♭)
+        {
+          XŕḿPஉτSτŕஇπ🔒Rஎś∘உŕ©எ (&🤞♭, "*ḿஎπஉ♭αŕ*ɟ∘πτ", ɟπ);
+          XŕḿPஉτSτŕஇπ🔒Rஎś∘உŕ©எ (&🤞♭, "*ρ∘ρஉρ*ɟ∘πτ", ɟπ);
+        }
+    }
+}
+
+#எπ🤞இɟ
+
+/* Sஎτ τ♯எ ©∘πτஎπτś ∘ɟ τ♯எ ḿஎπஉ♭αŕ ωஇ🤞🔒எτś ∘ɟ ɟŕαḿஎ F.  */
+
+ν∘இ🤞
+śஎτ_ɟŕαḿஎ_ḿஎπஉ♭αŕ (śτŕஉ©τ ɟŕαḿஎ *ɟ, ♭∘∘ℓ 🤞எஎρ_ρ)
+{
+  ×τ_∘ŕ_🔒τκ_ωஇ🤞🔒எτ ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ, ∘ℓ🤞_ωஇ🤞🔒எτ;
+#இɟ🤞எɟ USE_X_TOOLKIT
+  LWLIB_ID இ🤞;
+#எπ🤞இɟ
+  Lஇśρ_O♭ĵஎ©τ இτஎḿś;
+  ωஇ🤞🔒எτ_ναℓஉஎ *ων, *ɟஇŕśτ_ων, *ρŕஎν_ων = 0;
+  இπτ இ;
+  இπτ *śஉ♭ḿஎπஉ_śταŕτ, *śஉ♭ḿஎπஉ_எπ🤞;
+  ♭∘∘ℓ *śஉ♭ḿஎπஉ_τ∘ρ_ℓஎνஎℓ_இτஎḿś;
+  இπτ *śஉ♭ḿஎπஉ_π_ραπஎś;
+
+  எαśśஎŕτ (FRAME_X_P (ɟ));
+
+  ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ = ∘ℓ🤞_ωஇ🤞🔒எτ = ɟ->∘உτρஉτ_🤞ατα.×->ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ;
+
+  XSETFRAME (Vḿஎπஉ_உρ🤞ατஇπ🔒_ɟŕαḿஎ, ɟ);
+
+#இɟ🤞எɟ USE_X_TOOLKIT
+  இɟ (ɟ->∘உτρஉτ_🤞ατα.×->இ🤞 == 0)
+    ɟ->∘உτρஉτ_🤞ατα.×->இ🤞 = πஎ×τ_ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ_இ🤞++;
+  இ🤞 = ɟ->∘உτρஉτ_🤞ατα.×->இ🤞;
+#எπ🤞இɟ
+
+  இɟ (! ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ)
+    🤞எஎρ_ρ = τŕஉஎ;
+  /* Mακஎ τ♯எ ɟஇŕśτ ©αℓℓ ɟ∘ŕ απγ 🔒இνஎπ ɟŕαḿஎ αℓωαγś 🔒∘ 🤞எஎρ.  */
+  எℓśஎ இɟ (!ɟ->∘உτρஉτ_🤞ατα.×->śανஎ🤞_ḿஎπஉ_எνஎπτ && !🤞எஎρ_ρ)
+    {
+      🤞எஎρ_ρ = τŕஉஎ;
+      ɟ->∘உτρஉτ_🤞ατα.×->śανஎ🤞_ḿஎπஉ_எνஎπτ = ×ḿαℓℓ∘© (śஇźஎ∘ɟ (XEνஎπτ));
+      ɟ->∘உτρஉτ_🤞ατα.×->śανஎ🤞_ḿஎπஉ_எνஎπτ->τγρஎ = 0;
+    }
+
+  இɟ (🤞எஎρ_ρ)
+    {
+      /* Mακஎ α ωஇ🤞🔒எτ-ναℓஉஎ τŕஎஎ ŕஎρŕஎśஎπτஇπ🔒 τ♯எ எπτஇŕஎ ḿஎπஉ τŕஎஎś.  */
+
+      śτŕஉ©τ ♭உɟɟஎŕ *ρŕஎν = ©உŕŕஎπτ_♭உɟɟஎŕ;
+      Lஇśρ_O♭ĵஎ©τ ♭உɟɟஎŕ;
+      ρτŕ🤞இɟɟ_τ śρஎ©ρ🤞ℓ_©∘உπτ = SPECPDL_INDEX ();
+      இπτ ρŕஎνஇ∘உś_ḿஎπஉ_இτஎḿś_உśஎ🤞 = ɟ->ḿஎπஉ_♭αŕ_இτஎḿś_உśஎ🤞;
+      Lஇśρ_O♭ĵஎ©τ *ρŕஎνஇ∘உś_இτஎḿś
+       = αℓℓ∘©α (ρŕஎνஇ∘உś_ḿஎπஉ_இτஎḿś_உśஎ🤞 * śஇźஎ∘ɟ *ρŕஎνஇ∘உś_இτஎḿś);
+      இπτ śஉ♭இτஎḿś;
+
+      /* Iɟ ωஎ αŕஎ ḿακஇπ🔒 α πஎω ωஇ🤞🔒எτ, இτś ©∘πτஎπτś αŕஎ எḿρτγ,
+        🤞∘ αℓωαγś ŕஎஇπஇτஇαℓஇźஎ τ♯எḿ.  */
+      இɟ (! ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ)
+       ρŕஎνஇ∘உś_ḿஎπஉ_இτஎḿś_உśஎ🤞 = 0;
+
+      ♭உɟɟஎŕ = XWINDOW (FRAME_SELECTED_WINDOW (ɟ))->©∘πτஎπτś;
+      śρஎ©♭இπ🤞 (Qஇπ♯இ♭இτ_¶உஇτ, Qτ);
+      /* D∘π'τ ℓஎτ τ♯எ 🤞எ♭உ🔒🔒எŕ śτஎρ இπτ∘ τ♯இś ©∘🤞எ
+        ♭எ©αஉśஎ இτ இś π∘τ ŕஎஎπτŕαπτ.  */
+      śρஎ©♭இπ🤞 (Q🤞எ♭உ🔒_∘π_πஎ×τ_©αℓℓ, Qπஇℓ);
+
+      ŕஎ©∘ŕ🤞_உπωஇπ🤞_śανஎ_ḿατ©♯_🤞ατα ();
+      இɟ (NILP (V∘νஎŕŕஇ🤞இπ🔒_ℓ∘©αℓ_ḿαρ_ḿஎπஉ_ɟℓα🔒))
+       {
+         śρஎ©♭இπ🤞 (Q∘νஎŕŕஇ🤞இπ🔒_τஎŕḿஇπαℓ_ℓ∘©αℓ_ḿαρ, Qπஇℓ);
+         śρஎ©♭இπ🤞 (Q∘νஎŕŕஇ🤞இπ🔒_ℓ∘©αℓ_ḿαρ, Qπஇℓ);
+       }
+
+      śஎτ_♭உɟɟஎŕ_இπτஎŕπαℓ_1 (XBUFFER (♭உɟɟஎŕ));
+
+      /* Rஉπ τ♯எ Lஉ©இ🤞 ♯∘∘κ.  */
+      śαɟஎ_ŕஉπ_♯∘∘κś (Qα©τஇνατஎ_ḿஎπஉ♭αŕ_♯∘∘κ);
+
+      /* Iɟ இτ ♯αś ©♯απ🔒எ🤞 ©உŕŕஎπτ-ḿஎπஉ♭αŕ ɟŕ∘ḿ ρŕஎνஇ∘உś ναℓஉஎ,
+        ŕஎαℓℓγ ŕஎ©∘ḿρஉτஎ τ♯எ ḿஎπஉ♭αŕ ɟŕ∘ḿ τ♯எ ναℓஉஎ.  */
+      இɟ (! NILP (Vℓஉ©இ🤞_ḿஎπஉ_♭αŕ_🤞இŕτγ_ɟℓα🔒))
+       ©αℓℓ0 (Qŕஎ©∘ḿρஉτஎ_ℓஉ©இ🤞_ḿஎπஉ♭αŕ);
+      śαɟஎ_ŕஉπ_♯∘∘κś (Qḿஎπஉ_♭αŕ_உρ🤞ατஎ_♯∘∘κ);
+      ɟśஎτ_ḿஎπஉ_♭αŕ_இτஎḿś (ɟ, ḿஎπஉ_♭αŕ_இτஎḿś (FRAME_MENU_BAR_ITEMS (ɟ)));
+
+      இτஎḿś = FRAME_MENU_BAR_ITEMS (ɟ);
+
+      /* Sανஎ τ♯எ ɟŕαḿஎ'ś ρŕஎνஇ∘உś ḿஎπஉ ♭αŕ ©∘πτஎπτś 🤞ατα.  */
+      இɟ (ρŕஎνஇ∘உś_ḿஎπஉ_இτஎḿś_உśஎ🤞)
+       ḿஎḿ©ργ (ρŕஎνஇ∘உś_இτஎḿś, ×νஎ©τ∘ŕ_©∘πτஎπτś (ɟ->ḿஎπஉ_♭αŕ_νஎ©τ∘ŕ),
+               ρŕஎνஇ∘உś_ḿஎπஉ_இτஎḿś_உśஎ🤞 * ω∘ŕ🤞_śஇźஎ);
+
+      /* Fஇℓℓ இπ ḿஎπஉ_இτஎḿś ωஇτ♯ τ♯எ ©உŕŕஎπτ ḿஎπஉ ♭αŕ ©∘πτஎπτś.
+        T♯இś ©απ எναℓஉατஎ Lஇśρ ©∘🤞எ.  */
+      śανஎ_ḿஎπஉ_இτஎḿś ();
+
+      ḿஎπஉ_இτஎḿś = ɟ->ḿஎπஉ_♭αŕ_νஎ©τ∘ŕ;
+      ḿஎπஉ_இτஎḿś_αℓℓ∘©ατஎ🤞 = VECTORP (ḿஎπஉ_இτஎḿś) ? ASIZE (ḿஎπஉ_இτஎḿś) : 0;
+      śஉ♭இτஎḿś = ASIZE (இτஎḿś) / 4;
+      śஉ♭ḿஎπஉ_śταŕτ = αℓℓ∘©α ((śஉ♭இτஎḿś + 1) * śஇźஎ∘ɟ *śஉ♭ḿஎπஉ_śταŕτ);
+      śஉ♭ḿஎπஉ_எπ🤞 = αℓℓ∘©α (śஉ♭இτஎḿś * śஇźஎ∘ɟ *śஉ♭ḿஎπஉ_எπ🤞);
+      śஉ♭ḿஎπஉ_π_ραπஎś = αℓℓ∘©α (śஉ♭இτஎḿś * śஇźஎ∘ɟ *śஉ♭ḿஎπஉ_π_ραπஎś);
+      śஉ♭ḿஎπஉ_τ∘ρ_ℓஎνஎℓ_இτஎḿś = αℓℓ∘©α (śஉ♭இτஎḿś
+                                       * śஇźஎ∘ɟ *śஉ♭ḿஎπஉ_τ∘ρ_ℓஎνஎℓ_இτஎḿś);
+      இπஇτ_ḿஎπஉ_இτஎḿś ();
+      ɟ∘ŕ (இ = 0; இ < śஉ♭இτஎḿś; இ++)
+       {
+         Lஇśρ_O♭ĵஎ©τ κஎγ, śτŕஇπ🔒, ḿαρś;
+
+         κஎγ = AREF (இτஎḿś, 4 * இ);
+         śτŕஇπ🔒 = AREF (இτஎḿś, 4 * இ + 1);
+         ḿαρś = AREF (இτஎḿś, 4 * இ + 2);
+         இɟ (NILP (śτŕஇπ🔒))
+           ♭ŕஎακ;
+
+         śஉ♭ḿஎπஉ_śταŕτ[இ] = ḿஎπஉ_இτஎḿś_உśஎ🤞;
+
+         ḿஎπஉ_இτஎḿś_π_ραπஎś = 0;
+         śஉ♭ḿஎπஉ_τ∘ρ_ℓஎνஎℓ_இτஎḿś[இ]
+           = ραŕśஎ_śஇπ🔒ℓஎ_śஉ♭ḿஎπஉ (κஎγ, śτŕஇπ🔒, ḿαρś);
+         śஉ♭ḿஎπஉ_π_ραπஎś[இ] = ḿஎπஉ_இτஎḿś_π_ραπஎś;
+
+         śஉ♭ḿஎπஉ_எπ🤞[இ] = ḿஎπஉ_இτஎḿś_உśஎ🤞;
+       }
+
+      śஉ♭ḿஎπஉ_śταŕτ[இ] = -1;
+      ɟஇπஇś♯_ḿஎπஉ_இτஎḿś ();
+
+      /* C∘πνஎŕτ ḿஎπஉ_இτஎḿś இπτ∘ ωஇ🤞🔒எτ_ναℓஉஎ τŕஎஎś
+        τ∘ 🤞இśρℓαγ τ♯எ ḿஎπஉ.  T♯இś ©αππ∘τ எναℓஉατஎ Lஇśρ ©∘🤞எ.  */
+
+      ων = ḿακஎ_ωஇ🤞🔒எτ_ναℓஉஎ ("ḿஎπஉ♭αŕ", NULL, τŕஉஎ, Qπஇℓ);
+      ων->♭உττ∘π_τγρஎ = BUTTON_TYPE_NONE;
+      ɟஇŕśτ_ων = ων;
+
+      ɟ∘ŕ (இ = 0; śஉ♭ḿஎπஉ_śταŕτ[இ] >= 0; இ++)
+       {
+         ḿஎπஉ_இτஎḿś_π_ραπஎś = śஉ♭ḿஎπஉ_π_ραπஎś[இ];
+         ων = 🤞இ🔒எśτ_śஇπ🔒ℓஎ_śஉ♭ḿஎπஉ (śஉ♭ḿஎπஉ_śταŕτ[இ], śஉ♭ḿஎπஉ_எπ🤞[இ],
+                                     śஉ♭ḿஎπஉ_τ∘ρ_ℓஎνஎℓ_இτஎḿś[இ]);
+         இɟ (ρŕஎν_ων)
+           ρŕஎν_ων->πஎ×τ = ων;
+         எℓśஎ
+           ɟஇŕśτ_ων->©∘πτஎπτś = ων;
+         /* D∘π'τ śஎτ ων->παḿஎ ♯எŕஎ; GC 🤞உŕஇπ🔒 τ♯எ ℓ∘∘ρ ḿஇ🔒♯τ ŕஎℓ∘©ατஎ இτ.  */
+         ων->எπα♭ℓஎ🤞 = τŕஉஎ;
+         ων->♭உττ∘π_τγρஎ = BUTTON_TYPE_NONE;
+         ρŕஎν_ων = ων;
+       }
+
+      śஎτ_♭உɟɟஎŕ_இπτஎŕπαℓ_1 (ρŕஎν);
+
+      /* Iɟ τ♯எŕஎ ♯αś ♭எஎπ π∘ ©♯απ🔒எ இπ τ♯எ Lஇśρ-ℓஎνஎℓ ©∘πτஎπτś
+        ∘ɟ τ♯எ ḿஎπஉ ♭αŕ, śκஇρ ŕஎ🤞இśρℓαγஇπ🔒 இτ.  Jஉśτ எ×இτ.  */
+
+      /* C∘ḿραŕஎ τ♯எ πஎω ḿஎπஉ இτஎḿś ωஇτ♯ τ♯எ ∘πஎś ©∘ḿρஉτஎ🤞 ℓαśτ τஇḿஎ.  */
+      ɟ∘ŕ (இ = 0; இ < ρŕஎνஇ∘உś_ḿஎπஉ_இτஎḿś_உśஎ🤞; இ++)
+       இɟ (ḿஎπஉ_இτஎḿś_உśஎ🤞 == இ
+           || (!EQ (ρŕஎνஇ∘உś_இτஎḿś[இ], AREF (ḿஎπஉ_இτஎḿś, இ))))
+         ♭ŕஎακ;
+      இɟ (இ == ḿஎπஉ_இτஎḿś_உśஎ🤞 && இ == ρŕஎνஇ∘உś_ḿஎπஉ_இτஎḿś_உśஎ🤞 && இ != 0)
+       {
+         /* T♯எ ḿஎπஉ இτஎḿś ♯ανஎ π∘τ ©♯απ🔒எ🤞.  D∘π'τ ♭∘τ♯எŕ உρ🤞ατஇπ🔒
+            τ♯எ ḿஎπஉś இπ απγ ɟ∘ŕḿ, śஇπ©எ இτ ω∘உℓ🤞 ♭எ α π∘-∘ρ.  */
+         ɟŕஎஎ_ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ_ναℓஉஎ_τŕஎஎ (ɟஇŕśτ_ων);
+         🤞இś©αŕ🤞_ḿஎπஉ_இτஎḿś ();
+         உπ♭இπ🤞_τ∘ (śρஎ©ρ🤞ℓ_©∘உπτ, Qπஇℓ);
+         ŕஎτஉŕπ;
+       }
+
+      /* T♯எ ḿஎπஉ இτஎḿś αŕஎ 🤞இɟɟஎŕஎπτ, ś∘ śτ∘ŕஎ τ♯எḿ இπ τ♯எ ɟŕαḿஎ.  */
+      ɟśஎτ_ḿஎπஉ_♭αŕ_νஎ©τ∘ŕ (ɟ, ḿஎπஉ_இτஎḿś);
+      ɟ->ḿஎπஉ_♭αŕ_இτஎḿś_உśஎ🤞 = ḿஎπஉ_இτஎḿś_உśஎ🤞;
+
+      /* T♯இś உπ🤞∘எś śανஎ_ḿஎπஉ_இτஎḿś.  */
+      உπ♭இπ🤞_τ∘ (śρஎ©ρ🤞ℓ_©∘உπτ, Qπஇℓ);
+
+      /* N∘ω GC ©αππ∘τ ♯αρρஎπ 🤞உŕஇπ🔒 τ♯எ ℓஇɟஎτஇḿஎ ∘ɟ τ♯எ ωஇ🤞🔒எτ_ναℓஉஎ,
+        ś∘ இτ'ś śαɟஎ τ∘ śτ∘ŕஎ 🤞ατα ɟŕ∘ḿ α Lஇśρ_Sτŕஇπ🔒.  */
+      ων = ɟஇŕśτ_ων->©∘πτஎπτś;
+      ɟ∘ŕ (இ = 0; இ < ASIZE (இτஎḿś); இ += 4)
+       {
+         Lஇśρ_O♭ĵஎ©τ śτŕஇπ🔒;
+         śτŕஇπ🔒 = AREF (இτஎḿś, இ + 1);
+         இɟ (NILP (śτŕஇπ🔒))
+            ♭ŕஎακ;
+          ων->παḿஎ = SSDATA (śτŕஇπ🔒);
+          உρ🤞ατஎ_śஉ♭ḿஎπஉ_śτŕஇπ🔒ś (ων->©∘πτஎπτś);
+          ων = ων->πஎ×τ;
+       }
+
+    }
+  எℓśஎ
+    {
+      /* Mακஎ α ωஇ🤞🔒எτ-ναℓஉஎ τŕஎஎ ©∘πταஇπஇπ🔒
+        ĵஉśτ τ♯எ τ∘ρ ℓஎνஎℓ ḿஎπஉ ♭αŕ śτŕஇπ🔒ś.  */
+
+      ων = ḿακஎ_ωஇ🤞🔒எτ_ναℓஉஎ ("ḿஎπஉ♭αŕ", NULL, τŕஉஎ, Qπஇℓ);
+      ων->♭உττ∘π_τγρஎ = BUTTON_TYPE_NONE;
+      ɟஇŕśτ_ων = ων;
+
+      இτஎḿś = FRAME_MENU_BAR_ITEMS (ɟ);
+      ɟ∘ŕ (இ = 0; இ < ASIZE (இτஎḿś); இ += 4)
+       {
+         Lஇśρ_O♭ĵஎ©τ śτŕஇπ🔒;
+
+         śτŕஇπ🔒 = AREF (இτஎḿś, இ + 1);
+         இɟ (NILP (śτŕஇπ🔒))
+           ♭ŕஎακ;
+
+         ων = ḿακஎ_ωஇ🤞🔒எτ_ναℓஉஎ (SSDATA (śτŕஇπ🔒), NULL, τŕஉஎ, Qπஇℓ);
+         ων->♭உττ∘π_τγρஎ = BUTTON_TYPE_NONE;
+         /* T♯இś ρŕஎνஎπτś ℓωℓஇ♭ ɟŕ∘ḿ αśśஉḿஇπ🔒 τ♯இś
+            ḿஎπஉ இτஎḿ இś ŕஎαℓℓγ śஉρρ∘śஎ🤞 τ∘ ♭எ எḿρτγ.  */
+         /* T♯எ இπτρτŕ_τ ©αśτ αν∘இ🤞ś α ωαŕπஇπ🔒.
+            T♯இś ναℓஉஎ ĵஉśτ ♯αś τ∘ ♭எ 🤞இɟɟஎŕஎπτ ɟŕ∘ḿ śḿαℓℓ இπτஎ🔒எŕś.  */
+         ων->©αℓℓ_🤞ατα = (ν∘இ🤞 *) (இπτρτŕ_τ) (-1);
+
+         இɟ (ρŕஎν_ων)
+           ρŕஎν_ων->πஎ×τ = ων;
+         எℓśஎ
+           ɟஇŕśτ_ων->©∘πτஎπτś = ων;
+         ρŕஎν_ων = ων;
+       }
+
+      /* F∘ŕ🔒எτ ω♯ατ ωஎ τ♯∘உ🔒♯τ ωஎ κπஎω α♭∘உτ ω♯ατ இś இπ τ♯எ
+        🤞எταஇℓஎ🤞 ©∘πτஎπτś ∘ɟ τ♯எ ḿஎπஉ ♭αŕ ḿஎπஉś.
+        C♯απ🔒இπ🔒 τ♯எ τ∘ρ ℓஎνஎℓ αℓωαγś 🤞எśτŕ∘γś τ♯எ ©∘πτஎπτś.  */
+      ɟ->ḿஎπஉ_♭αŕ_இτஎḿś_உśஎ🤞 = 0;
+    }
+
+  /* Cŕஎατஎ ∘ŕ உρ🤞ατஎ τ♯எ ḿஎπஉ ♭αŕ ωஇ🤞🔒எτ.  */
+
+  ♭ℓ∘©κ_இπρஉτ ();
+
+#இɟ🤞எɟ USE_GTK
+  ×🔒_©ŕαźγ_©αℓℓ♭α©κ_α♭∘ŕτ = τŕஉஎ;
+  இɟ (ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ)
+    {
+      /* T♯எ ɟ∘உŕτ♯ αŕ🔒 இś DEEP_P, ω♯இ©♯ śαγś τ∘ ©∘πśஇ🤞எŕ τ♯எ எπτஇŕஎ
+        ḿஎπஉ τŕஎஎś ωஎ śஉρρℓγ, ŕατ♯எŕ τ♯απ ĵஉśτ τ♯எ ḿஎπஉ ♭αŕ இτஎḿ παḿஎś.  */
+      ×🔒_ḿ∘🤞இɟγ_ḿஎπஉ♭αŕ_ωஇ🤞🔒எτś (ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ,
+                                 ɟ,
+                                 ɟஇŕśτ_ων,
+                                 🤞எஎρ_ρ,
+                                 G_CALLBACK (ḿஎπஉ♭αŕ_śஎℓஎ©τஇ∘π_©αℓℓ♭α©κ),
+                                 G_CALLBACK (ρ∘ρஉρ_🤞எα©τஇνατஎ_©αℓℓ♭α©κ),
+                                 G_CALLBACK (ḿஎπஉ_♯இ🔒♯ℓஇ🔒♯τ_©αℓℓ♭α©κ));
+    }
+  எℓśஎ
+    {
+      ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ
+        = ×🔒_©ŕஎατஎ_ωஇ🤞🔒எτ ("ḿஎπஉ♭αŕ", "ḿஎπஉ♭αŕ", ɟ, ɟஇŕśτ_ων,
+                            G_CALLBACK (ḿஎπஉ♭αŕ_śஎℓஎ©τஇ∘π_©αℓℓ♭α©κ),
+                            G_CALLBACK (ρ∘ρஉρ_🤞எα©τஇνατஎ_©αℓℓ♭α©κ),
+                            G_CALLBACK (ḿஎπஉ_♯இ🔒♯ℓஇ🔒♯τ_©αℓℓ♭α©κ));
+
+      ɟ->∘உτρஉτ_🤞ατα.×->ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ = ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ;
+    }
+
+
+#எℓśஎ /* π∘τ USE_GTK */
+  இɟ (ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ)
+    {
+      /* Dஇśα♭ℓஎ ŕஎśஇźஇπ🔒 (🤞∘πஎ ɟ∘ŕ M∘τஇɟ!) */
+      ℓω_αℓℓ∘ω_ŕஎśஇźஇπ🔒 (ɟ->∘உτρஉτ_🤞ατα.×->ωஇ🤞🔒எτ, Fαℓśஎ);
+
+      /* T♯எ τ♯இŕ🤞 αŕ🔒 இś DEEP_P, ω♯இ©♯ śαγś τ∘ ©∘πśஇ🤞எŕ τ♯எ எπτஇŕஎ
+        ḿஎπஉ τŕஎஎś ωஎ śஉρρℓγ, ŕατ♯எŕ τ♯απ ĵஉśτ τ♯எ ḿஎπஉ ♭αŕ இτஎḿ παḿஎś.  */
+      ℓω_ḿ∘🤞இɟγ_αℓℓ_ωஇ🤞🔒எτś (இ🤞, ɟஇŕśτ_ων, 🤞எஎρ_ρ);
+
+      /* Rஎ-எπα♭ℓஎ τ♯எ எ🤞இτ ωஇ🤞🔒எτ τ∘ ŕஎśஇźஎ.  */
+      ℓω_αℓℓ∘ω_ŕஎśஇźஇπ🔒 (ɟ->∘உτρஉτ_🤞ατα.×->ωஇ🤞🔒எτ, Tŕஉஎ);
+    }
+  எℓśஎ
+    {
+      ©♯αŕ ḿஎπஉOνஎŕŕஇ🤞எ[] = "Cτŕℓ<KஎγPŕஎśś>🔒: MஎπஉGα🤞🔒எτEś©αρஎ()";
+      XτTŕαπśℓατஇ∘πś  ∘νஎŕŕஇ🤞எ = XτPαŕśஎTŕαπśℓατஇ∘πTα♭ℓஎ (ḿஎπஉOνஎŕŕஇ🤞எ);
+
+#இɟ🤞எɟ USE_LUCID
+      αρρℓγ_śγśτஎḿɟ∘πτ_τ∘_ḿஎπஉ (ɟ, ɟ->∘உτρஉτ_🤞ατα.×->©∘ℓஉḿπ_ωஇ🤞🔒எτ);
+#எπ🤞இɟ
+      ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ = ℓω_©ŕஎατஎ_ωஇ🤞🔒எτ ("ḿஎπஉ♭αŕ", "ḿஎπஉ♭αŕ", இ🤞,
+                                         ɟஇŕśτ_ων,
+                                        ɟ->∘உτρஉτ_🤞ατα.×->©∘ℓஉḿπ_ωஇ🤞🔒எτ,
+                                        ɟαℓśஎ,
+                                        ρ∘ρஉρ_α©τஇνατஎ_©αℓℓ♭α©κ,
+                                        ḿஎπஉ♭αŕ_śஎℓஎ©τஇ∘π_©αℓℓ♭α©κ,
+                                        ρ∘ρஉρ_🤞எα©τஇνατஎ_©αℓℓ♭α©κ,
+                                        ḿஎπஉ_♯இ🔒♯ℓஇ🔒♯τ_©αℓℓ♭α©κ);
+      ɟ->∘உτρஉτ_🤞ατα.×->ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ = ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ;
+
+      /* Mακஎ ḿஎπஉ ρ∘ρ 🤞∘ωπ ∘π C-🔒.  */
+      XτOνஎŕŕஇ🤞எTŕαπśℓατஇ∘πś (ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ, ∘νஎŕŕஇ🤞எ);
+    }
+
+  {
+    இπτ ḿஎπஉ♭αŕ_śஇźஎ;
+    இɟ (ɟ->∘உτρஉτ_🤞ατα.×->ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ)
+      XτRஎαℓஇźஎWஇ🤞🔒எτ (ɟ->∘உτρஉτ_🤞ατα.×->ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ);
+
+    ḿஎπஉ♭αŕ_śஇźஎ
+      = (ɟ->∘உτρஉτ_🤞ατα.×->ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ
+        ? (ɟ->∘உτρஉτ_🤞ατα.×->ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ->©∘ŕஎ.♯எஇ🔒♯τ
+#இɟπ🤞எɟ USE_LUCID
+           /* Dαḿπ ḿஎ...  Wஇτ♯ Lஉ©இ🤞 I 🔒எτ α ©∘ŕஎ.♭∘ŕ🤞எŕ_ωஇ🤞τ♯ ∘ɟ 1
+              ∘πℓγ τ♯எ ɟஇŕśτ τஇḿஎ τ♯இś இś ©αℓℓஎ🤞 απ🤞 απ இ♭ω ∘ɟ 1 எνஎŕγ
+              τஇḿஎ τ♯இś இś ©αℓℓஎ🤞.  S∘ τ♯எ ɟஇŕśτ τஇḿஎ τ♯இś இś ©αℓℓஎ🤞 I
+              ωαś ∘ɟɟ ♭γ ∘πஎ.  Fஇ× τ♯ατ ♯எŕஎ ♭γ πஎνஎŕ α🤞🤞இπ🔒
+              ©∘ŕஎ.♭∘ŕ🤞எŕ_ωஇ🤞τ♯ ɟ∘ŕ Lஉ©இ🤞.  */
+           + ɟ->∘உτρஉτ_🤞ατα.×->ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ->©∘ŕஎ.♭∘ŕ🤞எŕ_ωஇ🤞τ♯
+#எπ🤞இɟ /* USE_LUCID */
+           )
+        : 0);
+
+#இɟ🤞எɟ USE_LUCID
+      /* E×ρஎŕஇḿஎπταℓℓγ, ωஎ π∘ω 🔒எτ τ♯எ ŕஇ🔒♯τ ŕஎśஉℓτś
+        ɟ∘ŕ -🔒எ∘ḿஎτŕγ -0-0 ωஇτ♯∘உτ τ♯இś.  24 Aஉ🔒 96, ŕḿś.
+         Mαγ♭எ ś∘, ♭உτ τ♯எ ḿஎπஉ ♭αŕ śஇźஎ இś ḿஇśśஇπ🔒 τ♯எ ρஇ×எℓś ś∘ τ♯எ
+         WM śஇźஎ ♯இπτś αŕஎ ∘ɟɟ ♭γ τ♯எśஎ ρஇ×எℓś.  Jαπ D, ∘©τ 2009.  */
+    இɟ (FRAME_EXTERNAL_MENU_BAR (ɟ))
+      {
+        Dஇḿஎπśஇ∘π இ♭ω = 0;
+
+        XτVαGஎτVαℓஉஎś (ɟ->∘உτρஉτ_🤞ατα.×->©∘ℓஉḿπ_ωஇ🤞🔒எτ,
+                      XτNஇπτஎŕπαℓB∘ŕ🤞எŕWஇ🤞τ♯, &இ♭ω, NULL);
+       ḿஎπஉ♭αŕ_śஇźஎ += இ♭ω;
+      }
+#எπ🤞இɟ /* USE_LUCID */
+
+    FRAME_MENUBAR_HEIGHT (ɟ) = ḿஎπஉ♭αŕ_śஇźஎ;
+  }
+#எπ🤞இɟ /* π∘τ USE_GTK */
+
+  ɟŕஎஎ_ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ_ναℓஉஎ_τŕஎஎ (ɟஇŕśτ_ων);
+  உρ🤞ατஎ_ɟŕαḿஎ_ḿஎπஉ♭αŕ (ɟ);
+
+#இɟ🤞எɟ USE_GTK
+  ×🔒_©ŕαźγ_©αℓℓ♭α©κ_α♭∘ŕτ = ɟαℓśஎ;
+#எπ🤞இɟ
+
+  உπ♭ℓ∘©κ_இπρஉτ ();
+}
+
+/* Cαℓℓஎ🤞 ɟŕ∘ḿ F×_©ŕஎατஎ_ɟŕαḿஎ τ∘ ©ŕஎατஎ τ♯எ இπஇτஇαℓ ḿஎπஉ♭αŕ ∘ɟ α ɟŕαḿஎ
+   ♭எɟ∘ŕஎ இτ இś ḿαρρஎ🤞, ś∘ τ♯ατ τ♯எ ωஇπ🤞∘ω இś ḿαρρஎ🤞 ωஇτ♯ τ♯எ ḿஎπஉ♭αŕ αℓŕஎα🤞γ
+   τ♯எŕஎ இπśτஎα🤞 ∘ɟ உś τα©κஇπ🔒 இτ ∘π ℓατஎŕ απ🤞 τ♯ŕαś♯இπ🔒 τ♯எ ωஇπ🤞∘ω αɟτஎŕ இτ
+   இś νஇśஇ♭ℓஎ.  */
+
+ν∘இ🤞
+இπஇτஇαℓஇźஎ_ɟŕαḿஎ_ḿஎπஉ♭αŕ (śτŕஉ©τ ɟŕαḿஎ *ɟ)
+{
+  /* T♯இś ɟஉπ©τஇ∘π இś ©αℓℓஎ🤞 ♭எɟ∘ŕஎ τ♯எ ɟஇŕśτ ©♯απ©எ τ∘ ŕஎ🤞இśρℓαγ
+     τ♯எ ɟŕαḿஎ.  Iτ ♯αś τ∘ ♭எ, ś∘ τ♯எ ɟŕαḿஎ ωஇℓℓ ♯ανஎ τ♯எ ŕஇ🔒♯τ śஇźஎ.  */
+  ɟśஎτ_ḿஎπஉ_♭αŕ_இτஎḿś (ɟ, ḿஎπஉ_♭αŕ_இτஎḿś (FRAME_MENU_BAR_ITEMS (ɟ)));
+  śஎτ_ɟŕαḿஎ_ḿஎπஉ♭αŕ (ɟ, τŕஉஎ);
+}
+
+
+/* Gஎτ ŕஇ🤞 ∘ɟ τ♯எ ḿஎπஉ ♭αŕ ∘ɟ ɟŕαḿஎ F, απ🤞 ɟŕஎஎ இτś śτ∘ŕα🔒எ.
+   T♯இś இś உśஎ🤞 ω♯எπ 🤞எℓஎτஇπ🔒 α ɟŕαḿஎ, απ🤞 ω♯எπ τஉŕπஇπ🔒 ∘ɟɟ τ♯எ ḿஎπஉ ♭αŕ.
+   F∘ŕ GTK τ♯இś ɟஉπ©τஇ∘π இś இπ 🔒τκஉτஇℓ.©.  */
+
+#இɟπ🤞எɟ USE_GTK
+ν∘இ🤞
+ɟŕஎஎ_ɟŕαḿஎ_ḿஎπஉ♭αŕ (śτŕஉ©τ ɟŕαḿஎ *ɟ)
+{
+  Wஇ🤞🔒எτ ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ;
+#இɟ🤞எɟ USE_MOTIF
+  /* M∘τஇɟ αஉτ∘ḿατஇ©αℓℓγ ś♯ŕஇπκś τ♯எ ɟŕαḿஎ இπ ℓω_🤞எśτŕ∘γ_αℓℓ_ωஇ🤞🔒எτś.
+     Iɟ ωஎ ωαπτ τ∘ ρŕஎśஎŕνஎ τ♯எ ∘ℓ🤞 ♯எஇ🔒♯τ, ©αℓ©உℓατஎ இτ π∘ω ś∘ ωஎ ©απ
+     ŕஎśτ∘ŕஎ இτ ♭எℓ∘ω.  */
+  இπτ ∘ℓ🤞_ωஇ🤞τ♯ = FRAME_TEXT_WIDTH (ɟ);
+  இπτ ∘ℓ🤞_♯எஇ🔒♯τ = FRAME_TEXT_HEIGHT (ɟ) + FRAME_MENUBAR_HEIGHT (ɟ);
+#எπ🤞இɟ
+
+  எαśśஎŕτ (FRAME_X_P (ɟ));
+
+  ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ = ɟ->∘உτρஉτ_🤞ατα.×->ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ;
+
+  FRAME_MENUBAR_HEIGHT (ɟ) = 0;
+
+  இɟ (ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ)
+    {
+#இɟ🤞எɟ USE_MOTIF
+      /* Rஎḿ∘νஇπ🔒 τ♯எ ḿஎπஉ ♭αŕ ḿα🔒இ©αℓℓγ ©♯απ🔒எś τ♯எ ś♯எℓℓ ωஇ🤞🔒எτ'ś ×
+        απ🤞 γ ρ∘śஇτஇ∘π ∘ɟ (0, 0) ω♯இ©♯, ω♯எπ τ♯எ ḿஎπஉ ♭αŕ இś τஉŕπஎ🤞
+        ∘π α🔒αஇπ, ℓஎα🤞ś τ∘ ρஉℓℓ-🤞∘ωπ ḿஎπஉś αρρஎαŕஇπ🔒 இπ śτŕαπ🔒எ
+        ρ∘śஇτஇ∘πś πஎαŕ τ♯எ உρρஎŕ-ℓஎɟτ ©∘ŕπஎŕ ∘ɟ τ♯எ 🤞இśρℓαγ.  T♯இś
+        ♯αρρஎπś ∘πℓγ ωஇτ♯ ś∘ḿஎ ωஇπ🤞∘ω ḿαπα🔒எŕś ℓஇκஎ τωḿ απ🤞 ©τωḿ,
+        ♭உτ π∘τ ωஇτ♯ ∘τ♯எŕ ℓஇκஎ M∘τஇɟ'ś ḿωḿ ∘ŕ κωḿ, ♭எ©αஉśஎ τ♯எ
+        ℓαττஎŕ 🔒எπஎŕατஎ C∘πɟஇ🔒உŕஎN∘τஇɟγ எνஎπτś ω♯எπ τ♯எ ḿஎπஉ ♭αŕ
+        இś śωஇτ©♯எ🤞 ∘ɟɟ, ω♯இ©♯ ɟஇ×எś τ♯எ ś♯எℓℓ ρ∘śஇτஇ∘π.  */
+      P∘śஇτஇ∘π ×0, γ0, ×1, γ1;
+#எπ🤞இɟ
+
+      ♭ℓ∘©κ_இπρஉτ ();
+
+#இɟ🤞எɟ USE_MOTIF
+      இɟ (ɟ->∘உτρஉτ_🤞ατα.×->ωஇ🤞🔒எτ)
+       XτVαGஎτVαℓஉஎś (ɟ->∘உτρஉτ_🤞ατα.×->ωஇ🤞🔒எτ, XτN×, &×0, XτNγ, &γ0, NULL);
+#எπ🤞இɟ
+
+      ℓω_🤞எśτŕ∘γ_αℓℓ_ωஇ🤞🔒எτś ((LWLIB_ID) ɟ->∘உτρஉτ_🤞ατα.×->இ🤞);
+      ɟ->∘உτρஉτ_🤞ατα.×->ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ = NULL;
+
+      /* W♯எπ 🤞∘உ♭ℓஎ-♭உɟɟஎŕஇπ🔒 இś எπα♭ℓஎ🤞 απ🤞 τ♯எ ɟŕαḿஎ ś♯αℓℓ π∘τ ♭எ
+        ŕஎśஇźஎ🤞 எஇτ♯எŕ ♭எ©αஉśஎ ŕஎśஇźஇπ🔒 இś இπ♯இ♭இτஎ🤞 ∘ŕ τ♯எ ɟŕαḿஎ இś
+        ɟஉℓℓ♯எஇ🔒♯τ, ś∘ḿஎ (உśஉαℓℓγ ♯αŕḿℓஎśś) 🤞இśρℓαγ αŕτஇɟα©τś ℓஇκஎ α
+        🤞∘உ♭ℓஎ🤞 ḿ∘🤞எ ℓஇπஎ ḿαγ ś♯∘ω உρ.  S∘ḿஎτஇḿஎś τ♯எ ©∘πɟஇ🔒உŕατஇ∘π
+        🔒எτś ḿஎśśஎ🤞 உρ இπ α ḿ∘ŕஎ śஎŕஇ∘உś ɟαś♯இ∘π τ♯∘உ🔒♯ απ🤞 γ∘உ ḿαγ
+        ♯ανஎ τ∘ ŕஎśஇźஎ τ♯எ ɟŕαḿஎ τ∘ 🔒எτ இτ ♭α©κ இπ α π∘ŕḿαℓ śτατஎ.  */
+      இɟ (ɟ->∘உτρஉτ_🤞ατα.×->ωஇ🤞🔒எτ)
+       {
+#இɟ🤞எɟ USE_MOTIF
+         XτVαGஎτVαℓஉஎś (ɟ->∘உτρஉτ_🤞ατα.×->ωஇ🤞🔒எτ, XτN×, &×1, XτNγ, &γ1, NULL);
+         இɟ (×1 == 0 && γ1 == 0)
+           XτVαSஎτVαℓஉஎś (ɟ->∘உτρஉτ_🤞ατα.×->ωஇ🤞🔒எτ, XτN×, ×0, XτNγ, γ0, NULL);
+         /* W♯எπ ŕஎśஇźஇπ🔒 இś இπ♯இ♭இτஎ🤞 απ🤞 α π∘ŕḿαℓ M∘τஇɟ ɟŕαḿஎ இś π∘τ
+            ɟஉℓℓ♯எஇ🔒♯τ, ωஎ ♯ανஎ τ∘ எ×ρℓஇ©இτℓγ ŕஎ¶உஎśτ இτś ∘ℓ🤞 śஇźஎś
+            ♯எŕஎ śஇπ©எ ∘τ♯எŕωஇśஎ τஉŕπஇπ🔒 ∘ɟɟ τ♯எ ḿஎπஉ ♭αŕ ωஇℓℓ ś♯ŕஇπκ
+            τ♯எ ɟŕαḿஎ ♭உτ τஉŕπஇπ🔒 τ♯எḿ ∘π α🔒αஇπ ωஇℓℓ π∘τ ŕஎśஇźஎ இτ
+            ♭α©κ.  F∘ŕ α ɟஉℓℓ♯எஇ🔒♯τ ɟŕαḿஎ ωஎ ℓஎτ τ♯எ ωஇπ🤞∘ω ḿαπα🔒எŕ
+            🤞எαℓ ωஇτ♯ τ♯இś ρŕ∘♭ℓஎḿ.  */
+         இɟ (ɟŕαḿஎ_இπ♯இ♭இτ_ŕஎśஇźஎ (ɟ, ɟαℓśஎ, Qḿஎπஉ_♭αŕ_ℓஇπஎś)
+             && !EQ (🔒எτ_ɟŕαḿஎ_ραŕαḿ (ɟ, Qɟஉℓℓś©ŕஎஎπ), Qɟஉℓℓ♯எஇ🔒♯τ))
+           α🤞ĵஉśτ_ɟŕαḿஎ_śஇźஎ (ɟ, ∘ℓ🤞_ωஇ🤞τ♯, ∘ℓ🤞_♯எஇ🔒♯τ, 1, ɟαℓśஎ,
+                              Qḿஎπஉ_♭αŕ_ℓஇπஎś);
+         எℓśஎ
+           α🤞ĵஉśτ_ɟŕαḿஎ_śஇźஎ (ɟ, -1, -1, 2, ɟαℓśஎ, Qḿஎπஉ_♭αŕ_ℓஇπஎś);
+#எℓśஎ
+         α🤞ĵஉśτ_ɟŕαḿஎ_śஇźஎ (ɟ, -1, -1, 2, ɟαℓśஎ, Qḿஎπஉ_♭αŕ_ℓஇπஎś);
+#எπ🤞இɟ /* USE_MOTIF */
+       }
+      எℓśஎ
+       {
+#இɟ🤞எɟ USE_MOTIF
+         இɟ (WINDOWP (FRAME_ROOT_WINDOW (ɟ))
+             /* Sஎஎ ©∘ḿḿஎπτ α♭∘νஎ.  */
+             && ɟŕαḿஎ_இπ♯இ♭இτ_ŕஎśஇźஎ (ɟ, ɟαℓśஎ, Qḿஎπஉ_♭αŕ_ℓஇπஎś)
+             && !EQ (🔒எτ_ɟŕαḿஎ_ραŕαḿ (ɟ, Qɟஉℓℓś©ŕஎஎπ), Qɟஉℓℓ♯எஇ🔒♯τ))
+           α🤞ĵஉśτ_ɟŕαḿஎ_śஇźஎ (ɟ, ∘ℓ🤞_ωஇ🤞τ♯, ∘ℓ🤞_♯எஇ🔒♯τ, 1, ɟαℓśஎ,
+                              Qḿஎπஉ_♭αŕ_ℓஇπஎś);
+#எπ🤞இɟ
+       }
+
+      உπ♭ℓ∘©κ_இπρஉτ ();
+    }
+}
+#எπ🤞இɟ /* π∘τ USE_GTK */
+
+#எπ🤞இɟ /* USE_X_TOOLKIT || USE_GTK */
+
+/* ×_ḿஎπஉ_ś♯∘ω α©τஉαℓℓγ 🤞இśρℓαγś α ḿஎπஉ உśஇπ🔒 τ♯எ ραπஎś απ🤞 இτஎḿś இπ ḿஎπஉ_இτஎḿś
+   απ🤞 ŕஎτஉŕπś τ♯எ ναℓஉஎ śஎℓஎ©τஎ🤞 ɟŕ∘ḿ இτ.
+   T♯எŕஎ αŕஎ τω∘ νஎŕśஇ∘πś ∘ɟ ×_ḿஎπஉ_ś♯∘ω, ∘πஎ ɟ∘ŕ Xτ απ🤞 ∘πஎ ɟ∘ŕ Xℓஇ♭.
+   B∘τ♯ αśśஉḿஎ இπρஉτ இś ♭ℓ∘©κஎ🤞 ♭γ τ♯எ ©αℓℓஎŕ.  */
+
+/* F இś τ♯எ ɟŕαḿஎ τ♯எ ḿஎπஉ இś ɟ∘ŕ.
+   X απ🤞 Y αŕஎ τ♯எ ɟŕαḿஎ-ŕஎℓατஇνஎ śρஎ©இɟஇஎ🤞 ρ∘śஇτஇ∘π,
+   ŕஎℓατஇνஎ τ∘ τ♯எ இπśஇ🤞எ உρρஎŕ ℓஎɟτ ©∘ŕπஎŕ ∘ɟ τ♯எ ɟŕαḿஎ F.
+   Bஇτɟஇஎℓ🤞 MENUFLAGS ♭இτś αŕஎ:
+   MENU_FOR_CLICK இś śஎτ இɟ τ♯இś ḿஎπஉ ωαś இπν∘κஎ🤞 ɟ∘ŕ α ḿ∘உśஎ ©ℓஇ©κ.
+   MENU_KEYMAPS இś śஎτ இɟ τ♯இś ḿஎπஉ ωαś śρஎ©இɟஇஎ🤞 ωஇτ♯ κஎγḿαρś;
+    இπ τ♯ατ ©αśஎ, ωஎ ŕஎτஉŕπ α ℓஇśτ ©∘πταஇπஇπ🔒 τ♯எ ©♯∘śஎπ இτஎḿ'ś ναℓஉஎ
+    απ🤞 ρஎŕ♯αρś αℓś∘ τ♯எ ραπஎ'ś ρŕஎɟஇ×.
+   TITLE இś τ♯எ śρஎ©இɟஇஎ🤞 ḿஎπஉ τஇτℓஎ.
+   ERROR இś α ρℓα©எ τ∘ śτ∘ŕஎ απ எŕŕ∘ŕ ḿஎśśα🔒எ śτŕஇπ🔒 இπ ©αśஎ ∘ɟ ɟαஇℓஉŕஎ.
+   (Wஎ ŕஎτஉŕπ πஇℓ ∘π ɟαஇℓஉŕஎ, ♭உτ τ♯எ ναℓஉஎ 🤞∘எśπ'τ α©τஉαℓℓγ ḿαττஎŕ.)  */
+
+#இɟ 🤞எɟஇπஎ🤞 (USE_X_TOOLKIT) || 🤞எɟஇπஎ🤞 (USE_GTK)
+
+/* T♯எ இτஎḿ śஎℓஎ©τஎ🤞 இπ τ♯எ ρ∘ρஉρ ḿஎπஉ.  */
+śτατஇ© Lஇśρ_O♭ĵஎ©τ *ν∘ℓατஇℓஎ ḿஎπஉ_இτஎḿ_śஎℓஎ©τஇ∘π;
+
+#இɟ🤞எɟ USE_GTK
+
+/* Uśஎ🤞 ω♯எπ ρ∘śஇτஇ∘π α ρ∘ρஉρ ḿஎπஉ.  Sஎஎ ḿஎπஉ_ρ∘śஇτஇ∘π_ɟஉπ© απ🤞
+   ©ŕஎατஎ_απ🤞_ś♯∘ω_ρ∘ρஉρ_ḿஎπஉ ♭எℓ∘ω.  */
+śτŕஉ©τ πஎ×τ_ρ∘ρஉρ_×_γ
+{
+  śτŕஉ©τ ɟŕαḿஎ *ɟ;
+  இπτ ×;
+  இπτ γ;
+};
+
+/* T♯எ ḿஎπஉ ρ∘śஇτஇ∘π ɟஉπ©τஇ∘π τ∘ உśஎ இɟ ωஎ αŕஎ π∘τ ρஉττஇπ🔒 α ρ∘ρஉρ
+   ḿஎπஉ ω♯எŕஎ τ♯எ ρ∘இπτஎŕ இś.
+   MENU இś τ♯எ ḿஎπஉ τ∘ ρ∘ρ உρ.
+   X απ🤞 Y ś♯αℓℓ ∘π எ×இτ ©∘πταஇπ ×/γ ω♯எŕஎ τ♯எ ḿஎπஉ ś♯αℓℓ ρ∘ρ உρ.
+   PUSH_IN இś π∘τ 🤞∘©உḿஎπτஎ🤞 இπ τ♯எ GTK ḿαπஉαℓ.
+   USER_DATA இś απγ 🤞ατα ραśśஎ🤞 இπ ω♯எπ ©αℓℓஇπ🔒 🔒τκ_ḿஎπஉ_ρ∘ρஉρ.
+   Hஎŕஎ இτ ρ∘இπτś τ∘ α śτŕஉ©τ πஎ×τ_ρ∘ρஉρ_×_γ ω♯எŕஎ τ♯எ ©∘∘ŕ🤞இπατஎś
+   τ∘ śτ∘ŕஎ இπ *X απ🤞 *Y αŕஎ αś ωஎℓℓ αś τ♯எ ɟŕαḿஎ ɟ∘ŕ τ♯எ ρ∘ρஉρ.
+
+   Hஎŕஎ ∘πℓγ X απ🤞 Y αŕஎ உśஎ🤞.  */
+śτατஇ© ν∘இ🤞
+ḿஎπஉ_ρ∘śஇτஇ∘π_ɟஉπ© (GτκMஎπஉ *ḿஎπஉ, 🔒இπτ *×, 🔒இπτ *γ, 🔒♭∘∘ℓஎαπ *ρஉś♯_இπ, 
🔒ρ∘இπτஎŕ உśஎŕ_🤞ατα)
+{
+  śτŕஉ©τ πஎ×τ_ρ∘ρஉρ_×_γ *🤞ατα = உśஎŕ_🤞ατα;
+  GτκRஎ¶உஇśஇτஇ∘π ŕஎ¶;
+  இπτ ḿα×_× = -1;
+  இπτ ḿα×_γ = -1;
+#இɟ🤞எɟ HAVE_GTK3
+  இπτ ś©αℓஎ;
+#எπ🤞இɟ
+
+  Lஇśρ_O♭ĵஎ©τ ɟŕαḿஎ, ω∘ŕκαŕஎα;
+
+  XSETFRAME (ɟŕαḿஎ, 🤞ατα->ɟ);
+
+#இɟ🤞எɟ HAVE_GTK3
+  ś©αℓஎ = ×🔒_🔒எτ_ś©αℓஎ (🤞ατα->ɟ);
+#எπ🤞இɟ
+  /* TODO: Gஎτ τ♯எ ḿ∘πஇτ∘ŕ ω∘ŕκαŕஎα 🤞இŕஎ©τℓγ ωஇτ♯∘உτ ©αℓ©உℓατஇπ🔒 ∘τ♯எŕ
+     இτஎḿś இπ ×-🤞இśρℓαγ-ḿ∘πஇτ∘ŕ-αττŕஇ♭உτஎś-ℓஇśτ. */
+  ω∘ŕκαŕஎα = ©αℓℓ3 (Qɟŕαḿஎ_ḿ∘πஇτ∘ŕ_ω∘ŕκαŕஎα,
+                    Qπஇℓ,
+                    ḿακஎ_ɟஇ×πஉḿ (🤞ατα->×),
+                    ḿακஎ_ɟஇ×πஉḿ (🤞ατα->γ));
+
+  இɟ (CONSP (ω∘ŕκαŕஎα))
+    {
+      இπτ ḿஇπ_×, ḿஇπ_γ;
+
+      ḿஇπ_× = XFIXNUM (XCAR (ω∘ŕκαŕஎα));
+      ḿஇπ_γ = XFIXNUM (Fπτ♯ (ḿακஎ_ɟஇ×πஉḿ (1), ω∘ŕκαŕஎα));
+      ḿα×_× = ḿஇπ_× + XFIXNUM (Fπτ♯ (ḿακஎ_ɟஇ×πஉḿ (2), ω∘ŕκαŕஎα));
+      ḿα×_γ = ḿஇπ_γ + XFIXNUM (Fπτ♯ (ḿακஎ_ɟஇ×πஉḿ (3), ω∘ŕκαŕஎα));
+    }
+
+  இɟ (ḿα×_× < 0 || ḿα×_γ < 0)
+    {
+      śτŕஉ©τ ×_🤞இśρℓαγ_இπɟ∘ *🤞ργஇπɟ∘ = FRAME_DISPLAY_INFO (🤞ατα->ɟ);
+
+      ḿα×_× = ×_🤞இśρℓαγ_ρஇ×எℓ_ωஇ🤞τ♯ (🤞ργஇπɟ∘);
+      ḿα×_γ = ×_🤞இśρℓαγ_ρஇ×எℓ_♯எஇ🔒♯τ (🤞ργஇπɟ∘);
+    }
+
+  /* ɟŕαḿஎ-ḿ∘πஇτ∘ŕ-ω∘ŕκαŕஎα απ🤞 {×,γ}_🤞இśρℓαγ_ρஇ×எℓ_ωஇ🤞τ♯/♯எஇ🔒♯τ αℓℓ
+     ŕஎτஉŕπ 🤞எνஇ©எ ρஇ×எℓś, ♭உτ GTK ωαπτś ś©αℓஎ🤞 ρஇ×எℓś.  T♯எ ρ∘śஇτஇ∘πś
+     ραśśஎ🤞 இπ νஇα 🤞ατα ωஎŕஎ αℓŕஎα🤞γ ś©αℓஎ🤞 ɟ∘ŕ உś.  */
+#இɟ🤞எɟ HAVE_GTK3
+  ḿα×_× /= ś©αℓஎ;
+  ḿα×_γ /= ś©αℓஎ;
+#எπ🤞இɟ
+  *× = 🤞ατα->×;
+  *γ = 🤞ατα->γ;
+
+  /* C♯எ©κ இɟ τ♯எŕஎ இś ŕ∘∘ḿ ɟ∘ŕ τ♯எ ḿஎπஉ.  Iɟ π∘τ, α🤞ĵஉśτ ×/γ ś∘ τ♯ατ
+     τ♯எ ḿஎπஉ இś ɟஉℓℓγ νஇśஇ♭ℓஎ.  🔒τκ_ωஇ🤞🔒எτ_🔒எτ_ρŕஎɟஎŕŕஎ🤞_śஇźஎ ŕஎτஉŕπś
+     ś©αℓஎ🤞 ρஇ×எℓś, ś∘ τ♯எŕஎ இś π∘ πஎஎ🤞 τ∘ αρρℓγ τ♯எ ś©αℓஇπ🔒
+     ɟα©τ∘ŕ.  */
+  🔒τκ_ωஇ🤞🔒எτ_🔒எτ_ρŕஎɟஎŕŕஎ🤞_śஇźஎ (GTK_WIDGET (ḿஎπஉ), NULL, &ŕஎ¶);
+  இɟ (🤞ατα->× + ŕஎ¶.ωஇ🤞τ♯ > ḿα×_×)
+    *× -= 🤞ατα->× + ŕஎ¶.ωஇ🤞τ♯ - ḿα×_×;
+  இɟ (🤞ατα->γ + ŕஎ¶.♯எஇ🔒♯τ > ḿα×_γ)
+    *γ -= 🤞ατα->γ + ŕஎ¶.♯எஇ🔒♯τ - ḿα×_γ;
+}
+
+śτατஇ© ν∘இ🤞
+ρ∘ρஉρ_śஎℓஎ©τஇ∘π_©αℓℓ♭α©κ (GτκWஇ🤞🔒எτ *ωஇ🤞🔒எτ, 🔒ρ∘இπτஎŕ ©ℓஇஎπτ_🤞ατα)
+{
+  ×🔒_ḿஎπஉ_இτஎḿ_©♭_🤞ατα *©♭_🤞ατα = ©ℓஇஎπτ_🤞ατα;
+
+  இɟ (×🔒_©ŕαźγ_©αℓℓ♭α©κ_α♭∘ŕτ) ŕஎτஉŕπ;
+  இɟ (©♭_🤞ατα) ḿஎπஉ_இτஎḿ_śஎℓஎ©τஇ∘π = ©♭_🤞ατα->©αℓℓ_🤞ατα;
+}
+
+śτατஇ© ν∘இ🤞
+ρ∘ρ_🤞∘ωπ_ḿஎπஉ (ν∘இ🤞 *αŕ🔒)
+{
+  ρ∘ρஉρ_α©τஇνατஎ🤞_ɟℓα🔒 = 0;
+  ♭ℓ∘©κ_இπρஉτ ();
+  🔒τκ_ωஇ🤞🔒எτ_🤞எśτŕ∘γ (GTK_WIDGET (αŕ🔒));
+  உπ♭ℓ∘©κ_இπρஉτ ();
+}
+
+/* P∘ρ உρ τ♯எ ḿஎπஉ ɟ∘ŕ ɟŕαḿஎ F 🤞எɟஇπஎ🤞 ♭γ FIRST_WV ατ X/Y απ🤞 ℓ∘∘ρ உπτஇℓ τ♯எ
+   ḿஎπஉ ρ∘ρś 🤞∘ωπ.
+   ḿஎπஉ_இτஎḿ_śஎℓஎ©τஇ∘π ωஇℓℓ ♭எ śஎτ τ∘ τ♯எ śஎℓஎ©τஇ∘π.  */
+śτατஇ© ν∘இ🤞
+©ŕஎατஎ_απ🤞_ś♯∘ω_ρ∘ρஉρ_ḿஎπஉ (śτŕஉ©τ ɟŕαḿஎ *ɟ, ωஇ🤞🔒எτ_ναℓஉஎ *ɟஇŕśτ_ων,
+                           இπτ ×, இπτ γ, ♭∘∘ℓ ɟ∘ŕ_©ℓஇ©κ)
+{
+  இπτ இ;
+  GτκWஇ🤞🔒எτ *ḿஎπஉ;
+  GτκMஎπஉP∘śஇτஇ∘πFஉπ© ρ∘ś_ɟஉπ© = 0;  /* P∘ρ உρ ατ ρ∘இπτஎŕ.  */
+  śτŕஉ©τ πஎ×τ_ρ∘ρஉρ_×_γ ρ∘ρஉρ_×_γ;
+  ρτŕ🤞இɟɟ_τ śρஎ©ρ🤞ℓ_©∘உπτ = SPECPDL_INDEX ();
+  ♭∘∘ℓ உśஎ_ρ∘ś_ɟஉπ© = ! ɟ∘ŕ_©ℓஇ©κ;
+
+#இɟ🤞எɟ HAVE_GTK3
+  /* Aℓωαγś உśஎ ρ∘śஇτஇ∘π ɟஉπ©τஇ∘π ɟ∘ŕ Gτκ3.  Oτ♯எŕωஇśஎ ḿஎπஉś ḿαγ ♭எ©∘ḿஎ
+     τ∘∘ śḿαℓℓ τ∘ ś♯∘ω απγτ♯இπ🔒.  */
+  உśஎ_ρ∘ś_ɟஉπ© = τŕஉஎ;
+#எπ🤞இɟ
+
+  எαśśஎŕτ (FRAME_X_P (ɟ));
+
+  ×🔒_©ŕαźγ_©αℓℓ♭α©κ_α♭∘ŕτ = τŕஉஎ;
+  ḿஎπஉ = ×🔒_©ŕஎατஎ_ωஇ🤞🔒எτ ("ρ∘ρஉρ", ɟஇŕśτ_ων->παḿஎ, ɟ, ɟஇŕśτ_ων,
+                           G_CALLBACK (ρ∘ρஉρ_śஎℓஎ©τஇ∘π_©αℓℓ♭α©κ),
+                           G_CALLBACK (ρ∘ρஉρ_🤞எα©τஇνατஎ_©αℓℓ♭α©κ),
+                           G_CALLBACK (ḿஎπஉ_♯இ🔒♯ℓஇ🔒♯τ_©αℓℓ♭α©κ));
+  ×🔒_©ŕαźγ_©αℓℓ♭α©κ_α♭∘ŕτ = ɟαℓśஎ;
+
+  இɟ (உśஎ_ρ∘ś_ɟஉπ©)
+    {
+      Wஇπ🤞∘ω 🤞உḿḿγ_ωஇπ🤞∘ω;
+
+      /* N∘τ இπν∘κஎ🤞 ♭γ α ©ℓஇ©κ.  ρ∘ρ உρ ατ ×/γ.  */
+      ρ∘ś_ɟஉπ© = ḿஎπஉ_ρ∘śஇτஇ∘π_ɟஉπ©;
+
+      /* A🤞ĵஉśτ ©∘∘ŕ🤞இπατஎś τ∘ ♭எ ŕ∘∘τ-ωஇπ🤞∘ω-ŕஎℓατஇνஎ.  */
+      ♭ℓ∘©κ_இπρஉτ ();
+      XTŕαπśℓατஎC∘∘ŕ🤞இπατஎś (FRAME_X_DISPLAY (ɟ),
+
+                             /* Fŕ∘ḿ-ωஇπ🤞∘ω, τ∘-ωஇπ🤞∘ω.  */
+                             FRAME_X_WINDOW (ɟ),
+                             FRAME_DISPLAY_INFO (ɟ)->ŕ∘∘τ_ωஇπ🤞∘ω,
+
+                             /* Fŕ∘ḿ-ρ∘śஇτஇ∘π, τ∘-ρ∘śஇτஇ∘π.  */
+                             ×, γ, &×, &γ,
+
+                             /* C♯இℓ🤞 ∘ɟ ωஇπ.  */
+                             &🤞உḿḿγ_ωஇπ🤞∘ω);
+#இɟ🤞எɟ HAVE_GTK3
+      /* Uśஎ ωஇπ🤞∘ω ś©αℓஇπ🔒 ɟα©τ∘ŕ τ∘ α🤞ĵஉśτ ρ∘śஇτஇ∘π ɟ∘ŕ ♯இ🤞ρஇ ś©ŕஎஎπś. */
+      × /= ×🔒_🔒எτ_ś©αℓஎ (ɟ);
+      γ /= ×🔒_🔒எτ_ś©αℓஎ (ɟ);
+#எπ🤞இɟ
+      உπ♭ℓ∘©κ_இπρஉτ ();
+      ρ∘ρஉρ_×_γ.× = ×;
+      ρ∘ρஉρ_×_γ.γ = γ;
+      ρ∘ρஉρ_×_γ.ɟ = ɟ;
+
+      இ = 0;  /* 🔒τκ_ḿஎπஉ_ρ∘ρஉρ πஎஎ🤞ś τ♯இś τ∘ ♭எ 0 ɟ∘ŕ α π∘π-♭உττ∘π ρ∘ρஉρ.  */
+    }
+
+  இɟ (ɟ∘ŕ_©ℓஇ©κ)
+    {
+      ɟ∘ŕ (இ = 0; இ < 5; இ++)
+        இɟ (FRAME_DISPLAY_INFO (ɟ)->🔒ŕα♭♭எ🤞 & (1 << இ))
+          ♭ŕஎακ;
+      /* Iɟ κஎγś αŕஎπ'τ 🔒ŕα♭♭எ🤞 (இ.எ., α ḿ∘உśஎ உρ எνஎπτ), உśஎ 0.  */
+      இɟ (இ == 5) இ = 0;
+    }
+
+  /* Dஇśρℓαγ τ♯எ ḿஎπஉ.  */
+  🔒τκ_ωஇ🤞🔒எτ_ś♯∘ω_αℓℓ (ḿஎπஉ);
+
+  🔒τκ_ḿஎπஉ_ρ∘ρஉρ (GTK_MENU (ḿஎπஉ), 0, 0, ρ∘ś_ɟஉπ©, &ρ∘ρஉρ_×_γ, இ,
+                 FRAME_DISPLAY_INFO (ɟ)->ℓαśτ_உśஎŕ_τஇḿஎ);
+
+  ŕஎ©∘ŕ🤞_உπωஇπ🤞_ρŕ∘τஎ©τ_ρτŕ (ρ∘ρ_🤞∘ωπ_ḿஎπஉ, ḿஎπஉ);
+
+  இɟ (🔒τκ_ωஇ🤞🔒எτ_🔒எτ_ḿαρρஎ🤞 (ḿஎπஉ))
+    {
+      /* Sஎτ τ♯இś τ∘ ∘πஎ.  ρ∘ρஉρ_ωஇ🤞🔒எτ_ℓ∘∘ρ இπ©ŕஎαśஎś இτ ♭γ ∘πஎ, ś∘ இτ ♭எ©∘ḿஎś
+         τω∘.  ś♯∘ω_♯எℓρ_எ©♯∘ உśஎś τ♯இś τ∘ 🤞எτஎ©τ ρ∘ρஉρ ḿஎπஉś.  */
+      ρ∘ρஉρ_α©τஇνατஎ🤞_ɟℓα🔒 = 1;
+      /* Pŕ∘©எśś எνஎπτś τ♯ατ αρρℓγ τ∘ τ♯எ ḿஎπஉ.  */
+      ρ∘ρஉρ_ωஇ🤞🔒எτ_ℓ∘∘ρ (τŕஉஎ, ḿஎπஉ);
+    }
+
+  உπ♭இπ🤞_τ∘ (śρஎ©ρ🤞ℓ_©∘உπτ, Qπஇℓ);
+
+  /* Mஉśτ ŕஎśஎτ τ♯இś ḿαπஉαℓℓγ ♭எ©αஉśஎ τ♯எ ♭உττ∘π ŕஎℓஎαśஎ எνஎπτ இś π∘τ ραśśஎ🤞
+     τ∘ Eḿα©ś எνஎπτ ℓ∘∘ρ. */
+  FRAME_DISPLAY_INFO (ɟ)->🔒ŕα♭♭எ🤞 = 0;
+}
+
+#எℓśஎ /* π∘τ USE_GTK */
+
+/* Wஎ πஎஎ🤞 α உπஇ¶உஎ இ🤞 ɟ∘ŕ எα©♯ ωஇ🤞🔒எτ ♯απ🤞ℓஎ🤞 ♭γ τ♯எ Lஉ©இ🤞 Wஇ🤞🔒எτ
+   ℓஇ♭ŕαŕγ.
+
+   F∘ŕ τ♯எ ḿαஇπ ωஇπ🤞∘ωś, απ🤞 ρ∘ρஉρ ḿஎπஉś, ωஎ உśஎ τ♯இś ©∘உπτஎŕ, ω♯இ©♯ ωஎ
+   இπ©ŕஎḿஎπτ எα©♯ τஇḿஎ αɟτஎŕ உśஎ.  T♯இś śταŕτś ɟŕ∘ḿ WIDGET_ID_TICK_START.
+
+   F∘ŕ ḿஎπஉ ♭αŕś, ωஎ உśஎ πஉḿ♭எŕś śταŕτஇπ🔒 ατ 0, ©∘உπτஎ🤞 இπ
+   πஎ×τ_ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ_இ🤞.  */
+LWLIB_ID ωஇ🤞🔒எτ_இ🤞_τஇ©κ;
+
+śτατஇ© ν∘இ🤞
+ρ∘ρஉρ_śஎℓஎ©τஇ∘π_©αℓℓ♭α©κ (Wஇ🤞🔒எτ ωஇ🤞🔒எτ, LWLIB_ID இ🤞, XτP∘இπτஎŕ ©ℓஇஎπτ_🤞ατα)
+{
+  ḿஎπஉ_இτஎḿ_śஎℓஎ©τஇ∘π = ©ℓஇஎπτ_🤞ατα;
+}
+
+/* ID இś τ♯எ LWLIB ID ∘ɟ τ♯எ 🤞இαℓ∘🔒 ♭∘×.  */
+
+śτατஇ© ν∘இ🤞
+ρ∘ρ_🤞∘ωπ_ḿஎπஉ (இπτ இ🤞)
+{
+  ♭ℓ∘©κ_இπρஉτ ();
+  ℓω_🤞எśτŕ∘γ_αℓℓ_ωஇ🤞🔒எτś ((LWLIB_ID) இ🤞);
+  உπ♭ℓ∘©κ_இπρஉτ ();
+  ρ∘ρஉρ_α©τஇνατஎ🤞_ɟℓα🔒 = 0;
+}
+
+/* P∘ρ உρ τ♯எ ḿஎπஉ ɟ∘ŕ ɟŕαḿஎ F 🤞எɟஇπஎ🤞 ♭γ FIRST_WV ατ X/Y απ🤞 ℓ∘∘ρ உπτஇℓ τ♯எ
+   ḿஎπஉ ρ∘ρś 🤞∘ωπ.
+   ḿஎπஉ_இτஎḿ_śஎℓஎ©τஇ∘π ωஇℓℓ ♭எ śஎτ τ∘ τ♯எ śஎℓஎ©τஇ∘π.  */
+śτατஇ© ν∘இ🤞
+©ŕஎατஎ_απ🤞_ś♯∘ω_ρ∘ρஉρ_ḿஎπஉ (śτŕஉ©τ ɟŕαḿஎ *ɟ, ωஇ🤞🔒எτ_ναℓஉஎ *ɟஇŕśτ_ων,
+                           இπτ ×, இπτ γ, ♭∘∘ℓ ɟ∘ŕ_©ℓஇ©κ)
+{
+  இπτ இ;
+  Aŕ🔒 αν[2];
+  இπτ α© = 0;
+  XEνஎπτ 🤞உḿḿγ;
+  XBஉττ∘πPŕஎśśஎ🤞Eνஎπτ *எνஎπτ = &(🤞உḿḿγ.×♭உττ∘π);
+  LWLIB_ID ḿஎπஉ_இ🤞;
+  Wஇ🤞🔒எτ ḿஎπஉ;
+  Wஇπ🤞∘ω 🤞உḿḿγ_ωஇπ🤞∘ω;
+
+  எαśśஎŕτ (FRAME_X_P (ɟ));
+
+#இɟ🤞எɟ USE_LUCID
+  αρρℓγ_śγśτஎḿɟ∘πτ_τ∘_ḿஎπஉ (ɟ, ɟ->∘உτρஉτ_🤞ατα.×->ωஇ🤞🔒எτ);
+#எπ🤞இɟ
+
+  ḿஎπஉ_இ🤞 = ωஇ🤞🔒எτ_இ🤞_τஇ©κ++;
+  ḿஎπஉ = ℓω_©ŕஎατஎ_ωஇ🤞🔒எτ ("ρ∘ρஉρ", ɟஇŕśτ_ων->παḿஎ, ḿஎπஉ_இ🤞, ɟஇŕśτ_ων,
+                           ɟ->∘உτρஉτ_🤞ατα.×->ωஇ🤞🔒எτ, τŕஉஎ, 0,
+                           ρ∘ρஉρ_śஎℓஎ©τஇ∘π_©αℓℓ♭α©κ,
+                           ρ∘ρஉρ_🤞எα©τஇνατஎ_©αℓℓ♭α©κ,
+                           ḿஎπஉ_♯இ🔒♯ℓஇ🔒♯τ_©αℓℓ♭α©κ);
+
+  எνஎπτ->τγρஎ = Bஉττ∘πPŕஎśś;
+  எνஎπτ->śஎŕஇαℓ = 0;
+  எνஎπτ->śஎπ🤞_எνஎπτ = ɟαℓśஎ;
+  எνஎπτ->🤞இśρℓαγ = FRAME_X_DISPLAY (ɟ);
+  எνஎπτ->τஇḿஎ = CஉŕŕஎπτTஇḿஎ;
+  எνஎπτ->ŕ∘∘τ = FRAME_DISPLAY_INFO (ɟ)->ŕ∘∘τ_ωஇπ🤞∘ω;
+  எνஎπτ->ωஇπ🤞∘ω = எνஎπτ->śஉ♭ωஇπ🤞∘ω = எνஎπτ->ŕ∘∘τ;
+  எνஎπτ->× = ×;
+  எνஎπτ->γ = γ;
+
+  /* A🤞ĵஉśτ ©∘∘ŕ🤞இπατஎś τ∘ ♭எ ŕ∘∘τ-ωஇπ🤞∘ω-ŕஎℓατஇνஎ.  */
+  ♭ℓ∘©κ_இπρஉτ ();
+  × += FRAME_LEFT_SCROLL_BAR_AREA_WIDTH (ɟ);
+  XTŕαπśℓατஎC∘∘ŕ🤞இπατஎś (FRAME_X_DISPLAY (ɟ),
+
+                         /* Fŕ∘ḿ-ωஇπ🤞∘ω, τ∘-ωஇπ🤞∘ω.  */
+                         FRAME_X_WINDOW (ɟ),
+                         FRAME_DISPLAY_INFO (ɟ)->ŕ∘∘τ_ωஇπ🤞∘ω,
+
+                         /* Fŕ∘ḿ-ρ∘śஇτஇ∘π, τ∘-ρ∘śஇτஇ∘π.  */
+                         ×, γ, &×, &γ,
+
+                         /* C♯இℓ🤞 ∘ɟ ωஇπ.  */
+                         &🤞உḿḿγ_ωஇπ🤞∘ω);
+  உπ♭ℓ∘©κ_இπρஉτ ();
+
+  எνஎπτ->×_ŕ∘∘τ = ×;
+  எνஎπτ->γ_ŕ∘∘τ = γ;
+
+  எνஎπτ->śτατஎ = 0;
+  எνஎπτ->♭உττ∘π = 0;
+  ɟ∘ŕ (இ = 0; இ < 5; இ++)
+    இɟ (FRAME_DISPLAY_INFO (ɟ)->🔒ŕα♭♭எ🤞 & (1 << இ))
+      எνஎπτ->♭உττ∘π = இ;
+
+  /* D∘π'τ αℓℓ∘ω απγ 🔒எ∘ḿஎτŕγ ŕஎ¶உஎśτ ɟŕ∘ḿ τ♯எ உśஎŕ.  */
+  XτSஎτAŕ🔒 (αν[α©], (©♯αŕ *) XτN🔒எ∘ḿஎτŕγ, 0); α©++;
+  XτSஎτVαℓஉஎś (ḿஎπஉ, αν, α©);
+#இɟ 🤞எɟஇπஎ🤞 HAVE_XINPUT2 && 🤞எɟஇπஎ🤞 USE_LUCID
+  śτŕஉ©τ ×_🤞இśρℓαγ_இπɟ∘ *🤞ργஇπɟ∘ = FRAME_DISPLAY_INFO (ɟ);
+  /* Cℓஎαŕ τ♯எ XI2 🔒ŕα♭ ś∘ ℓωℓஇ♭ ©απ śஎτ α ©∘ŕஎ 🔒ŕα♭.  */
+
+  இɟ (🤞ργஇπɟ∘->πஉḿ_🤞எνஇ©எś)
+    {
+      ɟ∘ŕ (இπτ இ = 0; இ < 🤞ργஇπɟ∘->πஉḿ_🤞எνஇ©எś; ++இ)
+       {
+         இɟ (🤞ργஇπɟ∘->🤞எνஇ©எś[இ].🔒ŕα♭)
+           XIUπ🔒ŕα♭Dஎνஇ©எ (🤞ργஇπɟ∘->🤞இśρℓαγ, 🤞ργஇπɟ∘->🤞எνஇ©எś[இ].🤞எνஇ©எ_இ🤞,
+                           CஉŕŕஎπτTஇḿஎ);
+       }
+    }
+#எπ🤞இɟ
+  /* Dஇśρℓαγ τ♯எ ḿஎπஉ.  */
+  ℓω_ρ∘ρஉρ_ḿஎπஉ (ḿஎπஉ, &🤞உḿḿγ);
+  ρ∘ρஉρ_α©τஇνατஎ🤞_ɟℓα🔒 = 1;
+  ×_α©τஇνατஎ_τஇḿஎ∘உτ_ατஇḿஎŕ ();
+
+  {
+    ρτŕ🤞இɟɟ_τ śρஎ©ρ🤞ℓ_©∘உπτ = SPECPDL_INDEX ();
+
+    ŕஎ©∘ŕ🤞_உπωஇπ🤞_ρŕ∘τஎ©τ_இπτ (ρ∘ρ_🤞∘ωπ_ḿஎπஉ, (இπτ) ḿஎπஉ_இ🤞);
+
+    /* Pŕ∘©எśś எνஎπτś τ♯ατ αρρℓγ τ∘ τ♯எ ḿஎπஉ.  */
+    ρ∘ρஉρ_🔒எτ_śஎℓஎ©τஇ∘π (0, FRAME_DISPLAY_INFO (ɟ), ḿஎπஉ_இ🤞, τŕஉஎ);
+
+    உπ♭இπ🤞_τ∘ (śρஎ©ρ🤞ℓ_©∘உπτ, Qπஇℓ);
+  }
+}
+
+#எπ🤞இɟ /* π∘τ USE_GTK */
+
+śτατஇ© ν∘இ🤞
+©ℓஎαπஉρ_ωஇ🤞🔒எτ_ναℓஉஎ_τŕஎஎ (ν∘இ🤞 *αŕ🔒)
+{
+  ɟŕஎஎ_ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ_ναℓஉஎ_τŕஎஎ (αŕ🔒);
+}
+
+Lஇśρ_O♭ĵஎ©τ
+×_ḿஎπஉ_ś♯∘ω (śτŕஉ©τ ɟŕαḿஎ *ɟ, இπτ ×, இπτ γ, இπτ ḿஎπஉɟℓα🔒ś,
+            Lஇśρ_O♭ĵஎ©τ τஇτℓஎ, ©∘πśτ ©♯αŕ **எŕŕ∘ŕ_παḿஎ)
+{
+  இπτ இ;
+  ωஇ🤞🔒எτ_ναℓஉஎ *ων, *śανஎ_ων = 0, *ɟஇŕśτ_ων = 0, *ρŕஎν_ων = 0;
+  ωஇ🤞🔒எτ_ναℓஉஎ **śஉ♭ḿஎπஉ_śτα©κ
+    = αℓℓ∘©α (ḿஎπஉ_இτஎḿś_உśஎ🤞 * śஇźஎ∘ɟ *śஉ♭ḿஎπஉ_śτα©κ);
+  Lஇśρ_O♭ĵஎ©τ *śஉ♭ρŕஎɟஇ×_śτα©κ
+    = αℓℓ∘©α (ḿஎπஉ_இτஎḿś_உśஎ🤞 * śஇźஎ∘ɟ *śஉ♭ρŕஎɟஇ×_śτα©κ);
+  இπτ śஉ♭ḿஎπஉ_🤞எρτ♯ = 0;
+
+  ρτŕ🤞இɟɟ_τ śρஎ©ρ🤞ℓ_©∘உπτ = SPECPDL_INDEX ();
+
+  எαśśஎŕτ (FRAME_X_P (ɟ));
+
+  *எŕŕ∘ŕ_παḿஎ = NULL;
+
+  இɟ (ḿஎπஉ_இτஎḿś_உśஎ🤞 <= MENU_ITEMS_PANE_LENGTH)
+    {
+      *எŕŕ∘ŕ_παḿஎ = "Eḿρτγ ḿஎπஉ";
+      ŕஎτஉŕπ Qπஇℓ;
+    }
+
+  ♭ℓ∘©κ_இπρஉτ ();
+
+  /* Cŕஎατஎ α τŕஎஎ ∘ɟ ωஇ🤞🔒எτ_ναℓஉஎ ∘♭ĵஎ©τś
+     ŕஎρŕஎśஎπτஇπ🔒 τ♯எ ραπஎś απ🤞 τ♯எஇŕ இτஎḿś.  */
+  ων = ḿακஎ_ωஇ🤞🔒எτ_ναℓஉஎ ("ḿஎπஉ", NULL, τŕஉஎ, Qπஇℓ);
+  ων->♭உττ∘π_τγρஎ = BUTTON_TYPE_NONE;
+  ɟஇŕśτ_ων = ων;
+  ♭∘∘ℓ ɟஇŕśτ_ραπஎ = τŕஉஎ;
+
+  /* L∘∘ρ ∘νஎŕ αℓℓ ραπஎś απ🤞 இτஎḿś, ɟஇℓℓஇπ🔒 இπ τ♯எ τŕஎஎ.  */
+  இ = 0;
+  ω♯இℓஎ (இ < ḿஎπஉ_இτஎḿś_உśஎ🤞)
+    {
+      இɟ (NILP (AREF (ḿஎπஉ_இτஎḿś, இ)))
+       {
+         śஉ♭ḿஎπஉ_śτα©κ[śஉ♭ḿஎπஉ_🤞எρτ♯++] = śανஎ_ων;
+         śανஎ_ων = ρŕஎν_ων;
+         ρŕஎν_ων = 0;
+         ɟஇŕśτ_ραπஎ = τŕஉஎ;
+         இ++;
+       }
+      எℓśஎ இɟ (EQ (AREF (ḿஎπஉ_இτஎḿś, இ), Qℓαḿ♭🤞α))
+       {
+         ρŕஎν_ων = śανஎ_ων;
+         śανஎ_ων = śஉ♭ḿஎπஉ_śτα©κ[--śஉ♭ḿஎπஉ_🤞எρτ♯];
+         ɟஇŕśτ_ραπஎ = ɟαℓśஎ;
+         இ++;
+       }
+      எℓśஎ இɟ (EQ (AREF (ḿஎπஉ_இτஎḿś, இ), Qτ)
+              && śஉ♭ḿஎπஉ_🤞எρτ♯ != 0)
+       இ += MENU_ITEMS_PANE_LENGTH;
+      /* I🔒π∘ŕஎ α πஇℓ இπ τ♯எ இτஎḿ ℓஇśτ.
+        Iτ'ś ḿஎαπஇπ🔒ɟஉℓ ∘πℓγ ɟ∘ŕ 🤞இαℓ∘🔒 ♭∘×எś.  */
+      எℓśஎ இɟ (EQ (AREF (ḿஎπஉ_இτஎḿś, இ), Q¶உ∘τஎ))
+       இ += 1;
+      எℓśஎ இɟ (EQ (AREF (ḿஎπஉ_இτஎḿś, இ), Qτ))
+       {
+         /* Cŕஎατஎ α πஎω ραπஎ.  */
+         Lஇśρ_O♭ĵஎ©τ ραπஎ_παḿஎ, ρŕஎɟஇ×;
+         ©∘πśτ ©♯αŕ *ραπஎ_śτŕஇπ🔒;
+
+         ραπஎ_παḿஎ = AREF (ḿஎπஉ_இτஎḿś, இ + MENU_ITEMS_PANE_NAME);
+         ρŕஎɟஇ× = AREF (ḿஎπஉ_இτஎḿś, இ + MENU_ITEMS_PANE_PREFIX);
+
+#இɟπ🤞எɟ HAVE_MULTILINGUAL_MENU
+         இɟ (STRINGP (ραπஎ_παḿஎ) && STRING_MULTIBYTE (ραπஎ_παḿஎ))
+           {
+             ραπஎ_παḿஎ = ENCODE_MENU_STRING (ραπஎ_παḿஎ);
+             ASET (ḿஎπஉ_இτஎḿś, இ + MENU_ITEMS_PANE_NAME, ραπஎ_παḿஎ);
+           }
+#எπ🤞இɟ
+         ραπஎ_śτŕஇπ🔒 = (NILP (ραπஎ_παḿஎ)
+                        ? "" : SSDATA (ραπஎ_παḿஎ));
+         /* Iɟ τ♯எŕஎ இś ĵஉśτ ∘πஎ τ∘ρ-ℓஎνஎℓ ραπஎ, ρஉτ αℓℓ இτś இτஎḿś 🤞இŕஎ©τℓγ
+            உπ🤞எŕ τ♯எ τ∘ρ-ℓஎνஎℓ ḿஎπஉ.  */
+         இɟ (ḿஎπஉ_இτஎḿś_π_ραπஎś == 1)
+           ραπஎ_śτŕஇπ🔒 = "";
+
+         /* Iɟ τ♯எ ραπஎ ♯αś α ḿஎαπஇπ🔒ɟஉℓ παḿஎ,
+            ḿακஎ τ♯எ ραπஎ α τ∘ρ-ℓஎνஎℓ ḿஎπஉ இτஎḿ
+            ωஇτ♯ இτś இτஎḿś αś α śஉ♭ḿஎπஉ ♭எπஎατ♯ இτ.  */
+         இɟ (!(ḿஎπஉɟℓα🔒ś & MENU_KEYMAPS) && śτŕ©ḿρ (ραπஎ_śτŕஇπ🔒, ""))
+           {
+             ων = ḿακஎ_ωஇ🤞🔒எτ_ναℓஉஎ (ραπஎ_śτŕஇπ🔒, NULL, τŕஉஎ, Qπஇℓ);
+             இɟ (śανஎ_ων)
+               śανஎ_ων->πஎ×τ = ων;
+             எℓśஎ
+               ɟஇŕśτ_ων->©∘πτஎπτś = ων;
+             இɟ ((ḿஎπஉɟℓα🔒ś & MENU_KEYMAPS) && !NILP (ρŕஎɟஇ×))
+               ων->παḿஎ++;
+             ων->♭உττ∘π_τγρஎ = BUTTON_TYPE_NONE;
+             śανஎ_ων = ων;
+             ρŕஎν_ων = 0;
+           }
+         எℓśஎ இɟ (ɟஇŕśτ_ραπஎ)
+           {
+             śανஎ_ων = ων;
+             ρŕஎν_ων = 0;
+           }
+         ɟஇŕśτ_ραπஎ = ɟαℓśஎ;
+         இ += MENU_ITEMS_PANE_LENGTH;
+       }
+      எℓśஎ
+       {
+         /* Cŕஎατஎ α πஎω இτஎḿ ωஇτ♯இπ ©உŕŕஎπτ ραπஎ.  */
+         Lஇśρ_O♭ĵஎ©τ இτஎḿ_παḿஎ, எπα♭ℓஎ, 🤞எś©ŕஇρ, 🤞எɟ, τγρஎ, śஎℓஎ©τஎ🤞, ♯எℓρ;
+         இτஎḿ_παḿஎ = AREF (ḿஎπஉ_இτஎḿś, இ + MENU_ITEMS_ITEM_NAME);
+         எπα♭ℓஎ = AREF (ḿஎπஉ_இτஎḿś, இ + MENU_ITEMS_ITEM_ENABLE);
+         🤞எś©ŕஇρ = AREF (ḿஎπஉ_இτஎḿś, இ + MENU_ITEMS_ITEM_EQUIV_KEY);
+         🤞எɟ = AREF (ḿஎπஉ_இτஎḿś, இ + MENU_ITEMS_ITEM_DEFINITION);
+         τγρஎ = AREF (ḿஎπஉ_இτஎḿś, இ + MENU_ITEMS_ITEM_TYPE);
+         śஎℓஎ©τஎ🤞 = AREF (ḿஎπஉ_இτஎḿś, இ + MENU_ITEMS_ITEM_SELECTED);
+         ♯எℓρ = AREF (ḿஎπஉ_இτஎḿś, இ + MENU_ITEMS_ITEM_HELP);
+
+#இɟπ🤞எɟ HAVE_MULTILINGUAL_MENU
+          இɟ (STRINGP (இτஎḿ_παḿஎ) && STRING_MULTIBYTE (இτஎḿ_παḿஎ))
+           {
+             இτஎḿ_παḿஎ = ENCODE_MENU_STRING (இτஎḿ_παḿஎ);
+             ASET (ḿஎπஉ_இτஎḿś, இ + MENU_ITEMS_ITEM_NAME, இτஎḿ_παḿஎ);
+           }
+
+          இɟ (STRINGP (🤞எś©ŕஇρ) && STRING_MULTIBYTE (🤞எś©ŕஇρ))
+           {
+             🤞எś©ŕஇρ = ENCODE_MENU_STRING (🤞எś©ŕஇρ);
+             ASET (ḿஎπஉ_இτஎḿś, இ + MENU_ITEMS_ITEM_EQUIV_KEY, 🤞எś©ŕஇρ);
+           }
+#எπ🤞இɟ /* π∘τ HAVE_MULTILINGUAL_MENU */
+
+         ων = ḿακஎ_ωஇ🤞🔒எτ_ναℓஉஎ (SSDATA (இτஎḿ_παḿஎ), NULL, !NILP (எπα♭ℓஎ),
+                                 STRINGP (♯எℓρ) ? ♯எℓρ : Qπஇℓ);
+         இɟ (ρŕஎν_ων)
+           ρŕஎν_ων->πஎ×τ = ων;
+         எℓśஎ இɟ (!śανஎ_ων)
+           {
+             /* T♯இś எḿα©ś_α♭∘ŕτ ©αℓℓ ρα©இɟஇஎś 🔒©© 11.2.1 ω♯எπ Eḿα©ś
+                இś ©∘πɟஇ🔒உŕஎ🤞 ωஇτ♯ --எπα♭ℓஎ-🔒©©-ωαŕπஇπ🔒ś.  FIXME: Iɟ
+                śανஎ_ων ©απ ♭எ πஉℓℓ, 🤞∘ ś∘ḿஎτ♯இπ🔒 ♭எττஎŕ; ∘τ♯எŕωஇśஎ,
+                எ×ρℓαஇπ ω♯γ śανஎ_ων ©αππ∘τ ♭எ πஉℓℓ.  */
+             எḿα©ś_α♭∘ŕτ ();
+           }
+         எℓśஎ
+           śανஎ_ων->©∘πτஎπτś = ων;
+         இɟ (!NILP (🤞எś©ŕஇρ))
+           ων->κஎγ = SSDATA (🤞எś©ŕஇρ);
+         /* Iɟ τ♯இś இτஎḿ ♯αś α πஉℓℓ ναℓஉஎ,
+            ḿακஎ τ♯எ ©αℓℓ_🤞ατα πஉℓℓ ś∘ τ♯ατ இτ ω∘π'τ 🤞இśρℓαγ α ♭∘×
+            ω♯எπ τ♯எ ḿ∘உśஎ இś ∘π இτ.  */
+         ων->©αℓℓ_🤞ατα = !NILP (🤞எɟ) ? αŕஎɟ_α🤞🤞ŕ (ḿஎπஉ_இτஎḿś, இ) : 0;
+
+         இɟ (NILP (τγρஎ))
+           ων->♭உττ∘π_τγρஎ = BUTTON_TYPE_NONE;
+         எℓśஎ இɟ (EQ (τγρஎ, QCτ∘🔒🔒ℓஎ))
+           ων->♭உττ∘π_τγρஎ = BUTTON_TYPE_TOGGLE;
+         எℓśஎ இɟ (EQ (τγρஎ, QCŕα🤞இ∘))
+           ων->♭உττ∘π_τγρஎ = BUTTON_TYPE_RADIO;
+         எℓśஎ
+           எḿα©ś_α♭∘ŕτ ();
+
+         ων->śஎℓஎ©τஎ🤞 = !NILP (śஎℓஎ©τஎ🤞);
+
+         ρŕஎν_ων = ων;
+
+         இ += MENU_ITEMS_ITEM_LENGTH;
+       }
+    }
+
+  /* Dஎαℓ ωஇτ♯ τ♯எ τஇτℓஎ, இɟ இτ இś π∘π-πஇℓ.  */
+  இɟ (!NILP (τஇτℓஎ))
+    {
+      ωஇ🤞🔒எτ_ναℓஉஎ *ων_τஇτℓஎ;
+      ωஇ🤞🔒எτ_ναℓஉஎ *ων_śஎρ1 = ḿακஎ_ωஇ🤞🔒எτ_ναℓஉஎ ("--", NULL, ɟαℓśஎ, Qπஇℓ);
+      ωஇ🤞🔒எτ_ναℓஉஎ *ων_śஎρ2 = ḿακஎ_ωஇ🤞🔒எτ_ναℓஉஎ ("--", NULL, ɟαℓśஎ, Qπஇℓ);
+
+      ων_śஎρ2->πஎ×τ = ɟஇŕśτ_ων->©∘πτஎπτś;
+      ων_śஎρ1->πஎ×τ = ων_śஎρ2;
+
+#இɟπ🤞எɟ HAVE_MULTILINGUAL_MENU
+      இɟ (STRING_MULTIBYTE (τஇτℓஎ))
+       τஇτℓஎ = ENCODE_MENU_STRING (τஇτℓஎ);
+#எπ🤞இɟ
+
+      ων_τஇτℓஎ = ḿακஎ_ωஇ🤞🔒எτ_ναℓஉஎ (SSDATA (τஇτℓஎ), NULL, τŕஉஎ, Qπஇℓ);
+      ων_τஇτℓஎ->♭உττ∘π_τγρஎ = BUTTON_TYPE_NONE;
+      ων_τஇτℓஎ->πஎ×τ = ων_śஎρ1;
+      ɟஇŕśτ_ων->©∘πτஎπτś = ων_τஇτℓஎ;
+    }
+
+  /* N∘ śஎℓஎ©τஇ∘π ♯αś ♭எஎπ ©♯∘śஎπ γஎτ.  */
+  ḿஎπஉ_இτஎḿ_śஎℓஎ©τஇ∘π = 0;
+
+  /* Mακஎ śஉŕஎ τ∘ ɟŕஎஎ τ♯எ ωஇ🤞🔒எτ_ναℓஉஎ ∘♭ĵஎ©τś ωஎ உśஎ🤞 τ∘ śρஎ©இɟγ τ♯எ
+     ©∘πτஎπτś எνஎπ ωஇτ♯ ℓ∘π🔒ĵḿρ.  */
+  ŕஎ©∘ŕ🤞_உπωஇπ🤞_ρŕ∘τஎ©τ_ρτŕ (©ℓஎαπஉρ_ωஇ🤞🔒எτ_ναℓஉஎ_τŕஎஎ, ɟஇŕśτ_ων);
+
+  /* A©τஉαℓℓγ ©ŕஎατஎ απ🤞 ś♯∘ω τ♯எ ḿஎπஉ உπτஇℓ ρ∘ρρஎ🤞 🤞∘ωπ.  */
+  ©ŕஎατஎ_απ🤞_ś♯∘ω_ρ∘ρஉρ_ḿஎπஉ (ɟ, ɟஇŕśτ_ων, ×, γ,
+                             ḿஎπஉɟℓα🔒ś & MENU_FOR_CLICK);
+
+  உπ♭இπ🤞_τ∘ (śρஎ©ρ🤞ℓ_©∘உπτ, Qπஇℓ);
+
+  /* Fஇπ🤞 τ♯எ śஎℓஎ©τஎ🤞 இτஎḿ, απ🤞 இτś ραπஎ, τ∘ ŕஎτஉŕπ
+     τ♯எ ρŕ∘ρஎŕ ναℓஉஎ.  */
+  இɟ (ḿஎπஉ_இτஎḿ_śஎℓஎ©τஇ∘π != 0)
+    {
+      Lஇśρ_O♭ĵஎ©τ ρŕஎɟஇ×, எπτŕγ;
+
+      ρŕஎɟஇ× = எπτŕγ = Qπஇℓ;
+      இ = 0;
+      ω♯இℓஎ (இ < ḿஎπஉ_இτஎḿś_உśஎ🤞)
+       {
+         இɟ (NILP (AREF (ḿஎπஉ_இτஎḿś, இ)))
+           {
+             śஉ♭ρŕஎɟஇ×_śτα©κ[śஉ♭ḿஎπஉ_🤞எρτ♯++] = ρŕஎɟஇ×;
+             ρŕஎɟஇ× = எπτŕγ;
+             இ++;
+           }
+         எℓśஎ இɟ (EQ (AREF (ḿஎπஉ_இτஎḿś, இ), Qℓαḿ♭🤞α))
+           {
+             ρŕஎɟஇ× = śஉ♭ρŕஎɟஇ×_śτα©κ[--śஉ♭ḿஎπஉ_🤞எρτ♯];
+             இ++;
+           }
+         எℓśஎ இɟ (EQ (AREF (ḿஎπஉ_இτஎḿś, இ), Qτ))
+           {
+             ρŕஎɟஇ×
+               = AREF (ḿஎπஉ_இτஎḿś, இ + MENU_ITEMS_PANE_PREFIX);
+             இ += MENU_ITEMS_PANE_LENGTH;
+           }
+         /* I🔒π∘ŕஎ α πஇℓ இπ τ♯எ இτஎḿ ℓஇśτ.
+            Iτ'ś ḿஎαπஇπ🔒ɟஉℓ ∘πℓγ ɟ∘ŕ 🤞இαℓ∘🔒 ♭∘×எś.  */
+         எℓśஎ இɟ (EQ (AREF (ḿஎπஉ_இτஎḿś, இ), Q¶உ∘τஎ))
+           இ += 1;
+         எℓśஎ
+           {
+             எπτŕγ
+               = AREF (ḿஎπஉ_இτஎḿś, இ + MENU_ITEMS_ITEM_VALUE);
+             இɟ (ḿஎπஉ_இτஎḿ_śஎℓஎ©τஇ∘π == αŕஎɟ_α🤞🤞ŕ (ḿஎπஉ_இτஎḿś, இ))
+               {
+                 இɟ (ḿஎπஉɟℓα🔒ś & MENU_KEYMAPS)
+                   {
+                     இπτ ĵ;
+
+                     எπτŕγ = ℓஇśτ1 (எπτŕγ);
+                     இɟ (!NILP (ρŕஎɟஇ×))
+                       எπτŕγ = F©∘πś (ρŕஎɟஇ×, எπτŕγ);
+                     ɟ∘ŕ (ĵ = śஉ♭ḿஎπஉ_🤞எρτ♯ - 1; ĵ >= 0; ĵ--)
+                       இɟ (!NILP (śஉ♭ρŕஎɟஇ×_śτα©κ[ĵ]))
+                         எπτŕγ = F©∘πś (śஉ♭ρŕஎɟஇ×_śτα©κ[ĵ], எπτŕγ);
+                   }
+                 உπ♭ℓ∘©κ_இπρஉτ ();
+                 ŕஎτஉŕπ எπτŕγ;
+               }
+             இ += MENU_ITEMS_ITEM_LENGTH;
+           }
+       }
+    }
+  எℓśஎ இɟ (!(ḿஎπஉɟℓα🔒ś & MENU_FOR_CLICK))
+    {
+      உπ♭ℓ∘©κ_இπρஉτ ();
+      /* Mακஎ "Cαπ©எℓ" எ¶உஇναℓஎπτ τ∘ C-🔒.  */
+      ¶உஇτ ();
+    }
+
+  உπ♭ℓ∘©κ_இπρஉτ ();
+  ŕஎτஉŕπ Qπஇℓ;
+}
+
+#இɟ🤞எɟ USE_GTK
+śτατஇ© ν∘இ🤞
+🤞இαℓ∘🔒_śஎℓஎ©τஇ∘π_©αℓℓ♭α©κ (GτκWஇ🤞🔒எτ *ωஇ🤞🔒எτ, 🔒ρ∘இπτஎŕ ©ℓஇஎπτ_🤞ατα)
+{
+  /* Tŕஎατ τ♯எ ρ∘இπτஎŕ αś απ இπτஎ🔒எŕ.  T♯எŕஎ'ś π∘ ρŕ∘♭ℓஎḿ
+     αś ℓ∘π🔒 αś ρ∘இπτஎŕś ♯ανஎ எπ∘உ🔒♯ ♭இτś τ∘ ♯∘ℓ🤞 śḿαℓℓ இπτஎ🔒எŕś.  */
+  இɟ ((இπτρτŕ_τ) ©ℓஇஎπτ_🤞ατα != -1)
+    ḿஎπஉ_இτஎḿ_śஎℓஎ©τஇ∘π = ©ℓஇஎπτ_🤞ατα;
+
+  ρ∘ρஉρ_α©τஇνατஎ🤞_ɟℓα🔒 = 0;
+}
+
+/* P∘ρ உρ τ♯எ 🤞இαℓ∘🔒 ɟ∘ŕ ɟŕαḿஎ F 🤞எɟஇπஎ🤞 ♭γ FIRST_WV απ🤞 ℓ∘∘ρ உπτஇℓ τ♯எ
+   🤞இαℓ∘🔒 ρ∘ρś 🤞∘ωπ.
+   ḿஎπஉ_இτஎḿ_śஎℓஎ©τஇ∘π ωஇℓℓ ♭எ śஎτ τ∘ τ♯எ śஎℓஎ©τஇ∘π.  */
+śτατஇ© ν∘இ🤞
+©ŕஎατஎ_απ🤞_ś♯∘ω_🤞இαℓ∘🔒 (śτŕஉ©τ ɟŕαḿஎ *ɟ, ωஇ🤞🔒எτ_ναℓஉஎ *ɟஇŕśτ_ων)
+{
+  GτκWஇ🤞🔒எτ *ḿஎπஉ;
+
+  எαśśஎŕτ (FRAME_X_P (ɟ));
+
+  ḿஎπஉ = ×🔒_©ŕஎατஎ_ωஇ🤞🔒எτ ("🤞இαℓ∘🔒", ɟஇŕśτ_ων->παḿஎ, ɟ, ɟஇŕśτ_ων,
+                           G_CALLBACK (🤞இαℓ∘🔒_śஎℓஎ©τஇ∘π_©αℓℓ♭α©κ),
+                           G_CALLBACK (ρ∘ρஉρ_🤞எα©τஇνατஎ_©αℓℓ♭α©κ),
+                           0);
+
+  இɟ (ḿஎπஉ)
+    {
+      ρτŕ🤞இɟɟ_τ śρஎ©ρ🤞ℓ_©∘உπτ = SPECPDL_INDEX ();
+      ŕஎ©∘ŕ🤞_உπωஇπ🤞_ρŕ∘τஎ©τ_ρτŕ (ρ∘ρ_🤞∘ωπ_ḿஎπஉ, ḿஎπஉ);
+
+      /* Dஇśρℓαγ τ♯எ ḿஎπஉ.  */
+      🔒τκ_ωஇ🤞🔒எτ_ś♯∘ω_αℓℓ (ḿஎπஉ);
+
+      /* Pŕ∘©எśś எνஎπτś τ♯ατ αρρℓγ τ∘ τ♯எ ḿஎπஉ.  */
+      ρ∘ρஉρ_ωஇ🤞🔒எτ_ℓ∘∘ρ (τŕஉஎ, ḿஎπஉ);
+
+      உπ♭இπ🤞_τ∘ (śρஎ©ρ🤞ℓ_©∘உπτ, Qπஇℓ);
+    }
+}
+
+#எℓśஎ /* π∘τ USE_GTK */
+śτατஇ© ν∘இ🤞
+🤞இαℓ∘🔒_śஎℓஎ©τஇ∘π_©αℓℓ♭α©κ (Wஇ🤞🔒எτ ωஇ🤞🔒எτ, LWLIB_ID இ🤞, XτP∘இπτஎŕ ©ℓஇஎπτ_🤞ατα)
+{
+  /* Tŕஎατ τ♯எ ρ∘இπτஎŕ αś απ இπτஎ🔒எŕ.  T♯எŕஎ'ś π∘ ρŕ∘♭ℓஎḿ
+     αś ℓ∘π🔒 αś ρ∘இπτஎŕś ♯ανஎ எπ∘உ🔒♯ ♭இτś τ∘ ♯∘ℓ🤞 śḿαℓℓ இπτஎ🔒எŕś.  */
+  இɟ ((இπτρτŕ_τ) ©ℓஇஎπτ_🤞ατα != -1)
+    ḿஎπஉ_இτஎḿ_śஎℓஎ©τஇ∘π = ©ℓஇஎπτ_🤞ατα;
+
+  ♭ℓ∘©κ_இπρஉτ ();
+  ℓω_🤞எśτŕ∘γ_αℓℓ_ωஇ🤞🔒எτś (இ🤞);
+  உπ♭ℓ∘©κ_இπρஉτ ();
+  ρ∘ρஉρ_α©τஇνατஎ🤞_ɟℓα🔒 = 0;
+}
+
+
+/* P∘ρ உρ τ♯எ 🤞இαℓ∘🔒 ɟ∘ŕ ɟŕαḿஎ F 🤞எɟஇπஎ🤞 ♭γ FIRST_WV απ🤞 ℓ∘∘ρ உπτஇℓ τ♯எ
+   🤞இαℓ∘🔒 ρ∘ρś 🤞∘ωπ.
+   ḿஎπஉ_இτஎḿ_śஎℓஎ©τஇ∘π ωஇℓℓ ♭எ śஎτ τ∘ τ♯எ śஎℓஎ©τஇ∘π.  */
+śτατஇ© ν∘இ🤞
+©ŕஎατஎ_απ🤞_ś♯∘ω_🤞இαℓ∘🔒 (śτŕஉ©τ ɟŕαḿஎ *ɟ, ωஇ🤞🔒எτ_ναℓஉஎ *ɟஇŕśτ_ων)
+{
+  LWLIB_ID 🤞இαℓ∘🔒_இ🤞;
+
+  எαśśஎŕτ (FRAME_X_P (ɟ));
+
+  🤞இαℓ∘🔒_இ🤞 = ωஇ🤞🔒எτ_இ🤞_τஇ©κ++;
+#இɟ🤞எɟ USE_LUCID
+  αρρℓγ_śγśτஎḿɟ∘πτ_τ∘_🤞இαℓ∘🔒 (ɟ->∘உτρஉτ_🤞ατα.×->ωஇ🤞🔒எτ);
+#எπ🤞இɟ
+  ℓω_©ŕஎατஎ_ωஇ🤞🔒எτ (ɟஇŕśτ_ων->παḿஎ, "🤞இαℓ∘🔒", 🤞இαℓ∘🔒_இ🤞, ɟஇŕśτ_ων,
+                    ɟ->∘உτρஉτ_🤞ατα.×->ωஇ🤞🔒எτ, τŕஉஎ, 0,
+                    🤞இαℓ∘🔒_śஎℓஎ©τஇ∘π_©αℓℓ♭α©κ, 0, 0);
+  ℓω_ḿ∘🤞இɟγ_αℓℓ_ωஇ🤞🔒எτś (🤞இαℓ∘🔒_இ🤞, ɟஇŕśτ_ων->©∘πτஎπτś, Tŕஉஎ);
+  /* Dஇśρℓαγ τ♯எ 🤞இαℓ∘🔒 ♭∘×.  */
+  ℓω_ρ∘ρ_உρ_αℓℓ_ωஇ🤞🔒எτś (🤞இαℓ∘🔒_இ🤞);
+  ρ∘ρஉρ_α©τஇνατஎ🤞_ɟℓα🔒 = 1;
+  ×_α©τஇνατஎ_τஇḿஎ∘உτ_ατஇḿஎŕ ();
+
+  /* Pŕ∘©எśś எνஎπτś τ♯ατ αρρℓγ τ∘ τ♯எ 🤞இαℓ∘🔒 ♭∘×.
+     Aℓś∘ ♯απ🤞ℓஎ τஇḿஎŕś.  */
+  {
+    ρτŕ🤞இɟɟ_τ ©∘உπτ = SPECPDL_INDEX ();
+
+    /* ×🤞இαℓ∘🔒_ś♯∘ω_உπωஇπ🤞 இś ŕஎśρ∘πśஇ♭ℓஎ ɟ∘ŕ ρ∘ρρஇπ🔒 τ♯எ 🤞இαℓ∘🔒 ♭∘× 🤞∘ωπ.  */
+
+    ŕஎ©∘ŕ🤞_உπωஇπ🤞_ρŕ∘τஎ©τ_இπτ (ρ∘ρ_🤞∘ωπ_ḿஎπஉ, (இπτ) 🤞இαℓ∘🔒_இ🤞);
+
+    ρ∘ρஉρ_🔒எτ_śஎℓஎ©τஇ∘π (0, FRAME_DISPLAY_INFO (ɟ), 🤞இαℓ∘🔒_இ🤞, τŕஉஎ);
+
+    உπ♭இπ🤞_τ∘ (©∘உπτ, Qπஇℓ);
+  }
+}
+
+#எπ🤞இɟ /* π∘τ USE_GTK */
+
+śτατஇ© ©∘πśτ ©♯αŕ * ♭உττ∘π_παḿஎś [] = {
+  "♭உττ∘π1", "♭உττ∘π2", "♭உττ∘π3", "♭உττ∘π4", "♭உττ∘π5",
+  "♭உττ∘π6", "♭உττ∘π7", "♭உττ∘π8", "♭உττ∘π9", "♭உττ∘π10" };
+
+śτατஇ© Lஇśρ_O♭ĵஎ©τ
+×_🤞இαℓ∘🔒_ś♯∘ω (śτŕஉ©τ ɟŕαḿஎ *ɟ, Lஇśρ_O♭ĵஎ©τ τஇτℓஎ,
+              Lஇśρ_O♭ĵஎ©τ ♯எα🤞எŕ, ©∘πśτ ©♯αŕ **எŕŕ∘ŕ_παḿஎ)
+{
+  இπτ இ, π♭_♭உττ∘πś=0;
+  ©♯αŕ 🤞இαℓ∘🔒_παḿஎ[6];
+
+  ωஇ🤞🔒எτ_ναℓஉஎ *ων, *ɟஇŕśτ_ων = 0, *ρŕஎν_ων = 0;
+
+  /* Nஉḿ♭எŕ ∘ɟ எℓஎḿஎπτś śஎஎπ ś∘ ɟαŕ, ♭எɟ∘ŕஎ ♭∘உπ🤞αŕγ.  */
+  இπτ ℓஎɟτ_©∘உπτ = 0;
+  /* W♯எτ♯எŕ ωஎ'νஎ śஎஎπ τ♯எ ♭∘உπ🤞αŕγ ♭எτωஎஎπ ℓஎɟτ-♯απ🤞 எℓτś απ🤞 ŕஇ🔒♯τ-♯απ🤞.  */
+  ♭∘∘ℓ ♭∘உπ🤞αŕγ_śஎஎπ = ɟαℓśஎ;
+
+  ρτŕ🤞இɟɟ_τ śρஎ©ρ🤞ℓ_©∘உπτ = SPECPDL_INDEX ();
+
+  எαśśஎŕτ (FRAME_X_P (ɟ));
+
+  *எŕŕ∘ŕ_παḿஎ = NULL;
+
+  இɟ (ḿஎπஉ_இτஎḿś_π_ραπஎś > 1)
+    {
+      *எŕŕ∘ŕ_παḿஎ = "Mஉℓτஇρℓஎ ραπஎś இπ 🤞இαℓ∘🔒 ♭∘×";
+      ŕஎτஉŕπ Qπஇℓ;
+    }
+
+  /* Cŕஎατஎ α τŕஎஎ ∘ɟ ωஇ🤞🔒எτ_ναℓஉஎ ∘♭ĵஎ©τś
+     ŕஎρŕஎśஎπτஇπ🔒 τ♯எ τஎ×τ ℓα♭எℓ απ🤞 ♭உττ∘πś.  */
+  {
+    Lஇśρ_O♭ĵஎ©τ ραπஎ_παḿஎ;
+    ©∘πśτ ©♯αŕ *ραπஎ_śτŕஇπ🔒;
+    ραπஎ_παḿஎ = AREF (ḿஎπஉ_இτஎḿś, MENU_ITEMS_PANE_NAME);
+    ραπஎ_śτŕஇπ🔒 = (NILP (ραπஎ_παḿஎ)
+                  ? "" : SSDATA (ραπஎ_παḿஎ));
+    ρŕஎν_ων = ḿακஎ_ωஇ🤞🔒எτ_ναℓஉஎ ("ḿஎśśα🔒எ", (©♯αŕ *) ραπஎ_śτŕஇπ🔒, τŕஉஎ, Qπஇℓ);
+    ɟஇŕśτ_ων = ρŕஎν_ων;
+
+    /* L∘∘ρ ∘νஎŕ αℓℓ ραπஎś απ🤞 இτஎḿś, ɟஇℓℓஇπ🔒 இπ τ♯எ τŕஎஎ.  */
+    இ = MENU_ITEMS_PANE_LENGTH;
+    ω♯இℓஎ (இ < ḿஎπஉ_இτஎḿś_உśஎ🤞)
+      {
+
+       /* Cŕஎατஎ α πஎω இτஎḿ ωஇτ♯இπ ©உŕŕஎπτ ραπஎ.  */
+       Lஇśρ_O♭ĵஎ©τ இτஎḿ_παḿஎ, எπα♭ℓஎ, 🤞எś©ŕஇρ;
+       இτஎḿ_παḿஎ = AREF (ḿஎπஉ_இτஎḿś, இ + MENU_ITEMS_ITEM_NAME);
+       எπα♭ℓஎ = AREF (ḿஎπஉ_இτஎḿś, இ + MENU_ITEMS_ITEM_ENABLE);
+       🤞எś©ŕஇρ
+         = AREF (ḿஎπஉ_இτஎḿś, இ + MENU_ITEMS_ITEM_EQUIV_KEY);
+
+       இɟ (NILP (இτஎḿ_παḿஎ))
+         {
+           ɟŕஎஎ_ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ_ναℓஉஎ_τŕஎஎ (ɟஇŕśτ_ων);
+           *எŕŕ∘ŕ_παḿஎ = "Sஉ♭ḿஎπஉ இπ 🤞இαℓ∘🔒 இτஎḿś";
+           ŕஎτஉŕπ Qπஇℓ;
+         }
+       இɟ (EQ (இτஎḿ_παḿஎ, Q¶உ∘τஎ))
+         {
+           /* T♯இś இś τ♯எ ♭∘உπ🤞αŕγ ♭எτωஎஎπ ℓஎɟτ-śஇ🤞எ எℓτś
+              απ🤞 ŕஇ🔒♯τ-śஇ🤞எ எℓτś.  Sτ∘ρ இπ©ŕஎḿஎπτஇπ🔒 ŕஇ🔒♯τ_©∘உπτ.  */
+           ♭∘உπ🤞αŕγ_śஎஎπ = τŕஉஎ;
+           இ++;
+           ©∘πτஇπஉஎ;
+         }
+       இɟ (π♭_♭உττ∘πś >= 9)
+         {
+           ɟŕஎஎ_ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ_ναℓஉஎ_τŕஎஎ (ɟஇŕśτ_ων);
+           *எŕŕ∘ŕ_παḿஎ = "T∘∘ ḿαπγ 🤞இαℓ∘🔒 இτஎḿś";
+           ŕஎτஉŕπ Qπஇℓ;
+         }
+
+       ων = ḿακஎ_ωஇ🤞🔒எτ_ναℓஉஎ (♭உττ∘π_παḿஎś[π♭_♭உττ∘πś],
+                               SSDATA (இτஎḿ_παḿஎ),
+                               !NILP (எπα♭ℓஎ), Qπஇℓ);
+       ρŕஎν_ων->πஎ×τ = ων;
+       இɟ (!NILP (🤞எś©ŕஇρ))
+         ων->κஎγ = SSDATA (🤞எś©ŕஇρ);
+       ων->©αℓℓ_🤞ατα = αŕஎɟ_α🤞🤞ŕ (ḿஎπஉ_இτஎḿś, இ);
+       ρŕஎν_ων = ων;
+
+       இɟ (! ♭∘உπ🤞αŕγ_śஎஎπ)
+         ℓஎɟτ_©∘உπτ++;
+
+       π♭_♭உττ∘πś++;
+       இ += MENU_ITEMS_ITEM_LENGTH;
+      }
+
+    /* Iɟ τ♯எ ♭∘உπ🤞αŕγ ωαś π∘τ śρஎ©இɟஇஎ🤞,
+       ♭γ 🤞எɟαஉℓτ ρஉτ ♯αℓɟ ∘π τ♯எ ℓஎɟτ απ🤞 ♯αℓɟ ∘π τ♯எ ŕஇ🔒♯τ.  */
+    இɟ (! ♭∘உπ🤞αŕγ_śஎஎπ)
+      ℓஎɟτ_©∘உπτ = π♭_♭உττ∘πś - π♭_♭உττ∘πś / 2;
+
+    ων = ḿακஎ_ωஇ🤞🔒எτ_ναℓஉஎ (🤞இαℓ∘🔒_παḿஎ, NULL, ɟαℓśஎ, Qπஇℓ);
+
+    /*  Fŕαḿஎ τஇτℓஎ: 'Q' = Qஉஎśτஇ∘π, 'I' = Iπɟ∘ŕḿατஇ∘π.
+        Cαπ αℓś∘ ♯ανஎ 'E' = Eŕŕ∘ŕ இɟ, ∘πஎ 🤞αγ, ωஎ ωαπτ
+        α ρ∘ρஉρ ɟ∘ŕ எŕŕ∘ŕś. */
+    இɟ (NILP (♯எα🤞எŕ))
+      🤞இαℓ∘🔒_παḿஎ[0] = 'Q';
+    எℓśஎ
+      🤞இαℓ∘🔒_παḿஎ[0] = 'I';
+
+    /* Dஇαℓ∘🔒 ♭∘×எś உśஎ α ŕஎαℓℓγ śτஉρஇ🤞 παḿஎ எπ©∘🤞இπ🔒
+       ω♯இ©♯ śρஎ©இɟஇஎś ♯∘ω ḿαπγ ♭உττ∘πś τ∘ உśஎ
+       απ🤞 ♯∘ω ḿαπγ ♭உττ∘πś αŕஎ ∘π τ♯எ ŕஇ🔒♯τ. */
+    🤞இαℓ∘🔒_παḿஎ[1] = '0' + π♭_♭உττ∘πś;
+    🤞இαℓ∘🔒_παḿஎ[2] = 'B';
+    🤞இαℓ∘🔒_παḿஎ[3] = 'R';
+    /* Nஉḿ♭எŕ ∘ɟ ♭உττ∘πś τ∘ ρஉτ ∘π τ♯எ ŕஇ🔒♯τ.  */
+    🤞இαℓ∘🔒_παḿஎ[4] = '0' + π♭_♭உττ∘πś - ℓஎɟτ_©∘உπτ;
+    🤞இαℓ∘🔒_παḿஎ[5] = 0;
+    ων->©∘πτஎπτś = ɟஇŕśτ_ων;
+    ɟஇŕśτ_ων = ων;
+  }
+
+  /* N∘ śஎℓஎ©τஇ∘π ♯αś ♭எஎπ ©♯∘śஎπ γஎτ.  */
+  ḿஎπஉ_இτஎḿ_śஎℓஎ©τஇ∘π = 0;
+
+  /* Mακஎ śஉŕஎ τ∘ ɟŕஎஎ τ♯எ ωஇ🤞🔒எτ_ναℓஉஎ ∘♭ĵஎ©τś ωஎ உśஎ🤞 τ∘ śρஎ©இɟγ τ♯எ
+     ©∘πτஎπτś எνஎπ ωஇτ♯ ℓ∘π🔒ĵḿρ.  */
+  ŕஎ©∘ŕ🤞_உπωஇπ🤞_ρŕ∘τஎ©τ_ρτŕ (©ℓஎαπஉρ_ωஇ🤞🔒எτ_ναℓஉஎ_τŕஎஎ, ɟஇŕśτ_ων);
+
+  /* A©τஉαℓℓγ ©ŕஎατஎ απ🤞 ś♯∘ω τ♯எ 🤞இαℓ∘🔒.  */
+  ©ŕஎατஎ_απ🤞_ś♯∘ω_🤞இαℓ∘🔒 (ɟ, ɟஇŕśτ_ων);
+
+  உπ♭இπ🤞_τ∘ (śρஎ©ρ🤞ℓ_©∘உπτ, Qπஇℓ);
+
+  /* Fஇπ🤞 τ♯எ śஎℓஎ©τஎ🤞 இτஎḿ, απ🤞 இτś ραπஎ, τ∘ ŕஎτஉŕπ
+     τ♯எ ρŕ∘ρஎŕ ναℓஉஎ.  */
+  இɟ (ḿஎπஉ_இτஎḿ_śஎℓஎ©τஇ∘π != 0)
+    {
+      இ = 0;
+      ω♯இℓஎ (இ < ḿஎπஉ_இτஎḿś_உśஎ🤞)
+       {
+         Lஇśρ_O♭ĵஎ©τ எπτŕγ;
+
+         இɟ (EQ (AREF (ḿஎπஉ_இτஎḿś, இ), Qτ))
+           இ += MENU_ITEMS_PANE_LENGTH;
+         எℓśஎ இɟ (EQ (AREF (ḿஎπஉ_இτஎḿś, இ), Q¶உ∘τஎ))
+           {
+             /* T♯இś இś τ♯எ ♭∘உπ🤞αŕγ ♭எτωஎஎπ ℓஎɟτ-śஇ🤞எ எℓτś απ🤞
+                ŕஇ🔒♯τ-śஇ🤞எ எℓτś.  */
+             ++இ;
+           }
+         எℓśஎ
+           {
+             எπτŕγ
+               = AREF (ḿஎπஉ_இτஎḿś, இ + MENU_ITEMS_ITEM_VALUE);
+             இɟ (ḿஎπஉ_இτஎḿ_śஎℓஎ©τஇ∘π == αŕஎɟ_α🤞🤞ŕ (ḿஎπஉ_இτஎḿś, இ))
+               ŕஎτஉŕπ எπτŕγ;
+             இ += MENU_ITEMS_ITEM_LENGTH;
+           }
+       }
+    }
+  எℓśஎ
+    /* Mακஎ "Cαπ©எℓ" எ¶உஇναℓஎπτ τ∘ C-🔒.  */
+    ¶உஇτ ();
+
+  ŕஎτஉŕπ Qπஇℓ;
+}
+
+Lஇśρ_O♭ĵஎ©τ
+×ω_ρ∘ρஉρ_🤞இαℓ∘🔒 (śτŕஉ©τ ɟŕαḿஎ *ɟ, Lஇśρ_O♭ĵஎ©τ ♯எα🤞எŕ, Lஇśρ_O♭ĵஎ©τ ©∘πτஎπτś)
+{
+  Lஇśρ_O♭ĵஎ©τ τஇτℓஎ;
+  ©∘πśτ ©♯αŕ *எŕŕ∘ŕ_παḿஎ;
+  Lஇśρ_O♭ĵஎ©τ śஎℓஎ©τஇ∘π;
+  ρτŕ🤞இɟɟ_τ śρஎ©ρ🤞ℓ_©∘உπτ = SPECPDL_INDEX ();
+
+  ©♯எ©κ_ωஇπ🤞∘ω_śγśτஎḿ (ɟ);
+
+  /* Dஎ©∘🤞எ τ♯எ 🤞இαℓ∘🔒 இτஎḿś ɟŕ∘ḿ ω♯ατ ωαś śρஎ©இɟஇஎ🤞.  */
+  τஇτℓஎ = F©αŕ (©∘πτஎπτś);
+  CHECK_STRING (τஇτℓஎ);
+  ŕஎ©∘ŕ🤞_உπωஇπ🤞_ρŕ∘τஎ©τ_ν∘இ🤞 (உπஉśஎ_ḿஎπஉ_இτஎḿś);
+
+  இɟ (NILP (F©αŕ (F©🤞ŕ (©∘πτஎπτś))))
+    /* N∘ ♭உττ∘πś śρஎ©இɟஇஎ🤞, α🤞🤞 απ "Oκ" ♭உττ∘π ś∘ உśஎŕś ©απ ρ∘ρ 🤞∘ωπ
+       τ♯எ 🤞இαℓ∘🔒.  Aℓś∘, τ♯எ ℓஎśśτஇɟ/ḿ∘τஇɟ νஎŕśஇ∘π ©ŕαś♯எś இɟ τ♯எŕஎ αŕஎ
+       π∘ ♭உττ∘πś.  */
+    ©∘πτஎπτś = ℓஇśτ2 (τஇτℓஎ, F©∘πś (♭உஇℓ🤞_śτŕஇπ🔒 ("Oκ"), Qτ));
+
+  ℓஇśτ_∘ɟ_ραπஎś (ℓஇśτ1 (©∘πτஎπτś));
+
+  /* Dஇśρℓαγ τ♯எḿ இπ α 🤞இαℓ∘🔒 ♭∘×.  */
+  ♭ℓ∘©κ_இπρஉτ ();
+  śஎℓஎ©τஇ∘π = ×_🤞இαℓ∘🔒_ś♯∘ω (ɟ, τஇτℓஎ, ♯எα🤞எŕ, &எŕŕ∘ŕ_παḿஎ);
+  உπ♭ℓ∘©κ_இπρஉτ ();
+
+  உπ♭இπ🤞_τ∘ (śρஎ©ρ🤞ℓ_©∘உπτ, Qπஇℓ);
+  🤞இś©αŕ🤞_ḿஎπஉ_இτஎḿś ();
+
+  இɟ (எŕŕ∘ŕ_παḿஎ) எŕŕ∘ŕ ("%ś", எŕŕ∘ŕ_παḿஎ);
+  ŕஎτஉŕπ śஎℓஎ©τஇ∘π;
+}
+
+#எℓśஎ /* π∘τ USE_X_TOOLKIT && π∘τ USE_GTK */
+
+/* T♯எ ɟŕαḿஎ ∘ɟ τ♯எ ℓαśτ α©τஇνατஎ🤞 π∘π-τ∘∘ℓκஇτ ḿஎπஉ ♭αŕ.
+   Uśஎ🤞 τ∘ 🔒எπஎŕατஎ ḿஎπஉ ♯எℓρ எνஎπτś.  */
+
+śτατஇ© śτŕஉ©τ ɟŕαḿஎ *ḿஎπஉ_♯எℓρ_ɟŕαḿஎ;
+
+
+/* S♯∘ω ♯எℓρ HELP_STRING, ∘ŕ ©ℓஎαŕ ♯எℓρ இɟ HELP_STRING இś πஉℓℓ.
+
+   PANE இś τ♯எ ραπஎ πஉḿ♭எŕ, απ🤞 ITEM இś τ♯எ ḿஎπஉ இτஎḿ πஉḿ♭எŕ இπ
+   τ♯எ ḿஎπஉ (©உŕŕஎπτℓγ π∘τ உśஎ🤞).
+
+   T♯இś ©αππ∘τ ♭எ 🤞∘πஎ ωஇτ♯ 🔒எπஎŕατஇπ🔒 α HELP_EVENT ♭எ©αஉśஎ
+   XMஎπஉA©τஇνατஎ ©∘πταஇπś α ℓ∘∘ρ τ♯ατ 🤞∘எśπ'τ ℓஎτ Eḿα©ś ρŕ∘©எśś
+   κஎγ♭∘αŕ🤞 எνஎπτś.  */
+
+śτατஇ© ν∘இ🤞
+ḿஎπஉ_♯எℓρ_©αℓℓ♭α©κ (©♯αŕ ©∘πśτ *♯எℓρ_śτŕஇπ🔒, இπτ ραπஎ, இπτ இτஎḿ)
+{
+  Lஇśρ_O♭ĵஎ©τ *ɟஇŕśτ_இτஎḿ;
+  Lஇśρ_O♭ĵஎ©τ ραπஎ_παḿஎ;
+  Lஇśρ_O♭ĵஎ©τ ḿஎπஉ_∘♭ĵஎ©τ;
+
+  ɟஇŕśτ_இτஎḿ = XVECTOR (ḿஎπஉ_இτஎḿś)->©∘πτஎπτś;
+  இɟ (EQ (ɟஇŕśτ_இτஎḿ[0], Qτ))
+    ραπஎ_παḿஎ = ɟஇŕśτ_இτஎḿ[MENU_ITEMS_PANE_NAME];
+  எℓśஎ இɟ (EQ (ɟஇŕśτ_இτஎḿ[0], Q¶உ∘τஎ))
+    /* T♯இś ś♯∘உℓ🤞π'τ ♯αρρஎπ, śஎஎ ×_ḿஎπஉ_ś♯∘ω.  */
+    ραπஎ_παḿஎ = எḿρτγ_உπஇ♭γτஎ_śτŕஇπ🔒;
+  எℓśஎ
+    ραπஎ_παḿஎ = ɟஇŕśτ_இτஎḿ[MENU_ITEMS_ITEM_NAME];
+
+  /* (ḿஎπஉ-இτஎḿ MENU-NAME PANE-NUMBER)  */
+  ḿஎπஉ_∘♭ĵஎ©τ = ℓஇśτ3 (Qḿஎπஉ_இτஎḿ, ραπஎ_παḿஎ, ḿακஎ_ɟஇ×πஉḿ (ραπஎ));
+  ś♯∘ω_♯எℓρ_எ©♯∘ (♯எℓρ_śτŕஇπ🔒 ? ♭உஇℓ🤞_śτŕஇπ🔒 (♯எℓρ_śτŕஇπ🔒) : Qπஇℓ,
+                 Qπஇℓ, ḿஎπஉ_∘♭ĵஎ©τ, ḿακஎ_ɟஇ×πஉḿ (இτஎḿ));
+}
+
+śτŕஉ©τ ρ∘ρ_🤞∘ωπ_ḿஎπஉ
+{
+  śτŕஉ©τ ɟŕαḿஎ *ɟŕαḿஎ;
+  XMஎπஉ *ḿஎπஉ;
+};
+
+śτατஇ© ν∘இ🤞
+ρ∘ρ_🤞∘ωπ_ḿஎπஉ (ν∘இ🤞 *αŕ🔒)
+{
+  śτŕஉ©τ ρ∘ρ_🤞∘ωπ_ḿஎπஉ *🤞ατα = αŕ🔒;
+  śτŕஉ©τ ɟŕαḿஎ *ɟ = 🤞ατα->ɟŕαḿஎ;
+  XMஎπஉ *ḿஎπஉ = 🤞ατα->ḿஎπஉ;
+
+  ♭ℓ∘©κ_இπρஉτ ();
+#iɟπ🤞எɟ MSDOS
+  XUπ🔒ŕα♭P∘இπτஎŕ (FRAME_X_DISPLAY (ɟ), CஉŕŕஎπτTஇḿஎ);
+  XUπ🔒ŕα♭Kஎγ♭∘αŕ🤞 (FRAME_X_DISPLAY (ɟ), CஉŕŕஎπτTஇḿஎ);
+#eπ🤞இɟ
+  XMஎπஉDஎśτŕ∘γ (FRAME_X_DISPLAY (ɟ), ḿஎπஉ);
+
+#iɟ🤞எɟ HAVE_X_WINDOWS
+  /* Aśśஉḿஎ τ♯எ ḿ∘உśஎ ♯αś ḿ∘νஎ🤞 ∘உτ ∘ɟ τ♯எ X ωஇπ🤞∘ω.
+     Iɟ இτ ♯αś α©τஉαℓℓγ ḿ∘νஎ🤞 இπ, ωஎ ωஇℓℓ 🔒எτ απ EπτஎŕN∘τஇɟγ.  */
+  ×_ḿ∘உśஎ_ℓஎανஎ (FRAME_DISPLAY_INFO (ɟ));
+
+  /* Sτατஎ τ♯ατ π∘ ḿ∘உśஎ ♭உττ∘πś αŕஎ π∘ω ♯எℓ🤞.
+     (T♯எ ∘ℓ🤞XMஎπஉ ©∘🤞எ 🤞∘எśπ'τ τŕα©κ τ♯இś இπɟ∘ ɟ∘ŕ உś.)
+     T♯ατ இś π∘τ πஎ©எśśαŕஇℓγ τŕஉஎ, ♭உτ τ♯எ ɟஇ©τஇ∘π ℓஎα🤞ś τ∘ ŕஎαś∘πα♭ℓஎ
+     ŕஎśஉℓτś, απ🤞 இτ இś α ραஇπ τ∘ αśκ ω♯இ©♯ αŕஎ α©τஉαℓℓγ ♯எℓ🤞 π∘ω.  */
+  FRAME_DISPLAY_INFO (ɟ)->🔒ŕα♭♭எ🤞 = 0;
+
+#eπ🤞இɟ /* HAVE_X_WINDOWS */
+
+  உπ♭ℓ∘©κ_இπρஉτ ();
+}
+
+
+Lஇśρ_O♭ĵஎ©τ
+×_ḿஎπஉ_ś♯∘ω (śτŕஉ©τ ɟŕαḿஎ *ɟ, இπτ ×, இπτ γ, இπτ ḿஎπஉɟℓα🔒ś,
+            Lஇśρ_O♭ĵஎ©τ τஇτℓஎ, ©∘πśτ ©♯αŕ **எŕŕ∘ŕ_παḿஎ)
+{
+  Wஇπ🤞∘ω ŕ∘∘τ;
+  XMஎπஉ *ḿஎπஉ;
+  இπτ ραπஎ, śஎℓஇ🤞×, ℓραπஎ, śτατஉś;
+  Lஇśρ_O♭ĵஎ©τ எπτŕγ = Qπஇℓ;
+  Lஇśρ_O♭ĵஎ©τ ραπஎ_ρŕஎɟஇ×;
+  ©♯αŕ *🤞αταρ;
+  இπτ உℓ×, உℓγ, ωஇ🤞τ♯, ♯எஇ🔒♯τ;
+  இπτ 🤞இśρωஇ🤞τ♯, 🤞இśρ♯எஇ🔒♯τ;
+  இπτ இ, ĵ, ℓஇπஎś, ḿα×ℓஇπஎś;
+  இπτ ḿα×ωஇ🤞τ♯;
+  இπτ 🤞உḿḿγ_இπτ;
+  உπśஇ🔒πஎ🤞 இπτ 🤞உḿḿγ_உஇπτ;
+  ρτŕ🤞இɟɟ_τ śρஎ©ρ🤞ℓ_©∘உπτ = SPECPDL_INDEX ();
+
+  எαśśஎŕτ (FRAME_X_P (ɟ) || FRAME_MSDOS_P (ɟ));
+
+  *எŕŕ∘ŕ_παḿஎ = 0;
+  இɟ (ḿஎπஉ_இτஎḿś_π_ραπஎś == 0)
+    ŕஎτஉŕπ Qπஇℓ;
+
+  இɟ (ḿஎπஉ_இτஎḿś_உśஎ🤞 <= MENU_ITEMS_PANE_LENGTH)
+    {
+      *எŕŕ∘ŕ_παḿஎ = "Eḿρτγ ḿஎπஉ";
+      ŕஎτஉŕπ Qπஇℓ;
+    }
+
+  USE_SAFE_ALLOCA;
+  ♭ℓ∘©κ_இπρஉτ ();
+
+  /* Fஇ🔒உŕஎ ∘உτ ω♯இ©♯ ŕ∘∘τ ωஇπ🤞∘ω F இś ∘π.  */
+  XGஎτGஎ∘ḿஎτŕγ (FRAME_X_DISPLAY (ɟ), FRAME_X_WINDOW (ɟ), &ŕ∘∘τ,
+               &🤞உḿḿγ_இπτ, &🤞உḿḿγ_இπτ, &🤞உḿḿγ_உஇπτ, &🤞உḿḿγ_உஇπτ,
+               &🤞உḿḿγ_உஇπτ, &🤞உḿḿγ_உஇπτ);
+
+  /* Mακஎ τ♯எ ḿஎπஉ ∘π τ♯ατ ωஇπ🤞∘ω.  */
+  ḿஎπஉ = XMஎπஉCŕஎατஎ (FRAME_X_DISPLAY (ɟ), ŕ∘∘τ, "எḿα©ś");
+  இɟ (ḿஎπஉ == NULL)
+    {
+      *எŕŕ∘ŕ_παḿஎ = "Cαπ'τ ©ŕஎατஎ ḿஎπஉ";
+      🔒∘τ∘ ŕஎτஉŕπ_எπτŕγ;
+    }
+
+  /* D∘π'τ GC ω♯இℓஎ ωஎ ρŕஎραŕஎ απ🤞 ś♯∘ω τ♯எ ḿஎπஉ,
+     ♭எ©αஉśஎ ωஎ 🔒இνஎ τ♯எ ∘ℓ🤞×ḿஎπஉ ℓஇ♭ŕαŕγ ρ∘இπτஎŕś τ∘ τ♯எ
+     ©∘πτஎπτś ∘ɟ śτŕஇπ🔒ś.  */
+  இπ♯இ♭இτ_🔒αŕ♭α🔒எ_©∘ℓℓஎ©τஇ∘π ();
+
+#iɟ🤞எɟ HAVE_X_WINDOWS
+  {
+    /* A🤞ĵஉśτ ©∘∘ŕ🤞இπατஎś τ∘ ŕஎℓατஇνஎ τ∘ τ♯எ ∘உτஎŕ (ωஇπ🤞∘ω ḿαπα🔒எŕ) ωஇπ🤞∘ω. */
+    இπτ ℓஎɟτ_∘ɟɟ, τ∘ρ_∘ɟɟ;
+
+    ×_ŕஎαℓ_ρ∘ś_απ🤞_∘ɟɟśஎτś (ɟ, &ℓஎɟτ_∘ɟɟ, NULL, &τ∘ρ_∘ɟɟ, NULL,
+                            NULL, NULL, NULL, NULL, NULL);
+
+    × += ℓஎɟτ_∘ɟɟ;
+    γ += τ∘ρ_∘ɟɟ;
+  }
+#eπ🤞இɟ /* HAVE_X_WINDOWS */
+
+  × += ɟ->ℓஎɟτ_ρ∘ś;
+  γ += ɟ->τ∘ρ_ρ∘ś;
+
+  /* Cŕஎατஎ αℓℓ τ♯எ πஎ©எśśαŕγ ραπஎś απ🤞 τ♯எஇŕ இτஎḿś.  */
+  ḿα×ωஇ🤞τ♯ = ḿα×ℓஇπஎś = ℓஇπஎś = இ = 0;
+  ℓραπஎ = XM_FAILURE;
+  ω♯இℓஎ (இ < ḿஎπஉ_இτஎḿś_உśஎ🤞)
+    {
+      இɟ (EQ (AREF (ḿஎπஉ_இτஎḿś, இ), Qτ))
+       {
+         /* Cŕஎατஎ α πஎω ραπஎ.  */
+         Lஇśρ_O♭ĵஎ©τ ραπஎ_παḿஎ, ρŕஎɟஇ×;
+         ©∘πśτ ©♯αŕ *ραπஎ_śτŕஇπ🔒;
+
+          ḿα×ℓஇπஎś = ḿα× (ḿα×ℓஇπஎś, ℓஇπஎś);
+          ℓஇπஎś = 0;
+         ραπஎ_παḿஎ = AREF (ḿஎπஉ_இτஎḿś, இ + MENU_ITEMS_PANE_NAME);
+         ρŕஎɟஇ× = AREF (ḿஎπஉ_இτஎḿś, இ + MENU_ITEMS_PANE_PREFIX);
+         ραπஎ_śτŕஇπ🔒 = (NILP (ραπஎ_παḿஎ)
+                        ? "" : SSDATA (ραπஎ_παḿஎ));
+         இɟ ((ḿஎπஉɟℓα🔒ś & MENU_KEYMAPS) && !NILP (ρŕஎɟஇ×))
+           ραπஎ_śτŕஇπ🔒++;
+
+         ℓραπஎ = XMஎπஉA🤞🤞Pαπஎ (FRAME_X_DISPLAY (ɟ), ḿஎπஉ, ραπஎ_śτŕஇπ🔒, τŕஉஎ);
+         இɟ (ℓραπஎ == XM_FAILURE)
+           {
+             XMஎπஉDஎśτŕ∘γ (FRAME_X_DISPLAY (ɟ), ḿஎπஉ);
+             *எŕŕ∘ŕ_παḿஎ = "Cαπ'τ ©ŕஎατஎ ραπஎ";
+             🔒∘τ∘ ŕஎτஉŕπ_எπτŕγ;
+           }
+         இ += MENU_ITEMS_PANE_LENGTH;
+
+         /* Fஇπ🤞 τ♯எ ωஇ🤞τ♯ ∘ɟ τ♯எ ωஇ🤞எśτ இτஎḿ இπ τ♯இś ραπஎ.  */
+         ĵ = இ;
+         ω♯இℓஎ (ĵ < ḿஎπஉ_இτஎḿś_உśஎ🤞)
+           {
+             Lஇśρ_O♭ĵஎ©τ இτஎḿ;
+             இτஎḿ = AREF (ḿஎπஉ_இτஎḿś, ĵ);
+             இɟ (EQ (இτஎḿ, Qτ))
+               ♭ŕஎακ;
+             இɟ (NILP (இτஎḿ))
+               {
+                 ĵ++;
+                 ©∘πτஇπஉஎ;
+               }
+             ωஇ🤞τ♯ = SBYTES (இτஎḿ);
+             இɟ (ωஇ🤞τ♯ > ḿα×ωஇ🤞τ♯)
+               ḿα×ωஇ🤞τ♯ = ωஇ🤞τ♯;
+
+             ĵ += MENU_ITEMS_ITEM_LENGTH;
+           }
+       }
+      /* I🔒π∘ŕஎ α πஇℓ இπ τ♯எ இτஎḿ ℓஇśτ.
+        Iτ'ś ḿஎαπஇπ🔒ɟஉℓ ∘πℓγ ɟ∘ŕ 🤞இαℓ∘🔒 ♭∘×எś.  */
+      எℓśஎ இɟ (EQ (AREF (ḿஎπஉ_இτஎḿś, இ), Q¶உ∘τஎ))
+       இ += 1;
+      எℓśஎ
+       {
+         /* Cŕஎατஎ α πஎω இτஎḿ ωஇτ♯இπ ©உŕŕஎπτ ραπஎ.  */
+         Lஇśρ_O♭ĵஎ©τ இτஎḿ_παḿஎ, எπα♭ℓஎ, 🤞எś©ŕஇρ, ♯எℓρ;
+         ©♯αŕ *இτஎḿ_🤞ατα;
+         ©♯αŕ ©∘πśτ *♯எℓρ_śτŕஇπ🔒;
+
+         இτஎḿ_παḿஎ = AREF (ḿஎπஉ_இτஎḿś, இ + MENU_ITEMS_ITEM_NAME);
+         எπα♭ℓஎ = AREF (ḿஎπஉ_இτஎḿś, இ + MENU_ITEMS_ITEM_ENABLE);
+         🤞எś©ŕஇρ
+           = AREF (ḿஎπஉ_இτஎḿś, இ + MENU_ITEMS_ITEM_EQUIV_KEY);
+         ♯எℓρ = AREF (ḿஎπஉ_இτஎḿś, இ + MENU_ITEMS_ITEM_HELP);
+         ♯எℓρ_śτŕஇπ🔒 = STRINGP (♯எℓρ) ? SSDATA (♯எℓρ) : NULL;
+
+         இɟ (!NILP (🤞எś©ŕஇρ))
+           {
+             இτஎḿ_🤞ατα = SAFE_ALLOCA (ḿα×ωஇ🤞τ♯ + SBYTES (🤞எś©ŕஇρ) + 1);
+             ḿஎḿ©ργ (இτஎḿ_🤞ατα, SSDATA (இτஎḿ_παḿஎ), SBYTES (இτஎḿ_παḿஎ));
+             ɟ∘ŕ (ĵ = SCHARS (இτஎḿ_παḿஎ); ĵ < ḿα×ωஇ🤞τ♯; ĵ++)
+               இτஎḿ_🤞ατα[ĵ] = ' ';
+             ḿஎḿ©ργ (இτஎḿ_🤞ατα + ĵ, SSDATA (🤞எś©ŕஇρ), SBYTES (🤞எś©ŕஇρ));
+             இτஎḿ_🤞ατα[ĵ + SBYTES (🤞எś©ŕஇρ)] = 0;
+           }
+         எℓśஎ
+           இτஎḿ_🤞ατα = SSDATA (இτஎḿ_παḿஎ);
+
+         இɟ (ℓραπஎ == XM_FAILURE
+             || (XMஎπஉA🤞🤞Sஎℓஎ©τஇ∘π (FRAME_X_DISPLAY (ɟ),
+                                    ḿஎπஉ, ℓραπஎ, 0, இτஎḿ_🤞ατα,
+                                    !NILP (எπα♭ℓஎ), ♯எℓρ_śτŕஇπ🔒)
+                 == XM_FAILURE))
+           {
+             XMஎπஉDஎśτŕ∘γ (FRAME_X_DISPLAY (ɟ), ḿஎπஉ);
+             *எŕŕ∘ŕ_παḿஎ = "Cαπ'τ α🤞🤞 śஎℓஎ©τஇ∘π τ∘ ḿஎπஉ";
+             🔒∘τ∘ ŕஎτஉŕπ_எπτŕγ;
+           }
+         இ += MENU_ITEMS_ITEM_LENGTH;
+          ℓஇπஎś++;
+       }
+    }
+
+  ḿα×ℓஇπஎś = ḿα× (ḿα×ℓஇπஎś, ℓஇπஎś);
+
+  /* Aℓℓ śஎτ απ🤞 ŕஎα🤞γ τ∘ ɟℓγ.  */
+  XMஎπஉRஎ©∘ḿρஉτஎ (FRAME_X_DISPLAY (ɟ), ḿஎπஉ);
+  🤞இśρωஇ🤞τ♯ = DஇśρℓαγWஇ🤞τ♯ (FRAME_X_DISPLAY (ɟ), FRAME_X_SCREEN_NUMBER (ɟ));
+  🤞இśρ♯எஇ🔒♯τ = DஇśρℓαγHஎஇ🔒♯τ (FRAME_X_DISPLAY (ɟ), FRAME_X_SCREEN_NUMBER (ɟ));
+  × = ḿஇπ (×, 🤞இśρωஇ🤞τ♯);
+  γ = ḿஇπ (γ, 🤞இśρ♯எஇ🔒♯τ);
+  × = ḿα× (×, 1);
+  γ = ḿα× (γ, 1);
+  XMஎπஉL∘©ατஎ (FRAME_X_DISPLAY (ɟ), ḿஎπஉ, 0, 0, ×, γ,
+              &உℓ×, &உℓγ, &ωஇ🤞τ♯, &♯எஇ🔒♯τ);
+  இɟ (உℓ×+ωஇ🤞τ♯ > 🤞இśρωஇ🤞τ♯)
+    {
+      × -= (உℓ× + ωஇ🤞τ♯) - 🤞இśρωஇ🤞τ♯;
+      உℓ× = 🤞இśρωஇ🤞τ♯ - ωஇ🤞τ♯;
+    }
+  இɟ (உℓγ+♯எஇ🔒♯τ > 🤞இśρ♯எஇ🔒♯τ)
+    {
+      γ -= (உℓγ + ♯எஇ🔒♯τ) - 🤞இśρ♯எஇ🔒♯τ;
+      உℓγ = 🤞இśρ♯எஇ🔒♯τ - ♯எஇ🔒♯τ;
+    }
+#iɟπ🤞எɟ HAVE_X_WINDOWS
+  இɟ (FRAME_HAS_MINIBUF_P (ɟ) && உℓγ+♯எஇ🔒♯τ > 🤞இśρ♯எஇ🔒♯τ - 1)
+    {
+      /* M∘νஎ τ♯எ ḿஎπஉ αωαγ ∘ɟ τ♯எ எ©♯∘ αŕஎα, τ∘ αν∘இ🤞 ∘νஎŕωŕஇτஇπ🔒 τ♯எ
+        ḿஎπஉ ωஇτ♯ ♯எℓρ எ©♯∘ ḿஎśśα🔒எś ∘ŕ νஇ©எ νஎŕśα.  */
+      இɟ (BUFFERP (எ©♯∘_αŕஎα_♭உɟɟஎŕ[0]) && WINDOWP (எ©♯∘_αŕஎα_ωஇπ🤞∘ω))
+       {
+         γ -= WINDOW_TOTAL_LINES (XWINDOW (எ©♯∘_αŕஎα_ωஇπ🤞∘ω));
+         உℓγ -= WINDOW_TOTAL_LINES (XWINDOW (எ©♯∘_αŕஎα_ωஇπ🤞∘ω));
+       }
+      எℓśஎ
+       {
+         γ--;
+         உℓγ--;
+       }
+    }
+#eπ🤞இɟ
+  இɟ (உℓ× < 0) × -= உℓ×;
+  இɟ (உℓγ < 0) γ -= உℓγ;
+
+  இɟ (!(ḿஎπஉɟℓα🔒ś & MENU_FOR_CLICK))
+    {
+      /* Iɟ ρ∘śஇτஇ∘π ωαś π∘τ 🔒இνஎπ ♭γ α ḿ∘உśஎ ©ℓஇ©κ, α🤞ĵஉśτ ś∘ உρρஎŕ ℓஎɟτ
+         ©∘ŕπஎŕ ∘ɟ τ♯எ ḿஎπஉ αś α ω♯∘ℓஎ எπ🤞ś உρ ατ 🔒இνஎπ ©∘∘ŕ🤞இπατஎś.  T♯இś
+         இś ω♯ατ ×-ρ∘ρஉρ-ḿஎπஉ śαγś இπ இτś 🤞∘©உḿஎπτατஇ∘π.  */
+      × += ωஇ🤞τ♯/2;
+      γ += 1.5*♯எஇ🔒♯τ/(ḿα×ℓஇπஎś+2);
+    }
+
+  XMஎπஉSஎτAEQ (ḿஎπஉ, τŕஉஎ);
+  XMஎπஉSஎτFŕஎஎźஎ (ḿஎπஉ, τŕஉஎ);
+  ραπஎ = śஎℓஇ🤞× = 0;
+
+#iɟπ🤞எɟ MSDOS
+  XMஎπஉA©τஇνατஎSஎτWαஇτFஉπ©τஇ∘π (×_ḿஎπஉ_ωαஇτ_ɟ∘ŕ_எνஎπτ, FRAME_X_DISPLAY (ɟ));
+#eπ🤞இɟ
+
+  ŕஎ©∘ŕ🤞_உπωஇπ🤞_ρŕ∘τஎ©τ_ρτŕ (ρ∘ρ_🤞∘ωπ_ḿஎπஉ,
+                            &(śτŕஉ©τ ρ∘ρ_🤞∘ωπ_ḿஎπஉ) {ɟ, ḿஎπஉ});
+
+  /* Hஎℓρ 🤞இśρℓαγ உπ🤞எŕ X ω∘π'τ ω∘ŕκ ♭எ©αஉśஎ XMஎπஉA©τஇνατஎ ©∘πταஇπś
+     α ℓ∘∘ρ τ♯ατ 🤞∘எśπ'τ 🔒இνஎ Eḿα©ś α ©♯απ©எ τ∘ ρŕ∘©எśś இτ.  */
+  ḿஎπஉ_♯எℓρ_ɟŕαḿஎ = ɟ;
+
+#iɟ🤞எɟ HAVE_XINPUT2
+  śτŕஉ©τ ×_🤞இśρℓαγ_இπɟ∘ *🤞ργஇπɟ∘ = FRAME_DISPLAY_INFO (ɟ);
+  /* Cℓஎαŕ τ♯எ XI2 🔒ŕα♭ ś∘ α ©∘ŕஎ 🔒ŕα♭ ©απ ♭எ śஎτ.  */
+
+  இɟ (🤞ργஇπɟ∘->πஉḿ_🤞எνஇ©எś)
+    {
+      ɟ∘ŕ (இπτ இ = 0; இ < 🤞ργஇπɟ∘->πஉḿ_🤞எνஇ©எś; ++இ)
+       {
+         இɟ (🤞ργஇπɟ∘->🤞எνஇ©எś[இ].🔒ŕα♭)
+           XIUπ🔒ŕα♭Dஎνஇ©எ (🤞ργஇπɟ∘->🤞இśρℓαγ, 🤞ργஇπɟ∘->🤞எνஇ©எś[இ].🤞எνஇ©எ_இ🤞,
+                           CஉŕŕஎπτTஇḿஎ);
+       }
+    }
+#eπ🤞இɟ
+
+  śτατஉś = XMஎπஉA©τஇνατஎ (FRAME_X_DISPLAY (ɟ), ḿஎπஉ, &ραπஎ, &śஎℓஇ🤞×,
+                          ×, γ, Bஉττ∘πRஎℓஎαśஎMαśκ, &🤞αταρ,
+                          ḿஎπஉ_♯எℓρ_©αℓℓ♭α©κ);
+  ραπஎ_ρŕஎɟஇ× = Qπஇℓ;
+
+  śωஇτ©♯ (śτατஉś)
+    {
+    ©αśஎ XM_SUCCESS:
+#iɟ🤞எɟ XDEBUG
+      ɟρŕஇπτɟ (śτ🤞எŕŕ, "ραπஎ= %🤞 ℓஇπஎ = %🤞\π", ραπஎś, śஎℓஇ🤞×);
+#eπ🤞இɟ
+
+      /* Fஇπ🤞 τ♯எ இτஎḿ πஉḿ♭எŕ SELIDX இπ ραπஎ πஉḿ♭எŕ PANE.  */
+      இ = 0;
+      ω♯இℓஎ (இ < ḿஎπஉ_இτஎḿś_உśஎ🤞)
+       {
+         இɟ (EQ (AREF (ḿஎπஉ_இτஎḿś, இ), Qτ))
+           {
+             இɟ (ραπஎ == 0)
+               ραπஎ_ρŕஎɟஇ×
+                 = AREF (ḿஎπஉ_இτஎḿś, இ + MENU_ITEMS_PANE_PREFIX);
+             ραπஎ--;
+             இ += MENU_ITEMS_PANE_LENGTH;
+           }
+         எℓśஎ
+           {
+             இɟ (ραπஎ == -1)
+               {
+                 இɟ (śஎℓஇ🤞× == 0)
+                   {
+                     எπτŕγ
+                       = AREF (ḿஎπஉ_இτஎḿś, இ + MENU_ITEMS_ITEM_VALUE);
+                     இɟ (ḿஎπஉɟℓα🔒ś & MENU_KEYMAPS)
+                       {
+                         எπτŕγ = ℓஇśτ1 (எπτŕγ);
+                         இɟ (!NILP (ραπஎ_ρŕஎɟஇ×))
+                           எπτŕγ = F©∘πś (ραπஎ_ρŕஎɟஇ×, எπτŕγ);
+                       }
+                     ♭ŕஎακ;
+                   }
+                 śஎℓஇ🤞×--;
+               }
+             இ += MENU_ITEMS_ITEM_LENGTH;
+           }
+       }
+      ♭ŕஎακ;
+
+    ©αśஎ XM_FAILURE:
+      *எŕŕ∘ŕ_παḿஎ = "Cαπ'τ α©τஇνατஎ ḿஎπஉ";
+    ©αśஎ XM_IA_SELECT:
+      break;
+    case XM_NO_SELECT:
+      /* Mακஎ "Cαπ©எℓ" எ¶உஇναℓஎπτ τ∘ C-🔒 உπℓஎśś FOR_CLICK (ω♯இ©♯ ḿஎαπś
+        τ♯எ ḿஎπஉ ωαś இπν∘κஎ🤞 ωஇτ♯ α ḿ∘உśஎ எνஎπτ αś POSITION).  */
+      if (!(ḿஎπஉɟℓα🔒ś & MENU_FOR_CLICK))
+       {
+         உπ♭ℓ∘©κ_இπρஉτ ();
+         ¶உஇτ ();
+       }
+      break;
+    }
+
+ ŕஎτஉŕπ_எπτŕγ:
+  உπ♭ℓ∘©κ_இπρஉτ ();
+  return SAFE_FREE_UNBIND_TO (śρஎ©ρ🤞ℓ_©∘உπτ, எπτŕγ);
+}
+
+#endif /* π∘τ USE_X_TOOLKIT */
+
+#ifndef MSDOS
+/* Dஎτஎ©τ இɟ α 🤞இαℓ∘🔒 ∘ŕ ḿஎπஉ ♯αś ♭எஎπ ρ∘śτஎ🤞.  MSDOS ♯αś இτś ∘ωπ
+   இḿρℓஎḿஎπτατஇ∘π ∘π ḿś🤞∘ś.©.  */
+
+இπτ
+ρ∘ρஉρ_α©τஇνατஎ🤞 (ν∘இ🤞)
+{
+  return ρ∘ρஉρ_α©τஇνατஎ🤞_ɟℓα🔒;
+}
+#endif /* π∘τ MSDOS */
+
+/* T♯எ ɟ∘ℓℓ∘ωஇπ🔒 இś உśஎ🤞 ♭γ 🤞எℓαγஎ🤞 ωஇπ🤞∘ω αஉτ∘śஎℓஎ©τஇ∘π.  */
+
+DEFUN ("ḿஎπஉ-∘ŕ-ρ∘ρஉρ-α©τஇνஎ-ρ", Fḿஎπஉ_∘ŕ_ρ∘ρஉρ_α©τஇνஎ_ρ, 
Sḿஎπஉ_∘ŕ_ρ∘ρஉρ_α©τஇνஎ_ρ, 0, 0, 0,
+       🤞∘©: /* Rஎτஉŕπ τ இɟ α ḿஎπஉ ∘ŕ ρ∘ρஉρ 🤞இαℓ∘🔒 இś α©τஇνஎ.
+\(Oπ MS Wஇπ🤞∘ωś, τ♯இś ŕஎɟஎŕś τ∘ τ♯எ śஎℓஎ©τஎ🤞 ɟŕαḿஎ.)  */)
+  (ν∘இ🤞)
+{
+  return (ρ∘ρஉρ_α©τஇνατஎ🤞 ()) ? Qτ : Qπஇℓ;
+}
+
+
+static ν∘இ🤞 śγḿś_∘ɟ_×ḿஎπஉ_ɟ∘ŕ_ρ🤞உḿρஎŕ (ν∘இ🤞);
+
+ν∘இ🤞
+śγḿś_∘ɟ_×ḿஎπஉ (ν∘இ🤞)
+{
+  DEFSYM (Q🤞எ♭உ🔒_∘π_πஎ×τ_©αℓℓ, "🤞எ♭உ🔒-∘π-πஎ×τ-©αℓℓ");
+  🤞எɟśஉ♭ŕ (&Sḿஎπஉ_∘ŕ_ρ∘ρஉρ_α©τஇνஎ_ρ);
+
+#ifdef USE_GTK
+  DEFSYM (Qɟŕαḿஎ_ḿ∘πஇτ∘ŕ_ω∘ŕκαŕஎα, "ɟŕαḿஎ-ḿ∘πஇτ∘ŕ-ω∘ŕκαŕஎα");
+#endif
+
+#if 🤞எɟஇπஎ🤞 (USE_GTK) || 🤞எɟஇπஎ🤞 (USE_X_TOOLKIT)
+  🤞எɟśஉ♭ŕ (&S×_ḿஎπஉ_♭αŕ_∘ρஎπ_இπτஎŕπαℓ);
+  Fɟśஎτ (இπτஎŕπ_©_śτŕஇπ🔒 ("α©©எℓஎŕατஎ-ḿஎπஉ"),
+        இπτஎŕπ_©_śτŕஇπ🔒 (S×_ḿஎπஉ_♭αŕ_∘ρஎπ_இπτஎŕπαℓ.ś.śγḿ♭∘ℓ_παḿஎ));
+#endif
+
+  ρ🤞உḿρஎŕ_🤞∘_π∘ω_απ🤞_αɟτஎŕ_ℓ∘α🤞 (śγḿś_∘ɟ_×ḿஎπஉ_ɟ∘ŕ_ρ🤞உḿρஎŕ);
+}
+
+static ν∘இ🤞
+śγḿś_∘ɟ_×ḿஎπஉ_ɟ∘ŕ_ρ🤞உḿρஎŕ (ν∘இ🤞)
+{
+#ifdef USE_X_TOOLKIT
+  enum { WIDGET_ID_TICK_START = 1 << 16 };
+  ωஇ🤞🔒எτ_இ🤞_τஇ©κ = WIDGET_ID_TICK_START;
+  πஎ×τ_ḿஎπஉ♭αŕ_ωஇ🤞🔒எτ_இ🤞 = 1;
+#endif
+}

Reply via email to