[gtk+] GtkApplication: fix/simplify OS X implementation
- From: Dan Winship <danw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] GtkApplication: fix/simplify OS X implementation
- Date: Wed, 11 Jan 2012 18:01:24 +0000 (UTC)
commit 7afc7081c1363927a79f8eb89faac248d5286cd2
Author: Dan Winship <danw gnome org>
Date: Wed Jan 11 11:17:52 2012 -0500
GtkApplication: fix/simplify OS X implementation
Make the OS X implementation compile, and remove the code that was
only needed to support user interaction during the quit request.
https://bugzilla.gnome.org/show_bug.cgi?id=667705
gtk/gtkapplication.c | 44 +++++++++-----------------------------------
1 files changed, 9 insertions(+), 35 deletions(-)
---
diff --git a/gtk/gtkapplication.c b/gtk/gtkapplication.c
index e9bef7b..78c1b54 100644
--- a/gtk/gtkapplication.c
+++ b/gtk/gtkapplication.c
@@ -40,7 +40,6 @@
#include "gtkquartz-menu.h"
#import <Cocoa/Cocoa.h>
#include <Carbon/Carbon.h>
-#include <CoreServices/CoreServices.h>
#endif
#include <gdk/gdk.h>
@@ -161,10 +160,8 @@ struct _GtkApplicationPrivate
GMenu *combined;
GHashTable *inhibitors;
- gint quit_inhibited;
+ gint quit_inhibit;
guint next_cookie;
- AppleEvent quit_event, quit_reply;
- gboolean quitting;
#endif
};
@@ -267,7 +264,7 @@ gtk_application_menu_changed_quartz (GObject *object,
GMenu *combined;
combined = g_menu_new ();
- g_menu_append_submenu (combined, "Application", g_application_get_app_menu (application));
+ g_menu_append_submenu (combined, "Application", gtk_application_get_app_menu (application));
g_menu_append_section (combined, NULL, gtk_application_get_menubar (application));
gtk_quartz_set_main_menu (G_MENU_MODEL (combined), G_ACTION_OBSERVABLE (application->priv->muxer));
@@ -1397,33 +1394,15 @@ gtk_application_end_session (GtkApplication *application,
#elif defined(GDK_WINDOWING_QUARTZ)
-/* OS X implementation copied from EggSMClient */
-
-static pascal OSErr
-quit_requested_resumed (const AppleEvent *aevt,
- AppleEvent *reply,
- long refcon)
-{
- GtkApplication *app = GSIZE_TO_POINTER ((gsize)refcon);
-
- return app->priv->quit_inhibit == 0 ? noErr : userCanceledErr;
-}
+/* OS X implementation copied from EggSMClient, but simplified since
+ * it doesn't need to interact with the user.
+ */
static gboolean
idle_will_quit (gpointer data)
{
GtkApplication *app = data;
- /* Resume the event with a new handler that will return
- * a value to the system
- */
- AEResumeTheCurrentEvent (&app->priv->quit_event, &app->priv->quit_reply,
- NewAEEventHandlerUPP (quit_requested_resumed),
- (long)GPOINTER_TO_SIZE (app));
-
- AEDisposeDesc (&app->quit->quit_event);
- AEDisposeDesc (&app->quit->quit_reply);
-
if (app->priv->quit_inhibit == 0)
g_signal_emit (app, gtk_application_signals[QUIT], 0);
@@ -1437,17 +1416,12 @@ quit_requested (const AppleEvent *aevt,
{
GtkApplication *app = GSIZE_TO_POINTER ((gsize)refcon);
- /* FIXME AEInteractWithUser? */
- AEDuplicateDesc (aevt, &app->priv->quit_event);
- AEDuplicateDesc (reply, &app->priv->quit_reply);
- AESuspendTheCurrentEvent (aevt);
-
/* Don't emit the "quit" signal immediately, since we're
* called from a weird point in the guts of gdkeventloop-quartz.c
*/
- g_idle_add (idle_will_quit, app);
+ g_idle_add_full (G_PRIORITY_DEFAULT, idle_will_quit, app, NULL);
- return noErr;
+ return app->priv->quit_inhibit == 0 ? noErr : userCanceledErr;
}
static void
@@ -1489,7 +1463,7 @@ void
gtk_application_uninhibit (GtkApplication *application,
guint cookie)
{
- GApplicationInhibitFlags flags;
+ GtkApplicationInhibitFlags flags;
flags = GPOINTER_TO_UINT (g_hash_table_lookup (application->priv->inhibitors, GUINT_TO_POINTER (cookie)));
@@ -1517,7 +1491,7 @@ gtk_application_is_inhibited (GtkApplication *application,
gboolean
gtk_application_end_session (GtkApplication *application,
- GtkApplicationEndSessionStyle *style,
+ GtkApplicationEndSessionStyle style,
gboolean request_confirmation)
{
static const ProcessSerialNumber loginwindow_psn = { 0, kSystemProcess };
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]