Only show user-presets in favorite sidebar
[ardour.git] / libs / gtkmm2ext / gtkapplication_quartz.mm
index c5fb8b12e23c41c2857c17dd35655dd7745789ab..c845db90b71d5b96d40adb94c51ce4859b53a080 100644 (file)
  * Boston, MA 02111-1307, USA.
  */
 
+#include <sigc++/signal.h>
+#include <sigc++/slot.h>
+
+#include <string.h>
+#include <gtk/gtk.h>
+#include <gdk/gdkkeysyms.h>
+#include <gtkmm2ext/gtkapplication.h>
+#include <gtkmm2ext/gtkapplication-private.h>
+
 #import <AppKit/NSMenu.h>
 #import <AppKit/NSMenuItem.h>
 #import <AppKit/NSCell.h>
 #import <Foundation/NSString.h>
 #import <Foundation/NSNotification.h>
 
-#include <string.h>
-#include <gtk/gtk.h>
-#include <gdk/gdkkeysyms.h>
-#include <gtkmm2ext/gtkapplication.h>
-#include <gtkmm2ext/gtkapplication-private.h>
+#define UNUSED_PARAMETER(a) (void) (a)
 
 // #define DEBUG(format, ...) g_printerr ("%s: " format, G_STRFUNC, ## __VA_ARGS__)
 #define DEBUG(format, ...)
@@ -567,7 +572,10 @@ idle_call_activate (gpointer data)
 }
 - (void) activate:(id) sender
 {
-       g_idle_add (idle_call_activate, gtk_menu_item);
+       UNUSED_PARAMETER(sender);
+    // Hot Fix. Increase Priority.
+       g_idle_add_full (G_PRIORITY_HIGH_IDLE, idle_call_activate, gtk_menu_item, NULL);
+//    g_idle_add (idle_call_activate, gtk_menu_item);
 }
 @end
 
@@ -625,7 +633,7 @@ get_menu_label_text (GtkWidget  *menu_item,
 }
 
 static gboolean
