[Mono-osx] Close GTK# application with apple+q
ChristianManthey
info at manthey-it.de
Fri Sep 24 10:52:58 EDT 2010
After implementing the "Integrating a GTK# Application with the Mac" articel
from Michael Hutchinson i was very much releaved that my GTK# application
was able to react on the shutdown command from OSX. But my user like to use
the CMD+Q (apple+q) Keyboard combination so i was searching for a way to
implement this functionality.
After some trial and error i came with the following solution, that might
also help others. If someone has a better way of solving this, i'm also
happy for comments on how to improve the below.
1. I used the KeyReleaseEvent from the GTK# application to check whether my
user is trying to quit the application and call the following statement
directly after the Build(); function
this.KeyReleaseEvent += new
KeyReleaseEventHandler(this.checkKey);
2. As the above mentioned event will be raised two times for cmd+q i created
the following 4 vars in my gtk.Window class.
private bool appleKey_clicked = false;
private bool q_clicked = false;
private int time_control_clicked = 0;
private int time_q_clicked = 0;
3. The function checkKey has the following logic implemented:
protected virtual void checkKey (object o, KeyReleaseEventArgs args)
{
int time_diff = 0;
if (args.Event.Key.Equals(Gdk.Key.Meta_L) ||
args.Event.Key.Equals(Gdk.Key.Meta_R)){
appleKey_clicked = true;
time_control_clicked = (int)args.Event.Time;
} else if (appleKey_clicked && (args.Event.Key.Equals(Gdk.Key.q)
|| args.Event.Key.Equals(Gdk.Key.Q))){
q_clicked = true;
time_q_clicked = (int)args.Event.Time;
}
if (appleKey_clicked && q_clicked) {
time_diff = time_control_clicked - time_q_clicked;
if (time_diff < 0)
time_diff = time_diff * (-1);
if (time_diff < 60)
OnClose(null, null);
else
{
appleKey_clicked = false;
q_clicked = false;
time_control_clicked = 0;
time_q_clicked = 0;
}
}
}
It's tested on Snow Leopard and seems to work quite well.
--
View this message in context: http://mono.1490590.n4.nabble.com/Close-GTK-application-with-apple-q-tp2553601p2553601.html
Sent from the Mono - OSX mailing list archive at Nabble.com.
More information about the Mono-osx
mailing list