From 16d8e2ec963e035a939cde271664d296b4a94ca3 Mon Sep 17 00:00:00 2001 From: Da Shen Date: Sat, 29 Nov 2025 20:22:48 +0800 Subject: [PATCH 1/3] wip --- src/Scheme/Glue/build-glue-server.scm | 68 --------------------------- src/Scheme/Glue/glue_server.lua | 7 +++ src/Texmacs/Window/tm_frame.cpp | 11 +++++ src/Texmacs/Window/tm_window.cpp | 5 ++ src/Texmacs/server.hpp | 1 + src/Texmacs/tm_frame.hpp | 1 + src/Texmacs/tm_window.hpp | 1 + 7 files changed, 26 insertions(+), 68 deletions(-) delete mode 100644 src/Scheme/Glue/build-glue-server.scm diff --git a/src/Scheme/Glue/build-glue-server.scm b/src/Scheme/Glue/build-glue-server.scm deleted file mode 100644 index 7e63f32a3..000000000 --- a/src/Scheme/Glue/build-glue-server.scm +++ /dev/null @@ -1,68 +0,0 @@ - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;; MODULE : build-glue-server.scm -;; DESCRIPTION : Building basic glue for the server -;; COPYRIGHT : (C) 1999 Joris van der Hoeven -;; -;; This software falls under the GNU general public license version 3 or later. -;; It comes WITHOUT ANY WARRANTY WHATSOEVER. For details, see the file LICENSE -;; in the root directory or . -;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(output-copyright "build-glue-server.scm") - -(build - "get_server()->" - "initialize_glue_server" - - (insert-kbd-wildcard insert_kbd_wildcard (void string string bool bool bool)) - (set-variant-keys set_variant_keys (void string string)) - (kbd-pre-rewrite kbd_pre_rewrite (string string)) - (kbd-post-rewrite kbd_post_rewrite (string string bool)) - (kbd-system-rewrite kbd_system_rewrite (tree string)) - (set-font-rules set_font_rules (void scheme_tree)) - - (window-get-serial get_window_serial (int)) - (window-set-property set_window_property (void scheme_tree scheme_tree)) - (window-get-property get_window_property (scheme_tree scheme_tree)) - (show-header show_header (void bool)) - (show-icon-bar show_icon_bar (void int bool)) - (show-side-tools show_side_tools (void int bool)) - (show-auxiliary-widget show_auxiliary_widget (void bool)) - (set-auxiliary-widget auxiliary_widget (widget, name)) - (show-bottom-tools show_bottom_tools (void int bool)) - (show-footer show_footer (void bool)) - (visible-header? visible_header (bool)) - (visible-icon-bar? visible_icon_bar (bool int)) - (visible-side-tools? visible_side_tools (bool int)) - (visible-bottom-tools? visible_bottom_tools (bool int)) - (visible-footer? visible_footer (bool)) - (full-screen-mode full_screen_mode (void bool bool)) - (full-screen? in_full_screen_mode (bool)) - (full-screen-edit? in_full_screen_edit_mode (bool)) - (set-window-zoom-factor set_window_zoom_factor (void double)) - (get-window-zoom-factor get_window_zoom_factor (double)) - - (shell shell (void string)) - (dialogue-end dialogue_end (void)) - (cpp-choose-file choose_file (void object string string string url)) - (tm-interactive interactive (void object scheme_tree)) - - (cpp-style-clear-cache style_clear_cache (void)) - (set-script-status set_script_status (void int)) - (set-printing-command set_printing_command (void string)) - (set-printer-paper-type set_printer_page_type (void string)) - (get-printer-paper-type get_printer_page_type (string)) - (set-printer-dpi set_printer_dpi (void string)) - (set-default-zoom-factor set_default_zoom_factor (void double)) - (get-default-zoom-factor get_default_zoom_factor (double)) - (inclusions-gc inclusions_gc (void)) - (update-all-path typeset_update (void path)) - (update-all-buffers typeset_update_all (void)) - (set-message set_message (void content content)) - (set-message-temp set_message (void content content bool)) - (recall-message recall_message (void)) - (yes? is_yes (bool string)) - (quit-TeXmacs quit (void))) diff --git a/src/Scheme/Glue/glue_server.lua b/src/Scheme/Glue/glue_server.lua index 5f88078de..e8e888fab 100644 --- a/src/Scheme/Glue/glue_server.lua +++ b/src/Scheme/Glue/glue_server.lua @@ -126,6 +126,13 @@ function main() "bool", -- 是否可见 } }, + { + -- 查询辅助组件可见性 + scm_name = "auxiliary-widget-visible?", + cpp_name = "auxiliary_widget_visible", + ret_type = "bool", + arg_list = {} + }, { -- 设定辅助组件内容 scm_name = "set-auxiliary-widget", diff --git a/src/Texmacs/Window/tm_frame.cpp b/src/Texmacs/Window/tm_frame.cpp index 3ccb7ffc7..71148068b 100644 --- a/src/Texmacs/Window/tm_frame.cpp +++ b/src/Texmacs/Window/tm_frame.cpp @@ -181,6 +181,17 @@ tm_frame_rep::show_auxiliary_widget (bool flag) { concrete_window ()->set_auxiliary_widget_flag (flag); } +bool +tm_frame_rep::auxiliary_widget_visible () { + if (!has_current_view ()) return false; + url current_view= get_current_view (); + if (is_tmfs_view_type (as_string (current_view), "aux")) { + url vw= get_most_recent_view (); + return concrete_view (vw)->win->get_auxiliary_widget_flag (); + } + return concrete_window ()->get_auxiliary_widget_flag (); +} + void tm_frame_rep::show_bottom_tools (int which, bool flag) { if ((which < 0) || (which > 1) || (!has_current_view ())) return; diff --git a/src/Texmacs/Window/tm_window.cpp b/src/Texmacs/Window/tm_window.cpp index 1cdf15399..16e5579cf 100644 --- a/src/Texmacs/Window/tm_window.cpp +++ b/src/Texmacs/Window/tm_window.cpp @@ -513,6 +513,11 @@ tm_window_rep::get_header_flag () { return get_header_visibility (wid); } +bool +tm_window_rep::get_auxiliary_widget_flag () { + return get_auxiliary_widget_visibility (wid); +} + bool tm_window_rep::get_icon_bar_flag (int which) { if (which == 0) return get_main_icons_visibility (wid); diff --git a/src/Texmacs/server.hpp b/src/Texmacs/server.hpp index f86ccbf45..5ddf71c56 100644 --- a/src/Texmacs/server.hpp +++ b/src/Texmacs/server.hpp @@ -58,6 +58,7 @@ public: virtual void show_side_tools (int which, bool flag) = 0; virtual void show_auxiliary_widget (bool flag) = 0; virtual void show_bottom_tools (int which, bool flag)= 0; + virtual bool auxiliary_widget_visible () = 0; virtual bool visible_header () = 0; virtual bool visible_icon_bar (int which) = 0; virtual bool visible_side_tools (int which) = 0; diff --git a/src/Texmacs/tm_frame.hpp b/src/Texmacs/tm_frame.hpp index 911531256..253bc684a 100644 --- a/src/Texmacs/tm_frame.hpp +++ b/src/Texmacs/tm_frame.hpp @@ -42,6 +42,7 @@ public: void show_auxiliary_widget (bool flag); void show_bottom_tools (int which, bool flag); bool visible_header (); + bool auxiliary_widget_visible (); bool visible_icon_bar (int which); bool visible_side_tools (int which); bool visible_bottom_tools (int which); diff --git a/src/Texmacs/tm_window.hpp b/src/Texmacs/tm_window.hpp index ecce159a6..c48332b21 100644 --- a/src/Texmacs/tm_window.hpp +++ b/src/Texmacs/tm_window.hpp @@ -61,6 +61,7 @@ public: void set_auxiliary_widget_flag (bool flag); void set_bottom_tools_flag (int which, bool flag); bool get_header_flag (); + bool get_auxiliary_widget_flag (); bool get_icon_bar_flag (int which); bool get_side_tools_flag (int which); bool get_bottom_tools_flag (int which); -- Gitee From d6bf3b04b5bc84e00209e68356c8d2f9c53ed17e Mon Sep 17 00:00:00 2001 From: Da Shen Date: Sat, 29 Nov 2025 20:30:44 +0800 Subject: [PATCH 2/3] wip --- TeXmacs/plugins/lang/dic/en_US/zh_CN.scm | 1 + TeXmacs/progs/texmacs/texmacs/tm-server.scm | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/TeXmacs/plugins/lang/dic/en_US/zh_CN.scm b/TeXmacs/plugins/lang/dic/en_US/zh_CN.scm index fddd72f76..823b65e34 100644 --- a/TeXmacs/plugins/lang/dic/en_US/zh_CN.scm +++ b/TeXmacs/plugins/lang/dic/en_US/zh_CN.scm @@ -1619,6 +1619,7 @@ ("plans for the future" "未来计划") ("please wait" "请稍后") ("please" "") +("Please close the auxiliary window first" "请先关闭辅助窗口") ("Please restart Mogan to apply the changes." "请重启Moagn以应用更改。") ("plot" "描画图形") ("plug-ins" "插件") diff --git a/TeXmacs/progs/texmacs/texmacs/tm-server.scm b/TeXmacs/progs/texmacs/texmacs/tm-server.scm index d3c482a62..25df09116 100644 --- a/TeXmacs/progs/texmacs/texmacs/tm-server.scm +++ b/TeXmacs/progs/texmacs/texmacs/tm-server.scm @@ -233,15 +233,17 @@ (tgt-buffer (view->buffer tgt-view)) ;or current-buffer? ) (cond + ((and (auxiliary-widget-visible?) (not (buffer-embedded? tgt-buffer))) + (show-message "Please close the auxiliary window first" "Notification")) ((buffer-embedded? tgt-buffer) (alt-windows-delete (alt-window-search tgt-buffer))) ((buffer-modified? tgt-buffer) ; if the buffer is modified and has not been saved, ; pop up a dialog prompting the user to confirm closing (confirm-close-dialog "The document has not been saved. Really close it?" - (lambda () + (lambda () (kill-tabpage tgt-win tgt-view)) - (lambda () + (lambda () (kill-tabpage tgt-win tgt-view)) tgt-buffer)) (else @@ -249,6 +251,8 @@ (tm-define (safely-kill-tabpage-by-url tgt-win tgt-view tgt-buffer) (cond + ((and (auxiliary-widget-visible?) (not (buffer-embedded? tgt-buffer))) + (show-message "Please close the auxiliary window first" "Notification")) ((buffer-embedded? tgt-buffer) (alt-windows-delete (alt-window-search tgt-buffer))) ((buffer-modified? tgt-buffer) -- Gitee From bdd3c98c5c004f25d3898e01301127249812af22 Mon Sep 17 00:00:00 2001 From: Da Shen Date: Sat, 29 Nov 2025 20:34:39 +0800 Subject: [PATCH 3/3] wip --- devel/201_7.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/devel/201_7.md b/devel/201_7.md index bcb9d727f..db089fbbf 100644 --- a/devel/201_7.md +++ b/devel/201_7.md @@ -99,6 +99,15 @@ ``` 3. 检查输出,正常应该为`#t` +### 测试辅助窗口关闭的提示 +1. 通过搜索,打开结构化搜索的辅助窗口 +2. 在辅助窗口未关闭的情况下,关闭标签页 +3. 查看是否会弹出提示:请先关闭辅助窗口 + +## 2025/11/29 在辅助窗口未关闭时,直接关闭标签页,提示用户先关闭辅助窗口 +### Why +在辅助窗口是打开的情况下,关闭标签页,再关闭辅助窗口会导致软件闪退。 + ## 2025/08/12 暴露 is_tmfs_view_type 到 Scheme ### What - 添加了重载 bool is_tmfs_view_type (url s, string type),便于直接输入url -- Gitee