From 2f33d86f692e4a408e9bf4c5320852dc673e2a41 Mon Sep 17 00:00:00 2001 From: stefan schippers Date: Wed, 24 Sep 2025 12:11:31 +0200 Subject: [PATCH 1/3] fix regression: Properties->Edit Header/License text; fix keybinding documentation for Shift-Tab, Ctrl-Shift-Tab and Ctrl-Tab (switch tabs) --- doc/xschem_man/commands.html | 5 +++-- src/callback.c | 8 ++++++++ src/keys.help | 5 +++-- src/xschem.tcl | 16 +++++++++++----- xschem_library/devices/bindkeys_cheatsheet.sym | 5 +++-- 5 files changed, 28 insertions(+), 11 deletions(-) diff --git a/doc/xschem_man/commands.html b/doc/xschem_man/commands.html index 44a977d9..d0809624 100644 --- a/doc/xschem_man/commands.html +++ b/doc/xschem_man/commands.html @@ -128,8 +128,9 @@ ctrl Enter Confirm closing dialog boxes - Up Move up ctrl Left Previous tab (if tabbed interface enabled) ctrl Right Next tab (if tabbed interface enabled) -ctrl+shift Tab Previous tab (if tabbed interface enabled) -ctrl Tab Next tab (if tabbed interface enabled) +shift Tab Right tab (if tabbed interface enabled) +ctrl+shift Tab Left tab (if tabbed interface enabled) +ctrl Tab Previous tab (if tabbed interface enabled) - ':' Toggle flat netlist - '\' Toggle fullscreen - '!' Break selected wires at any wire or component pin diff --git a/src/callback.c b/src/callback.c index e55898d0..cce952bc 100644 --- a/src/callback.c +++ b/src/callback.c @@ -3848,6 +3848,14 @@ static void handle_key_press(int event, KeySym key, int state, int rstate, int m tcleval("prev_tab"); xctx->semaphore = save; } + else if(state == ShiftMask) { + int save = xctx->semaphore; + if(xctx->semaphore >= 2) break; + xctx->semaphore = 0; + tcleval("next_tab"); + xctx->semaphore = save; + } + break; case XK_Right: diff --git a/src/keys.help b/src/keys.help index 295b2ad6..f34ec7a4 100644 --- a/src/keys.help +++ b/src/keys.help @@ -69,8 +69,9 @@ ctrl Enter Confirm closing dialog boxes - Up Move up ctrl Left Previous tab (if tabbed interface enabled) ctrl Right Next tab (if tabbed interface enabled) -ctrl+shift Tab Previous tab (if tabbed interface enabled) -ctrl Tab Next tab (if tabbed interface enabled) +shift Tab Right tab (if tabbed interface enabled) +ctrl+shift Tab Left tab (if tabbed interface enabled) +ctrl Tab Previous tab (if tabbed interface enabled) - ':' Toggle flat netlist - '\' Toggle fullscreen - '!' Break selected wires at any wire or component pin diff --git a/src/xschem.tcl b/src/xschem.tcl index d5b2aaf0..514dc30c 100644 --- a/src/xschem.tcl +++ b/src/xschem.tcl @@ -1412,7 +1412,7 @@ proc ngspice::get_voltage {n} { proc update_schematic_header {} { set tctx::retval [xschem get header_text] - text_line {Header/License text:} 0 + text_line {Header/License text:} 0 header if { $tctx::rcode ne {}} { xschem set header_text $tctx::retval } @@ -6691,6 +6691,8 @@ proc text_line {txtlabel clear {preserve_disabled disabled} } { global text_line_default_geometry preserve_unchanged_attrs wm_fix tabstop global debug_var text_tabs_setting + set buttonstate $preserve_disabled + if {$preserve_disabled eq {header}} { set buttonstate {disabled}} if {$preserve_disabled eq {disabled}} { set tctx::selected_mode [xschem get netlist_type] @@ -6784,12 +6786,14 @@ proc text_line {txtlabel clear {preserve_disabled disabled} } { label .dialog.f1.r6 -text {Mode:} ttk::combobox .dialog.f1.r7 -values $mode_list -textvariable tctx::selected_mode -width 14 } - label .dialog.f1.r4 -text { Edit Attr:} - ttk::combobox .dialog.f1.r5 -values $tok_list -textvariable tctx::selected_tok -width 14 + if { $preserve_disabled ne {header} } { + label .dialog.f1.r4 -text { Edit Attr:} + ttk::combobox .dialog.f1.r5 -values $tok_list -textvariable tctx::selected_tok -width 14 + } } checkbutton .dialog.f0.l2 -text "preserve unchanged props" -variable preserve_unchanged_attrs \ - -state $preserve_disabled + -state $buttonstate pack .dialog.f0 -fill x pack .dialog.f0.l2 -side left pack .dialog.f0.l1 -side left -expand yes @@ -6799,8 +6803,10 @@ proc text_line {txtlabel clear {preserve_disabled disabled} } { pack .dialog.f1.b3 -side left -fill x -expand yes pack .dialog.f1.b4 -side left -fill x -expand yes if { [info tclversion] > 8.4} { + if { $preserve_disabled ne {header} } { pack .dialog.f1.r4 -side left pack .dialog.f1.r5 -side left + } if {$preserve_disabled eq {disabled}} { pack .dialog.f1.r6 -side left pack .dialog.f1.r7 -side left @@ -6817,7 +6823,7 @@ proc text_line {txtlabel clear {preserve_disabled disabled} } { } } - if { [info tclversion] > 8.4} { + if { $preserve_disabled ne {header} && [info tclversion] > 8.4} { bind .dialog.f1.r5 <> { if {$tctx::old_selected_tok ne $tctx::selected_tok} { if { $tctx::old_selected_tok eq {} } { diff --git a/xschem_library/devices/bindkeys_cheatsheet.sym b/xschem_library/devices/bindkeys_cheatsheet.sym index 093887bb..6cd185fb 100644 --- a/xschem_library/devices/bindkeys_cheatsheet.sym +++ b/xschem_library/devices/bindkeys_cheatsheet.sym @@ -463,8 +463,8 @@ T {-} 842.5 -126.25 0 0 0.18 0.18 {layer=7} T {-} 842.5 -137.5 0 0 0.18 0.18 {layer=6} T {Incr line width} 962.5 -366.25 0 0 0.18 0.18 {layer=6} T {Set line width} 882.5 -366.25 0 0 0.18 0.18 {layer=7} -T {Next Tab} 2.5 -263.75 0 0 0.18 0.18 {layer=12} -T {Previous Tab} 2.5 -297.5 0 0 0.18 0.18 {layer=6} +T {Right Tab} 2.5 -263.75 0 0 0.18 0.18 {layer=12} +T {Left Tab} 2.5 -297.5 0 0 0.18 0.18 {layer=6} T {Previous tab} 1222.5 -35 0 0 0.18 0.18 {layer=4} T {Move left} 1222.5 -12.5 0 0 0.18 0.18 {} T {Next tab} 1382.5 -35 0 0 0.18 0.18 {layer=4} @@ -472,3 +472,4 @@ T {Move right} 1382.5 -12.5 0 0 0.18 0.18 {} T {Move down} 1302.5 -12.5 0 0 0.18 0.18 {} T {Move up} 1302.5 -92.5 0 0 0.18 0.18 {} T {Open last file} 762.5 -297.5 0 0 0.18 0.18 {layer=6} +T {Previous Tab} 2.5 -275 0 0 0.18 0.18 {layer=4} From ad31f65a61c6b86d1e24c80ed9525aaea69ddefc Mon Sep 17 00:00:00 2001 From: stefan schippers Date: Wed, 24 Sep 2025 12:25:21 +0200 Subject: [PATCH 2/3] move delay_flag global into tctx:: --- src/xschem.tcl | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/xschem.tcl b/src/xschem.tcl index 514dc30c..00055738 100644 --- a/src/xschem.tcl +++ b/src/xschem.tcl @@ -570,10 +570,9 @@ proc get_running_cmds {} { # pause for $del_ms milliseconds, keep event loop responsive proc delay {del_ms} { - global delay_flag - after $del_ms {set delay_flag 1} - vwait delay_flag - unset delay_flag + after $del_ms {set tctx::delay_flag 1} + vwait tctx::delay_flag + unset tctx::delay_flag } #### Scrollable frame @@ -8578,7 +8577,7 @@ set tctx::global_list { auto_hilight_graph_nodes autofocus_mainwindow autotrim_wires bespice_listen_port big_grid_points bus_replacement_char cadence_compat cadgrid cadlayers cadsnap cairo_font_name cairo_font_scale change_lw color_ps compare_sch constr_mv copy_cell crosshair_layer crosshair_size cursor_2_hook - custom_label_prefix custom_token dark_colors dark_colorscheme dark_gui_colorscheme delay_flag + custom_label_prefix custom_token dark_colors dark_colorscheme dark_gui_colorscheme dim_bg dim_value disable_unique_names do_all_inst draw_crosshair draw_grid draw_grid_axes draw_window edit_prop_pos edit_prop_size edit_symbol_prop_new_sel editprop_sympath en_hilight_conn_inst enable_dim_bg enable_stretch env(PDK) env(PDK_ROOT) @@ -8597,7 +8596,7 @@ set tctx::global_list { show_hidden_texts show_infowindow show_infowindow_after_netlist simconf_default_geometry simconf_vpos simulate_bg snap_cursor snap_cursor_size spiceprefix split_files svg_colors svg_font_name sym_txt symbol symbol_width tabstop tclcmd_txt tclstop - tctx::colors tctx::hsize + tctx::colors tctx::delay_flag tctx::hsize tctx::selected_mode tctx::old_selected_mode tctx::old_selected_tok tctx::selected_tok tctx::rcode tctx::vsize tctx::tctx::retval tctx::retval_orig text_line_default_geometry text_replace_selection text_tabs_setting From 4155387e0d5756c9a22b0a570c7e321f295f2e4c Mon Sep 17 00:00:00 2001 From: stefan schippers Date: Wed, 24 Sep 2025 13:06:23 +0200 Subject: [PATCH 3/3] set_paths: correctly swap recent component list when changing search paths --- src/xschem.tcl | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/xschem.tcl b/src/xschem.tcl index 00055738..c29c5d43 100644 --- a/src/xschem.tcl +++ b/src/xschem.tcl @@ -9792,6 +9792,19 @@ proc set_paths {} { } if {$pathlist eq {}} { set pathlist [pwd] } set_initial_dirs + + ## restore new recent component list... + ### ... first delete... + if {[info exists c_toolbar::c_t(n)]} { + for {set i 0} {$i < $c_toolbar::c_t(n)} {incr i} { + set c_toolbar::c_t($i,text) {} + set c_toolbar::c_t($i,command) {} + set c_toolbar::c_t($i,file) {} + } + } + # ... then reload. + set c_toolbar::c_t(hash) [xschem hash_string $::XSCHEM_LIBRARY_PATH] + load_recent_file } proc print_help_and_exit {} {