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 +}