Re: [gtk-osx-users] Switching keyboard layouts with Alt+Cmd+Space

On 19/01/2014, at 09:02, Andrius <andriusr yahoo com> wrote:

I do not expect that my patch will be accepted, like other patches for 711019, so I did not submit it there.
I just wanted to show, how this particular problem of Alt+Cmd+Space not working on gtk-osx applications can 
be solved. It shows how to switch keyboard layouts manually, using Carbon framework.
If You, as maintainer of gtk-osx, will find this useful, feel free to incorporate it in some place.
Cmd+M minimizes window, while Cmd+H hides application. As far as I know there is special function to enable 
them in gtk-mac-integration, gtkosx_application_set_use_quartz_accelerators (). There should be some code 
handling them, since without executing gtkosx_application_set_use_quartz_accelerators () they do not work 
on my system.


I agree that we don’t want to load up gdkkeys-quartz with a bunch of special cases, but it seems like a lot 
of work for something you don’t expect to get pushed. In any case, sharing it on the bug is more effective 
because Kris and Mitch don’t AFAIK read this list, but they do carry a lot of weight in deciding what gets 
done about gtk-quartz issues. BTW, you should be doing work like that in a private git branch and using git 
format patch to make the patch, both to be acceptable to Gnome and to protect your sanity while developing 

With set_use_quartz_accelerators enabled, you should also see all of the other Apple-defined accelerators 
working properly as well: It grabs the accelerator and passes it to the Quartz responder chain. If Quartz 
doesn’t eat it, it passes it on to Gtk. The problem with it is that if there’s a binding overloading an 
accelerator, as is common with Cmd-(X|C|V), the accelerator is fired instead of the binding. This causes the 
owner of the menu to respond to the event rather than the widget with current keyboard focus, preventing you 
from e.g. cutting or pasting into dialog boxes.

Yes, there probably should be code in gtkosxapplication to handle the accelerators set in 
create_apple_menu(). That doesn’t solve the problem, though: I don’t want to add a ton of pass-through 
functions to gtkosxapplication or gtk-quartz to implement the 
system accelerators. As I said on the bug, the right answer is to hand unused key events back to Quartz.

John Ralls

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]