From c2b901dfe9cd0cc9392401feb780e8918d20bbd8 Mon Sep 17 00:00:00 2001
From: James Newton <redshodan@gmail.com>
Date: Fri, 16 Nov 2007 23:11:35 +0000
Subject: [PATCH] Adjusted the menu code in an attempt to make it work better
 on leopard. Removed the idle_add wrapper for on_quit and moved the idle_add
 wrapping into the sync-menu code instead.

---
 TODO.osx                             |   6 ++--
 data/nibs/Gajim.nib/info.nib         |   9 +++--
 data/nibs/Gajim.nib/keyedobjects.nib | Bin 6413 -> 7184 bytes
 launch.sh                            |   4 +++
 src/gajim.py                         |   2 +-
 src/osx/syncmenu/Makefile.am         |   4 +--
 src/osx/syncmenu/sync-menu.c         |  10 ++++--
 src/roster_window.py                 |  49 +++++++++++++--------------
 8 files changed, 46 insertions(+), 38 deletions(-)

diff --git a/TODO.osx b/TODO.osx
index 7216d3aea2..b5c332299d 100644
--- a/TODO.osx
+++ b/TODO.osx
@@ -23,12 +23,10 @@ The bits that dont work
    - fix user session management
 -integrate the Gajim and gajim-remote scripts with autoconf and add GTK
  framework detection
--Pass icons to OS/X menu
--set the LSEnvironment in Info.plist for gtk paths instead of hard coding in
- gajim.py
--Maybe setup the pasteboard  services for an OS/X alternative to the
+-Maybe setup the pasteboard services for an OS/X alternative to the
  gajim_remote
 -CFBundleDocumentTypes.NSDocument
+-zeroconf has a parsing problem with the MDNS result.
 
 
 Native GTK bugs
diff --git a/data/nibs/Gajim.nib/info.nib b/data/nibs/Gajim.nib/info.nib
index 90bdefffb9..9cb6b534dc 100644
--- a/data/nibs/Gajim.nib/info.nib
+++ b/data/nibs/Gajim.nib/info.nib
@@ -3,19 +3,22 @@
 <plist version="1.0">
 <dict>
 	<key>IBDocumentLocation</key>
-	<string>69 10 356 240 0 0 1280 832 </string>
+	<string>82 255 356 240 0 0 1280 832 </string>
 	<key>IBEditorPositions</key>
 	<dict>
 		<key>29</key>
-		<string>245 312 185 44 0 0 1280 832 </string>
+		<string>476 296 342 44 0 0 1280 832 </string>
 	</dict>
 	<key>IBFramework Version</key>
 	<string>446.1</string>
+	<key>IBOldestOS</key>
+	<integer>4</integer>
 	<key>IBOpenObjects</key>
 	<array>
+		<integer>289</integer>
 		<integer>29</integer>
 	</array>
 	<key>IBSystem Version</key>
-	<string>8R218</string>
+	<string>8S165</string>
 </dict>
 </plist>
diff --git a/data/nibs/Gajim.nib/keyedobjects.nib b/data/nibs/Gajim.nib/keyedobjects.nib
index bc313d484ed50e29c78da3564417e80d2ac9b29b..f13f467bfe6fadf16da4c85320890c42da20822f 100644
GIT binary patch
literal 7184
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

