summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShawn O. Pearce <spearce@spearce.org>2007-08-20 04:53:04 (GMT)
committerShawn O. Pearce <spearce@spearce.org>2007-08-20 04:38:13 (GMT)
commitc6951ddb522a7d8ee0fc371cf9c37e727e676989 (patch)
treeedabba9ace51eb6a97ff44c9479076817f6b430a
parent51b8c5021a19195e0f138832b081a356a2247bca (diff)
downloadgit-c6951ddb522a7d8ee0fc371cf9c37e727e676989.zip
git-c6951ddb522a7d8ee0fc371cf9c37e727e676989.tar.gz
git-c6951ddb522a7d8ee0fc371cf9c37e727e676989.tar.bz2
git-gui: Fix window manager problems on ion3
cehteh on #git noticed that secondary windows such as console windows from push/fetch/merge or the blame browser failed on ion when we tried to open them a second time. The issue turned out to be the fact that on ion [winfo ismapped .] returns false if . is not visible right now because it has been obscured by another window in the same panel. So we need to keep track of whether or not the root window has been displayed for this application, and once it has been we cannot ever assume that ismapped is going to return true. Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
-rwxr-xr-xgit-gui.sh6
-rw-r--r--lib/class.tcl3
2 files changed, 8 insertions, 1 deletions
diff --git a/git-gui.sh b/git-gui.sh
index 29a790e..2686c1b 100755
--- a/git-gui.sh
+++ b/git-gui.sh
@@ -1936,6 +1936,12 @@ if {$browser ne {}} {
}
unset browser doc_path doc_url
+set root_exists 0
+bind . <Visibility> {
+ bind . <Visibility> {}
+ set root_exists 1
+}
+
# -- Standard bindings
#
wm protocol . WM_DELETE_WINDOW do_quit
diff --git a/lib/class.tcl b/lib/class.tcl
index 24e8cec..dc21411 100644
--- a/lib/class.tcl
+++ b/lib/class.tcl
@@ -148,11 +148,12 @@ proc make_toplevel {t w args} {
}
}
- if {[winfo ismapped .]} {
+ if {$::root_exists || [winfo ismapped .]} {
regsub -all {::} $this {__} w
set top .$w
set pfx $top
toplevel $top
+ set ::root_exists 1
} else {
set top .
set pfx {}