Re: [PATCH] gitk: don't save the geometry to rc file on exit
From: Edgar Toernig <hidden>
Date: 2016-06-15 22:44:16
Subsystem:
the rest · Maintainer:
Linus Torvalds
Mark Levedahl wrote:
[...] so gitk's current behavior is not (at least to me) an aberration and I would like that behavior to at least remain an option.
It would be really annoying if I had to resize and reconfigure (the panes) each time I start gitk. How about only taking the saved geometry/fonts/etc when the screen size hasn't changed? The easiest method (for a Tcl-noob like me) would be to wrap the "set geometry..." in .gitk with an if-statement which checks the screen size. Something like this:
diff --git a/gitk-git/gitk b/gitk-git/gitk
index 5560e4d..1c572c9 100644
--- a/gitk-git/gitk
+++ b/gitk-git/gitk@@ -1158,14 +1158,12 @@ proc savestuff {w} { global viewname viewfiles viewargs viewperm nextviewnum global cmitmode wrapcomment datetimeformat limitdiffs global colors bgcolor fgcolor diffcolors diffcontext selectbgcolor + global screen_size if {$stuffsaved} return if {![winfo viewable .]} return catch { set f [open "~/.gitk-new" w] - puts $f [list set mainfont $mainfont] - puts $f [list set textfont $textfont] - puts $f [list set uifont $uifont] puts $f [list set tabstop $tabstop] puts $f [list set findmergefiles $findmergefiles] puts $f [list set maxgraphpct $maxgraphpct]
@@ -1183,6 +1181,10 @@ proc savestuff {w} { puts $f [list set diffcontext $diffcontext] puts $f [list set selectbgcolor $selectbgcolor] + puts $f "if {\$screen_size == \"$screen_size\"} {" + puts $f [list set mainfont $mainfont] + puts $f [list set textfont $textfont] + puts $f [list set uifont $uifont] puts $f "set geometry(main) [wm geometry .]" puts $f "set geometry(topwidth) [winfo width .tf]" puts $f "set geometry(topheight) [winfo height .tf]"
@@ -1198,6 +1200,7 @@ proc savestuff {w} { } } puts $f "}" + puts $f "}" close $f file rename -force "~/.gitk-new" "~/.gitk" }
@@ -8461,6 +8464,8 @@ set diffcolors {red "#00a000" blue} set diffcontext 3 set selectbgcolor gray85 +set screen_size [winfo screenwidth .]x[winfo screenheight .] + ## For msgcat loading, first locate the installation location. if { [info exists ::env(GITK_MSGSDIR)] } { ## Msgsdir was manually set in the environment.
Saving geometries for multiple screen sizes would be even better (i.e. geometry_1440x900(main) etc or an additional ".gitk-$screen_size" for the geometry data) but that is beyond my Tcl-skills. Ciao, ET.