-accel_find_func (GtkAccelKey *key,
+accel_find_func (GtkAccelKey * /*key*/,
                 GClosure    *closure,
                 gpointer     data)
 {
@@ -801,9 +809,9 @@ cocoa_menu_item_update_accelerator (NSMenuItem *cocoa_item,
      is still done by GTK, so this is more cosmetic than it may 
      appear.
   */
-  
-  const gchar* ltxt = get_menu_label_text (widget, &label);
-  
+
+  get_menu_label_text (widget, &label);  
+
   if (GTK_IS_ACCEL_LABEL (label) &&
            GTK_ACCEL_LABEL (label)->accel_closure)
        {
@@ -870,9 +878,9 @@ cocoa_menu_item_update_accelerator (NSMenuItem *cocoa_item,
                                        modifiers |= NSControlKeyMask;
                                }
                                
-                               /* gdk/quartz maps Command to Meta (XXX check this - it may move to SUPER at some point) */
+                               /* our modified gdk/quartz maps Command to Mod2 */
                                
-                               if (key->accel_mods & GDK_META_MASK) {
+                               if (key->accel_mods & GDK_MOD2_MASK) {
                                        modifiers |= NSCommandKeyMask;
                                }
                        }  
@@ -887,9 +895,9 @@ cocoa_menu_item_update_accelerator (NSMenuItem *cocoa_item,
 }
 
 static void
-cocoa_menu_item_accel_changed (GtkAccelGroup   *accel_group,
-                               guint            keyval,
-                               GdkModifierType  modifier,
+cocoa_menu_item_accel_changed (GtkAccelGroup*   /*accel_group*/,
+                              guint            /*keyval*/,
+                               GdkModifierType /*modifier*/,
                                GClosure        *accel_closure,
                                GtkWidget       *widget)
 {
@@ -948,8 +956,8 @@ cocoa_menu_item_update_accel_closure (GNSMenuItem *cocoa_item,
 
 static void
 cocoa_menu_item_notify_label (GObject    *object,
-                              GParamSpec *pspec,
-                              gpointer    data)
+                             GParamSpec *pspec,
+                             gpointer)
 {
   GNSMenuItem *cocoa_item;
 
@@ -1089,8 +1097,8 @@ add_menu_item (NSMenu* cocoa_menu, GtkWidget* menu_item, int index)
 static void
 push_menu_shell_to_nsmenu (GtkMenuShell *menu_shell,
                           NSMenu*       cocoa_menu,
-                          gboolean      toplevel,
-                          gboolean      debug)
+                          gboolean      /*toplevel*/,
+                          gboolean      /*debug*/)
 {
   GList         *children;
   GList         *l;
@@ -1117,9 +1125,9 @@ push_menu_shell_to_nsmenu (GtkMenuShell *menu_shell,
 static gulong emission_hook_id = 0;
 
 static gboolean
-parent_set_emission_hook (GSignalInvocationHint *ihint,
-                         guint                  n_param_values,
-                         const GValue          *param_values,
+parent_set_emission_hook (GSignalInvocationHint* /*ihint*/,
+                         guint                  /*n_param_values*/,
+                         const GValue*          param_values,
                          gpointer               data)
 {
   GtkWidget *instance = (GtkWidget*) g_value_get_object (param_values);
@@ -1156,12 +1164,10 @@ parent_set_emission_hook (GSignalInvocationHint *ihint,
 }
 
 static void
-parent_set_emission_hook_remove (GtkWidget *widget,
-                                gpointer   data)
+parent_set_emission_hook_remove (GtkWidget*, gpointer)
 {
-  g_signal_remove_emission_hook (g_signal_lookup ("parent-set",
-                                                 GTK_TYPE_WIDGET),
-                                emission_hook_id);
+       g_signal_remove_emission_hook (g_signal_lookup ("parent-set", GTK_TYPE_WIDGET),
+                                      emission_hook_id);
 }
 
 /* Building "standard" Cocoa/OS X menus */
@@ -1186,6 +1192,7 @@ add_to_menubar (NSMenu *menu)
        return 0;
 }
 
+#if 0
 static int
 add_to_app_menu (NSMenu *menu)
 {
@@ -1196,17 +1203,7 @@ add_to_app_menu (NSMenu *menu)
        [dummyItem release];
        return 0;
 }
-
-static int
-add_to_window_menu (NSMenu *menu)
-{
-       NSMenuItem *dummyItem = [[NSMenuItem alloc] initWithTitle:@""
-                                action:nil keyEquivalent:@""];
-       [dummyItem setSubmenu:menu];
-       [_window_menu addItem:dummyItem];
-       [dummyItem release];
-       return 0;
-}
+#endif
 
 static int
 create_apple_menu ()
@@ -1226,7 +1223,7 @@ create_apple_menu ()
        [menuitem release];
        [_app_menu addItem: [NSMenuItem separatorItem]];
        menuitem = [[NSMenuItem alloc] initWithTitle:@"Hide"
-                   action:@selector(hide:) keyEquivalent:@""];
+                   action:@selector(hide:) keyEquivalent:@"h"];
        [menuitem setTarget: NSApp];
        [_app_menu addItem: menuitem];
        [menuitem release];
@@ -1253,6 +1250,18 @@ create_apple_menu ()
        return 0;
 }
 
+#if 0
+static int
+add_to_window_menu (NSMenu *menu)
+{
+       NSMenuItem *dummyItem = [[NSMenuItem alloc] initWithTitle:@""
+                                action:nil keyEquivalent:@""];
+       [dummyItem setSubmenu:menu];
+       [_window_menu addItem:dummyItem];
+       [dummyItem release];
+       return 0;
+}
+
 static int
 create_window_menu ()
 {   
@@ -1269,6 +1278,7 @@ create_window_menu ()
 
        return 0;
 }  
+#endif
 
 /*
  * public functions
@@ -1402,30 +1412,37 @@ namespace Gtk {
        return self;
 }
 
-- (void)appDidBecomeActive:(NSNotification *)notification
+- (void)appDidBecomeActive:(NSNotification *) notification
 {
+       UNUSED_PARAMETER(notification);
        Gtkmm2ext::Application::instance()->ActivationChanged (true);
 }
 
-- (void)appDidBecomeInactive:(NSNotification *)notification
+- (void)appDidBecomeInactive:(NSNotification *) notification
 {
+       UNUSED_PARAMETER(notification);
        Gtkmm2ext::Application::instance()->ActivationChanged (false);
 }
 
 @end
 
-@interface GtkApplicationDelegate : NSObject {}
+@interface GtkApplicationDelegate : NSObject
+-(BOOL) application:(NSApplication*) app openFile:(NSString*) file;
+- (NSApplicationTerminateReply) applicationShouldTerminate:(NSApplication *) app;
+- (void) startApp;
 @end
 
 @implementation GtkApplicationDelegate
--(BOOL) application:(NSApplication*) theApplication openFile:(NSString*) file
+-(BOOL) application:(NSApplication*) app openFile:(NSString*) file
 {
+       UNUSED_PARAMETER(app);
        Glib::ustring utf8_path ([file UTF8String]);
        Gtkmm2ext::Application::instance()->ShouldLoad (utf8_path);
        return 1;
 }
-- (NSApplicationTerminateReply) applicationShouldTerminate:(NSApplication *)sender
+- (NSApplicationTerminateReply) applicationShouldTerminate:(NSApplication *) app
 {
+       UNUSED_PARAMETER(app);
        Gtkmm2ext::Application::instance()->ShouldQuit ();
        return NSTerminateCancel;
 }
@@ -1458,6 +1475,13 @@ extern "C" void
 gtk_application_ready ()
 {
        [ NSApp finishLaunching ];
+        [[NSApplication sharedApplication] activateIgnoringOtherApps : YES];
+}
+
+extern "C" void
+gtk_application_hide ()
+{
+    [NSApp performSelector:@selector(hide:)];
 }
 
 extern "C" void