literal 6413
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
Q5AWFQ?YH(e{#{S`7pMXXC;$Ke

diff --git a/launch.sh b/launch.sh
index 1b23c5c4de..7a3f8b5f62 100755
--- a/launch.sh
+++ b/launch.sh
@@ -4,6 +4,10 @@ OS=`uname -s`
 
 if [ "x${OS}" == "xDarwin" ]; then
     export RESOURCEPATH="${BASE}/dist/Gajim.app/Contents/Resources"
+    GTK_DIR="/Library/Frameworks/GTK+.framework/Versions/Current"
+    export PATH="${GTK_DIR}/bin:$PATH"
+    export PYTHONPATH="${GTK_DIR}/lib/python2.5/site-packages:${GTK_DIR}/lib/python2.5/site-packages/gtk-2.0:${PYTHONPATH}"
+    unset GTK_DIR
 fi
 
 cd ${BASE}/src
diff --git a/src/gajim.py b/src/gajim.py
index 6954e764ff..99c9e75e4e 100755
--- a/src/gajim.py
+++ b/src/gajim.py
@@ -297,7 +297,7 @@ def pid_alive():
 		return False
 	elif sys.platform == 'darwin':
 		from osx import checkPID
-		return checkPID(pid, 'gajim')
+		return checkPID(pid, 'Gajim.bin')
 	try:
 		if not os.path.exists('/proc'):
 			return True # no /proc, assume Gajim is running
diff --git a/src/osx/syncmenu/Makefile.am b/src/osx/syncmenu/Makefile.am
index 7974765590..d8ff94861f 100644
--- a/src/osx/syncmenu/Makefile.am
+++ b/src/osx/syncmenu/Makefile.am
@@ -10,8 +10,8 @@ if BUILD_COCOA
 syncmenulib_LTLIBRARIES = syncmenu.la
 syncmenulibdir = $(libdir)/gajim
 syncmenu_la_SOURCES = sync-menu.c pysyncmenu.c
-syncmenu_la_LDFLAGS = -module -avoid-version $(GTKLDFLAGS)
-syncmenu_la_CFLAGS = $(GTKCFLAGS) -Wall -g $(INCLUDES)
+syncmenu_la_LDFLAGS = -module -avoid-version -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386 $(GTKLDFLAGS)
+syncmenu_la_CFLAGS = -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386 $(GTKCFLAGS) -Wall -g $(INCLUDES)
 endif
 
 DISTCLEANFILES = 
diff --git a/src/osx/syncmenu/sync-menu.c b/src/osx/syncmenu/sync-menu.c
index dde97d7f1a..f29685c294 100644
--- a/src/osx/syncmenu/sync-menu.c
+++ b/src/osx/syncmenu/sync-menu.c
@@ -477,11 +477,16 @@ carbon_menu_item_connect (GtkWidget     *menu_item,
   return carbon_item;
 }
 
-
 /*
  * carbon event handler
  */
 
+gboolean menuitem_activate_wrapper(gpointer data)
+{
+    gtk_menu_item_activate((GtkMenuItem*)data);
+    return FALSE;
+}
+
 static OSStatus
 menu_event_handler_func (EventHandlerCallRef  event_handler_call_ref, 
 			 EventRef             event_ref, 
@@ -526,7 +531,8 @@ menu_event_handler_func (EventHandlerCallRef  event_handler_call_ref,
 					 sizeof (widget), 0, &widget);
 	      if (err == noErr && widget)
 		{
-		  gtk_menu_item_activate (GTK_MENU_ITEM (widget));
+            g_idle_add(menuitem_activate_wrapper,
+                       (gpointer)GTK_MENU_ITEM (widget));
 		  return noErr;
 		}
 	    }
diff --git a/src/roster_window.py b/src/roster_window.py
index eabd8f1fba..7eadcf4011 100644
--- a/src/roster_window.py
+++ b/src/roster_window.py
@@ -4191,9 +4191,6 @@ class RosterWindow:
 		gtk.main_quit()
 
 	def on_quit_menuitem_activate(self, widget):
-		gobject.idle_add(self.on_quit_menuitem_activate_real, widget)
-
-	def on_quit_menuitem_activate_real(self, widget):
 		accounts = gajim.connections.keys()
 		get_msg = False
 		for acct in accounts:
@@ -5187,47 +5184,47 @@ class RosterWindow:
 	def setup_for_osx(self):
 		# Massage the GTK menu so it will match up to the OS/X nib style menu
 		# when passed to sync-menu and merged
-		main_menu = self.xml.get_widget('menubar')
-		app_item = gtk.MenuItem('Gajim')
+		main_menu = self.xml.get_widget("menubar")
+		app_item = gtk.MenuItem("Gajim")
 		main_menu.insert(app_item, 0)
-		win_item = gtk.MenuItem('Window')
+		win_item = gtk.MenuItem("Window")
 		main_menu.insert(win_item, 4)
-		actions_menu = self.xml.get_widget('actions_menu_menu')
-		quit_item = self.xml.get_widget('quit_menuitem')
+		actions_menu = self.xml.get_widget("actions_menu_menu")
+		quit_item = self.xml.get_widget("quit_menuitem")
 		actions_menu.remove(quit_item)
-		actions_menu.remove(self.xml.get_widget('separator1'))
-		edit_menu = self.xml.get_widget('edit_menu_menu')
-		edit_menu.remove(self.xml.get_widget('preferences_menuitem'))
-		edit_menu.remove(self.xml.get_widget('separator2'))
-		help_menu = self.xml.get_widget('help_menu_menu')
-		about_item = self.xml.get_widget('about_menuitem')
+		actions_menu.remove(self.xml.get_widget("separator1"))
+		edit_menu = self.xml.get_widget("edit_menu_menu")
+		#edit_menu.remove(self.xml.get_widget("preferences_menuitem"))
+		edit_menu.remove(self.xml.get_widget("separator2"))
+		help_menu = self.xml.get_widget("help_menu_menu")
+		about_item = self.xml.get_widget("about_menuitem")
 		help_menu.remove(about_item)
 		# Build up App menu
 		app_menu = gtk.Menu()
 		app_item.set_submenu(app_menu)
 		app_menu.append(about_item)
-		app_menu.append(gtk.MenuItem('__SKIP__'))
-		prefs_item = gtk.MenuItem('Preferences...')
+		app_menu.append(gtk.MenuItem("__SKIP__"))
+		prefs_item = gtk.MenuItem("Preferences...")
 		prefs_item.connect("activate", self.on_preferences_menuitem_activate)
 		accels = gtk.AccelGroup()
-		self.xml.get_widget('roster_window').add_accel_group(accels)
-		prefs_item.add_accelerator('activate', accels, ord(','),
+		self.xml.get_widget("roster_window").add_accel_group(accels)
+		prefs_item.add_accelerator("activate", accels, ord(','),
 								   gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)
 		app_menu.append(prefs_item)
-		app_menu.append(gtk.MenuItem('__SKIP__'))
-		app_menu.append(gtk.MenuItem('__SKIP__'))
-		app_menu.append(gtk.MenuItem('__SKIP__'))
-		app_menu.append(gtk.MenuItem('__SKIP__'))
-		app_menu.append(gtk.MenuItem('__SKIP__'))
-		app_menu.append(gtk.MenuItem('__SKIP__'))
-		app_menu.append(gtk.MenuItem('__SKIP__'))
+		app_menu.append(gtk.MenuItem("__SKIP__"))
+		app_menu.append(gtk.MenuItem("__SKIP__"))
+		app_menu.append(gtk.MenuItem("__SKIP__"))
+		app_menu.append(gtk.MenuItem("__SKIP__"))
+		app_menu.append(gtk.MenuItem("__SKIP__"))
+		app_menu.append(gtk.MenuItem("__SKIP__"))
+		app_menu.append(gtk.MenuItem("__SKIP__"))
 		app_menu.append(quit_item)
 		app_menu.show_all()
 		# Do the merge baby!
 		syncmenu.takeover_menu(main_menu)
 		self.make_menu(force = True)
 		# Hide the GTK menubar itself and let the OS/X menubar do its thing
-		self.xml.get_widget('menubar').hide()
+		#self.xml.get_widget("menubar").hide()
 		return
 
 	def __init__(self):
-- 
GitLab