Playing with it for some time, I see some problems with the patch.
Firstly, "bind ." binds that event for the root window and all
subwindows. This means we rescan multiple times on a single FocusIn
event, once for every window. This can be fixed easily with a check for
the root window (aka "."). I'll send a v2 patch with this change.
Secondly, when the context menu is opened via right click, and then
closed, it is recorded as a FocusIn event for our root window, even
though the context menu is a child of the root window. This triggers a
rescan. Unfortunately, I could not find a way to go around this behaviour.
This means some unnecessary rescans, but the rescan looks like a pretty
fast operation even on my slow hard disk, so it should probably not be a
problem.
If someone knows a way around the second issue, please let me know.
On 28/07/19 8:47 PM, Pratyush Yadav wrote:
If any changes are made to the tree while git-gui is open, the user has
to manually rescan to see those changes in the gui. With this change, a
rescan will be performed whenever the window comes in focus, removing
the need for manual rescans in most cases. A manual rescan will still be
needed when something makes changes to the tree while git-gui is still
in focus.
Signed-off-by: Pratyush Yadav <me@xxxxxxxxxxxxxxxxx>
---
git-gui/git-gui.sh | 1 +
1 file changed, 1 insertion(+)
diff --git a/git-gui/git-gui.sh b/git-gui/git-gui.sh
index 6de74ce639..8ca2033dc8 100755
--- a/git-gui/git-gui.sh
+++ b/git-gui/git-gui.sh
@@ -3849,6 +3849,7 @@ if {[is_enabled transport]} {
}
bind . <Key-F5> ui_do_rescan
+bind . <FocusIn> do_rescan
bind . <$M1B-Key-r> ui_do_rescan
bind . <$M1B-Key-R> ui_do_rescan
bind . <$M1B-Key-s> do_signoff
--
Regards,
Pratyush Yadav