Re: [RFC/PATCH] Force using Tcl/Tk 8.4 on Mac OS X

3 messages, 2 authors, 2016-06-15 · open the first message on its own page

Re: [RFC/PATCH] Force using Tcl/Tk 8.4 on Mac OS X

From: Daniel A. Steffen <hidden>
Date: 2016-06-15 22:49:30

Hi Stefan,

On Sep 6, 2010, at 10:07 AM, Stefan Haller wrote:
When using Git Gui.app on a Snow Leopard system with Tcl/Tk 8.5,
there are two problems:

1) Menu commands that open a dialog (e.g. "Push" or "Revert changes")
  don't work when invoked via their keyboard shortcuts. You get a
  dialog without a title bar, and the application then hangs without
  further responding to any user input; you need to kill it. Invoking
  the same commands with the mouse by choosing from the menu works fine.
first time I hear of this (or see this myself, and I use git gui every day on Mac OS X); in part this may be due to the fact that many of the menu shortcuts assigned by git gui conflict with existing OS X shortcuts and don't work anyway e.g. cmd-A (esp if a text widget is in focus)...

personally I would hate for my git gui to be downgraded to Tk 8.4 and Carbon because of this small issue, and I'm unlikely to be alone.
2) The colored pane headers (red, green, yellow) are all grey.
this is intentional and triggered by the use of ttk, there is a config setting to turn it off (gui.usettk)
Obviously, the first problem is much more serious than the second.

Both problems go away when using Tcl/Tk 8.4 instead of 8.5. The user
interface looks a little "older" then, but at least it works reliably.

Until someone figures out how to solve these problems properly with
8.5, force using 8.4.
please don't brute-force around the problem in this way, there are many features that the Cocoa Tk in 8.5+ adds that would be lost by such a change. 
Moreover the fact that 8.4 is present in that location is for backwards compatibility only, please don't introduce any new dependencies on it.

An effective small workaround for the problem appears to be to turn off the menu accelerators for the affected commands (the key shortcuts will still work, since the actual key bindings are independent of the menu accelerators), see below.
Is there a complete list of menu shortcuts that bring up a dialog?

Ultimately the right way to address this issue is to fix it in Tk, please report this in the Tk bug tracker if you haven't already, a quick glance in the debugger shows a hang in recursive event loop invocation such as used by tk_dialog when called from a menu accelerator callback.

Thanks!

Cheers,

Daniel

diff --git i/git-gui.sh w/git-gui.sh
index 0d5c5e3..ec7ed7d 100755
--- i/git-gui.sh
+++ w/git-gui.sh
@@ -2723,6 +2723,9 @@ if {[is_enabled multicommit] || [is_enabled singlecommit]} {
                -accelerator $M1T-J
        lappend disable_on_lock \
                [list .mbar.commit entryconf [.mbar.commit index last] -state]
+       if {[is_MacOSX]} {
+               .mbar.commit entryconf last -accelerator {}
+       }
 
        .mbar.commit add separator
 

Re: [RFC/PATCH] Force using Tcl/Tk 8.4 on Mac OS X

From: Stefan Haller <hidden>
Date: 2016-06-15 22:49:30

Daniel A. Steffen [off-list ref] wrote:
On Sep 6, 2010, at 10:07 AM, Stefan Haller wrote:
quoted
When using Git Gui.app on a Snow Leopard system with Tcl/Tk 8.5,
there are two problems:

1) Menu commands that open a dialog (e.g. "Push" or "Revert changes")
  don't work when invoked via their keyboard shortcuts. You get a
  dialog without a title bar, and the application then hangs without
  further responding to any user input; you need to kill it. Invoking
  the same commands with the mouse by choosing from the menu works fine.
first time I hear of this (or see this myself, and I use git gui every day
on Mac OS X); in part this may be due to the fact that many of the menu
shortcuts assigned by git gui conflict with existing OS X shortcuts and
don't work anyway e.g. cmd-A (esp if a text widget is in focus)...

personally I would hate for my git gui to be downgraded to Tk 8.4 and
Carbon because of this small issue, and I'm unlikely to be alone.
It's not a small issue for me, but I agree that downgrading to 8.4 is
the wrong solution.
An effective small workaround for the problem appears to be to turn off
the menu accelerators for the affected commands (the key shortcuts will
still work, since the actual key bindings are independent of the menu
accelerators), see below.
This does indeed solve the problem, but at a high price; having the menu
accelerators not visible in the menu is not a satisfactory solution.
(For me personally it's ok, but not for new users.)

Is there no other way to work around this in git gui, like maybe
deferring the command invocation with a one-shot timer or something?
Is there a complete list of menu shortcuts that bring up a dialog?
As far as I can see, it's

    Branch/Create
    Branch/Checkout
    Commit/Revert Changes
    Merge/Local Merge
    Remote/Push
Ultimately the right way to address this issue is to fix it in Tk, please
report this in the Tk bug tracker if you haven't already, a quick glance
in the debugger shows a hang in recursive event loop invocation such as
used by tk_dialog when called from a menu accelerator callback.
Will do, thanks.
quoted
2) The colored pane headers (red, green, yellow) are all grey.
this is intentional and triggered by the use of ttk, there is a config
setting to turn it off (gui.usettk)
I'm not sure I understand. On a Windows system with Tk 8.5 and ttk on,
the pane headers are still colored.  Why is it desirable to have them
grey on Mac?

-Stefan


-- 
Stefan Haller
Berlin, Germany
http://www.haller-berlin.de/

Re: [RFC/PATCH] Force using Tcl/Tk 8.4 on Mac OS X

From: Stefan Haller <hidden>
Date: 2016-06-15 22:49:32

Daniel A. Steffen [off-list ref] wrote:
Ultimately the right way to address this issue is to fix it in Tk, please
report this in the Tk bug tracker if you haven't already, a quick glance
in the debugger shows a hang in recursive event loop invocation such as
used by tk_dialog when called from a menu accelerator callback.
I finally got around to this now.  It was already reported as issue
3044863; I added a comment to the existing ticket.

<http://sourceforge.net/tracker/?func=detail&aid=3044863&group_id=12997&atid=112997>

I still think we need a work-around in git gui (and maybe gitk) until a
fixed Tk version is widely available. Yesterday I showed git to a
co-worker, and after 20 minutes of randomly playing around with it he
ran into the problem (without me pointing him to it).

-Stefan


-- 
Stefan Haller
Berlin, Germany
http://www.haller-berlin.de/
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help