Changes from version gtk-mac-integration-1.0.1 to version gtk-mac-integration-2.0.0: John Ralls (22): Change 'NSAlternate' to be used with GDK_MOD1_MASK, matching changes in Gtk keyhandling. initial conversion to gobject-introspectable structure [Introspection] Remove bindings/python/gtk3_osxapplication, made obsolete by gobject-introspection. [Introspection] Change all instances of gtk_osxapplication to gtkosx_application in python bindings. [Introspection] Rename gtk_osxapplication files in python bindings to gtkosx_application, part 1 [Introspection] Rename gtk_osxapplication files in python bindings to gtkosx_application, part 2 [Introspection] Test-integration with introspection. [Introspection] Change gtk_osxapplication to gtkosx_application in python bindings [Python] Adjust acinclude and bindings/python/Makefile.am for introspection changes. [Introspection] Rename the bundle functions from quartz_application to gtkosx_application so that introspection can find them. Fix up some documentation warnings [Introspection] Final changes to configure & python Makefile [Introspection] Fix up the test-introspection example so that it works. g_threads_init is deprecated in glib-2.31 Ignore introspection with Gtk2 Change namespace on create_cgimage_from_pixbuf Fix naming conflict with gtkquartz-menu Remove gtkosx_application_cleanup Adjustments and fixes to 4620977 Julien Woillez (1): Add support for icons in menus. Richard Procter (1): Fix object release issues found with Clang static analysis Roy Liu (1): Add the missing G_END_DECLS macro to gtkosxapplication.h Changes from version gtk-mac-integration-1.0.0 to version gtk-mac-integration-1.0.1: John Ralls (9): Add to extra-dist the test data files accel_map and src/testui.xml Strings: Fix error in install script. Restore ige-mac-foo files Rename ige-mac-foo files to gtk-mac-foo Rename bindings/python/igemacintegration to bindings/python/gtkmacintegration Update internals of former ige-mac-foo files strings: Fix the same error in the uninstall script. Changes from version ige-mac-integration-0.9.8 to version gtk-mac-integration-1.0.0: John Ralls (11): Replace the single static emission_hook_id with stuffing the id for each main menu as a qdata on the menu shell. Remove the attempt to add the window title to the window menu. Fix a dumb typo which prevented building with Gtk+2 Bug 56: Better French Translations, thanks to gegeweb Add doap file for git.gnome.org Rename the module from ige-mac-integration to gtk-mac-integration Remove deprecations for Gtk-mac-integration release 1.0.0 More changes to reflect project name change Make package work with "make dist" Documentation updates for 1.0.0 Release Changes from version ige-mac-integration-0.9.7 to version ige-mac-integration-0.9.8: John Ralls (13): Fix compile error with IGE_MAC_INTEGRATION defined. Cleanup trailing whitespace. Fix a warning about labels not being GObjects when there isn't a label (when the menu item is a separator). Bug #53: Force a double menubar switch to suppress a second system menu icon (with no attached menu) from appearing in the menubar when a new window is created after starting the main loop. Force addition of the current window to the Window menu when a window menu is passed in. This is mostly needed for for the first window; the windows list gets created after the window, so it's not no the list. Test for adding a window after starting the main loop; a tailored window menu is added to hold the command. Add m4 to the ignore list. Bug #52: Make Quartz accelerator handlers work in a gdk_threaded application. Move the "Bounce" binding from "o" to "u" so that it doesn't conflict with File>Open. Setup a new directory, bindings/python/gtk3_osxapplication for pygi (replacing pygtk for gtk3), and for making it instead of gtk_osxapplication if the gtk library is gtk3, Gtk-3.0.gir exists, and pygobject-2.28 or better is present. Add bindings which work with PyGI (replaced PyGtk). Changes from version ige-mac-integration-0.9.6 to version ige-mac-integration-0.9.7: John Ralls (7): Cast to GNSMenuItem so that the setHidden method is found when building for Tiger. https://sourceforge.net/apps/trac/gtk-osx/ticket/41 Correct parameter number error in g_cclosure_marshal_BOOLEAN__STRING Add test for openfile. Revert e9a29d3d5ee06f88ce02b68a047e52b1e6f95f31. It turns out that you _do_ need to call gtk_window_add_accel_group, even when using GtkUIManager. Fix key equivalents for Hide, Hide Others, and Minimize so that they don't require ; not standard per the Apple HIG. Thanks to Richard Proctor for pointing this out. Clean up trailing whitespace in configure.ac Changes from version ige-mac-integration-0.9.5 to version ige-mac-integration-0.9.6: John Ralls (11): Remove the semicolons from the macro definitions; they caused errors when using the macros in the declaration section of a code block. Add a "removeItem" call to GNSMenuItem (only needed because of the inMenu and index member variables which exist when the target is 10.4) Rework parent_set_emission_hook so that it returns immediately if neither the old nor the new parent have registered cocoa menus. It turns out that GtkComboBox uses a GtkMenu to keep its list, and trying to sync that menu was a common (and expensive) occurence. Restore cocoa_menu_item_connect to outside of not a separator; that was the wrong solution. Instead, explicitly unhide the inserted separated item in Cocoa. Prevent reentry of signal emission in applicationShouldTermintate Change keymask to reflect patch to gtk+ which maps NSCommandKeyMask to GDK_META_MASK test-integration: Enable BUILT_UI, fix a couple of compile errors for that option, load an accelerator map file. Add accel_map, used for test-integration. Add protection against index being out of range when unhiding a menu item. Use gdkkeysyms-compat for versions of Gtk after 2.90.7 Changes from version ige_mac_integration-0.9.4 to version ige-mac-integration-0.9.5: John Ralls (6): Protect the creation of the static GtkOSXApplication pointer with a GStaticMutex for thread safety. Correct the modifier key mappings. Move connect_menu_item call inside the "not a separator branch"; unattached separators (those inserted by gtk_osxapplication_insert_app_menu_item in particular) were disappearing because they couldn't successfully connect. [#37] Deprecate gtk_osxapplication_add_app_menu_group() and gtk_osxapplication_add_app_menu_item() in favor of the much simpler gtk_osxapplication_insert_app_menu_item(). Update python gtk_osxapplication bindings to reflect API changes. Richard Procter (1): Make bundle functions "free" Changes from version ige_mac_integration-0.9.3 to version ige_mac_integration-0.9.4: Hamish Mackenzie (1): Menu_event_handler_func: return eventNotHandledErr instead of calling the next event (which EventManager will do when it gets the eventNotHandledErr -- and if the next event returns it, then EventManager would call it again, uselessly) John Ralls (9): Add clean and distclean targets in strings Correct errors in Python detection script Correct conceptual error in strings clean target: Delete the Makefile for distclean, so that configure will create a new one. One can't very well have a make target to make the makefile. Enable building to gtk+-2.0 or gtk+-3.0 Replace deprecated function and macro calls to enable correct operation in gtk+-3.0 No need to call gtk_window_add_accel_group with BUILT_UI; GtkUIManager takes care of it for us. Clean up the ifdefs, which had gotten borked for IGEMACINTEGRATION. Corrected ifdef error which prevented test-integration from building in GTKOSXAPPLICATION mode. Changes from version ige_mac_integration-0.9.2 to version ige_mac_integration-0.9.3: John Ralls (14): Make bundle functions return duplicated gchar* instead of the const gchar* pointing into the NSString object. This corrects some ugly memory leaks. Create an object autorelease pool. Corrects some memory issues if the GtkOSXApplication object is created too early. Wrap static strings for translation. Test Response to WillTerminateNotification signal. Add translations for menu labels Use AC_CONFIG_FILES instead of the deprecated AC_OUTPUT(). Rename the english strings file to have the "en" suffix. Install the strings files. They'll go to $PREFIX/share/strings/foo.proj/GtkOSXApplication.strings (where "foo" is the appropriate language code). Move some code around to fix errors when BUILD_UI is undeffed. Template accelerator map file for converting standard accelerators to OSX-standard key equivalents. Add pointer to the wiki page for more documentation. Add standard key equivalents to selected menu items in Application and Window menus. Changes from version ige_mac_integration-0.9.1 to version ige_mac_integration-0.9.2: John Ralls (12): Add Paul Davis. Restore the docs Makefiles to AC_OUTPUT, mysteriously deleted in a merge. Better memory management in the unlikely case that the various memory items are changed. Provide accessor for GtkMenuBar* Change name of windowMenu to windowsMenu for consistency with NSApplication function Expose cocoa_menu_item_get as a public function. Split setting up of the Help and Window menus as separate functions. Additional required docs files... should have been added earlier. Fix crash if help_menu or window_menu is no longer attached to the menu bar. Add "will terminate" signal to fully support applications that use two-stage shutdown. Make the creation of docs conditional on --enable-gtk-docs. Changes from version ige_mac_integration-0.9.0 to version ige_mac_integration-0.9.1: John Ralls (6): Tiger compatibility fixes Minor documentation errors Change the return to shouldTerminate to NSTerminateCancel. Add observation of NSApplicationWillTerminate and use that to clean up. Add the notification object to self->priv to ensure its orderly destruction at shutdown. Changes from version ige_mac_integration-0.8.6 to version ige_mac_integration-0.9.0: John Ralls (144): Fix ticket #13 (window focus). Thanks to Steffen Gutmann. Add check for parent so menubars which aren't attached to windows won't be connected to the window-switch callback. (Steffen Gutmann) h2defs.py moved from pygtk to pygobject Add descriptive comments Two windows for test-integration Removed extraneous set_parent Fixed the change icon path so that it's something that's guaranteed to be available and so that it can be found (instead of being on an absolute path from MacPorts). Cocoa reimplimentation on ige-mac-menu from Paul Davis (Ardour). Change license notice to allow distribution under later revisions of LGPL. Change further info URL from imendio to gtk-osx Update copyright information Rename and reorganize gtkapplication-quartz, rewrite GtkApplication class as a GObject (from a Gtkmm C++) class. Adjust Makefile.am to compile GtkApplication and related classes. Upgrade to automake-1.10 Use GtkApplication menu functions instead of ige-mac-menu. Split up overly-long gtkapplication_quartz.c into more manageable (and object-specific) files. Cleanup extra includes and put all exported functions together. Invoke gtk_application_ready() before starting the event loop. This tells NSApp that the menus are ready; leave it out and the menubar isn't populated. minor reformat for readability Move, rather than skip, an existing NSMenuItem. Use the saved app_menu instead of retrieving submenu 0. Rename carbon_menu_item_add_submenu to cocoa_menu_item_add_submenu. Oops! Call [NSApplication sharedApplication] exactly once during GtkApplication init, and use the global NSApp elsewhere. Change GNSMenuItem to take a GClosure for its second argument instead of a GtkMenuItem. New ClosureData struct New function cocoa_menu_item_add_action to take a closure and a gpointer to other data so that an arbitrary two-parameter (one in closure.data and one in the gpointer) function wrapped in a closure can be used as a callback to the added CocoaMenuItem, for use in menus that aren't changed with the window. Change calls to [GNSMenuItem initWithTitle] to comply with new signature. Call g_cclosure_new_object_swap instead of g_cclosure_new Change signature of gtk_application_add_app_menu_item to take a label, closure, and data pointer instead of a menu_item. Restore ige-mac-menu to the library for testing and backwards-compatibility. Create accelerators on the File menu to test accelerator function. Renable testing two windows. Add reminder for test coverage Add explanitory comment about menu action callback Set up defines for testing either no menu mangling, Carbon menu mangling (IGEMACMENU) or Cocoa menu mangling (GTKAPPLICATION). Allow cocoa_menu_get to be called (and to return NULL) if cocoa_menu_connect hasn't yet been called. Move the menubar from being owned by the GtkApplication (which limits us to one menubar) to being owned by each window, since in Gtk each window has its own menubar (or doesn't have one at all -- which might crash the application when the menuless window receives focus.) Restore the use of a menu item for gtk_application_add_app_menu_item, because it turns out that while Carbon has only one App menu shared among all menubars, Cocoa has one for every menubar. Connect window_focus_cb to the signal. Correct behavior of [GtkApplicationDelegate ApplicationShouldQuit], signature and behavior of gtk_application_should_quit, and comments about other AppDelegate functions. Correct license from GPL to LGPL. Move update_active, update_accel_closure, and _update_submenu from carbon_menu_item_create to sync_menu_shell so that changes to these things will be synchronized even if the menu itself isn't changed. Replace interface extension and direct call to [NSApp setAppleMenu:] with indirect call Comment out add_to_app_menu and add_to_window_menu Fix forgotten parameter in g_print in gtk_application_should_load. Modify add_to_menubar to take a position indicating where on the menubar to add the new menu. Modify create_app_menu to always insert the app menu at index 0. Create a Window menu, always inserting it just to the left of the Help menu if there is one, or on the end if there isn't. Fix app_menu tracking Fix Window menu to include the first-opened window. Add signal handler to override gtk_widget_can_activate_accel for the hidden menubar; makes menu accelerators work. Add to the test program a GtkUIManager ui with actions instead of menuitems doing the work. Add some documentation and a guard to prevent calling ige_mac_menu_sync() before ige_mac_menu_set_menubar(); Turn off debug messagesin cocoa_menu_item and gtkapplication_quartz Suppress critical error message if cocoa_menu_get is called before the quark is set. Make the diagnostic signal handler messages DEBUG() macros. UI file for test program GtkUIManager ui. A little cleanup Delete stray leftover from adding accelerators Remove "in_event_menu_handler" Don't know why this was here, it isn't used. Force passing of windowless (read Apple) accelerators to the main menu bar. Remove cocoa_menu_item_add_action; it isn't needed. Clean out debugging message Provide menu-item hiding for Tiger (not tested) and enable it for Leopard and later (tested). Use Tiger menu item hiding. Prettier formatting. Provide for disabling of Quartz menu accelerator (aka keyEquivalents) for apps which need to do their own. Change the menu_item_activate callback to toggle the sensitiviy of Edit>Copy rather than turn it off once. Fix up the tests of accelerators so that they respond correctly to changes from e.g., gtkrc files. Provide test of disabling quartz key equivalents. Separate state syncronization into a separate function, rename cocoa_menu_item_active to cocoa_menu_item_checked, and provide for setting checked menu items to "NSMixedState" when the corresponding GtkCheckedMenuItem has its "inconsistent" property set to true. Provide for resyncing an already-set menubar. Make the "action" instance variable private. Fix errors in the Tiger menu-item-hiding code; now tested and working properly. Tidy up some word-wrapping Clean up line endings Add a Help item to the Help menu in BUILT_UI to force the Help menu to be visible after the About menu item is moved. Handle resync of an existing submenu Add parameters with accessors for the 3 OSX special menus so that their positions can be maintained. Add a notUsed instance variable with manipulation so that GNSMenuItems whose Gtk counterparts have been deleted programmatically with signals disconnected can be identified and removed. Track osx-controlled special menus (Apple, Windows, and if needed, Help) so that their positions can be adjusted after modifications to the menubar. Move menu_data_cb functions outside of the ifndef BUILT_UI block so that they can be used with BUILT_UI Add a button which adds/removes a new menu item to/from the menu bar to test and demonstrate programmatic menu synchronization. BUILT_UI only. Change all instances of NSMenuItem in cocoa_menu_item.c to GNSMenuItem to make sure that pointers don't get corrupted by slicing. Editorial cleanup and comments Oops. Clean the submenu and return if there *isn't* a Gtk submenu, not if there is! Some safety improvements in cocoa_menu_item_add_submenu Wrap ige_mac_menu_sync for python bindings When syncronizing the main menu bar ensure that the Window menu gets put back in the right place. Provide for synchronizing deletion of menu items. Provide a QUARTZ_HANDLERS macro to turn on allowing quartz to handle keyboard accelerators. Disconnect the old signal instead of ignoring the fact that the coocoa_item has changed. Don't do anything if the old item and new item match. Comments for #endifs; it's getting pretty complicated! Add dock menu support Comments separating function prototypes by what they do. Add comment indicating that ige-mac-image-utils does not need to be rewritten to support 64-bit compilation. Fix crasher from last change Fix a typo, add some descriptive comments Add a protective check against a null menu shell. Repair a couple of minor typos in GtkApplicationDelegate.c Finish dock functions in GtkApplication, and tests for same to test-integration.c Add bundle functions GtkApplicationNotify emits signals instead of calling a hard-coded function in GtkApplication. Reconfigure GtkApplicationDelegate to use a signal for applicationShouldTerminate. Rename GtkApplication to GtkOSXApplication Move the ige_mac_integration python bindings into their own directory in preparation for creating gtkosxapplication bindings (also in their own directory). Fix m4 function IMENDIO_PYTHON_CHECK for codegen moving from pygtk to pygobject. Symbol changes to be compatible with pygobject-codegen Modify makefiles and configure for moving the ige_mac_integration wrapper to a subdirectory of bindings/python. Provide a makefile for the gtkosxapplication binding. Basic python wrapper for gtkosxapplication. Rename bindings/python/gtkosxapplication to gtk_osxapplication to work consistently with the wrapper module name. Provide a signal for NSApplicationDelegate openFile: Add compiled python and wrapper-intermediate files to ignore list. Fix minor bug and remove testing comment. Change comment type, because pygobject's h2defs pukes on C++-style. Remove the menu item hide in gtk_osxapplication_add_app_menu_item. Remove redundant hide command from cocoa_menu_item_sync_state. (cocoa_menu_item_update_state handles hidden and sensitive properties) Rename cocoa_menu_item_sync_state to cocoa_menu_item_sync Give gtk_application_sync_menubar a GtkOSXApplication* argument so that h2defs.py will recognize it as a member function. Correct marshaller arguments in NSApplicationOpenFile signal creation. Complete python bindings for GtkOSXApplication Minor typo in AC_OUTPUT PyGObject-codegen needs to see "self" to recognize a class method Conditionally compile Carbon-dependent functions in 32-bit only. Disable compilation of igemacintegration python bindings when compiling for 64-bit is enabled. Make gtk_osxapplication_dock_menu() appear private to Gtk-Doc by renaming it _gtk_osxapplication_dock_menu() Enable running Gtk-Doc to build documentation; update minimum version to 1.11, the one in the current stable moduleset. First pass at documentation. Move the signal creation from gtk_osxapplication_init to gtk_osxapplication_class_init. Add the docs Makefiles so that docs get built Add gtk-doc.make to distribution Gtk-docs Makefile tweaks to get it working. Documentation fixups. Fix some documentation typos. Change return type of gtk_osxapplication_get_bundle_info to gchar* Finish Documentation Update README New version 0.9.0 Fix URL in README Changes from version ige-mac-integration-0.8.5 to version ige_mac_integration-0.8.6: John Ralls (10): Provide separate menubars for different windows. Corrected return type (and value) of window_focus event handler, added window_delete event handler. Better logging of parent-set events, synch_menu_shell startup. Rename carbon_menu_create_item to carbon_menu_item_create, more consistent with other function names Decrement CarbonMenuItem index when it's only 1 high (i.e., after a menu item deletion) instead of deleting and recreating the MenuItem. Destroy the Carbon Menu/MenuItem when freeing the CarbonMenu/CarbonMenuItem that points to it. Revert "Corrected return type (and value) of window_focus event handler, added window_delete event handler." Corrected return type, value of window_focus. Clear the menubar when a window is deleted. Still have to manually refocus to another window in the app, but this is a gtk+-quartz problem, not a menu problem. Changes from version ige-mac-integration-0.8.4 to version ige-mac-integration-0.8.5: John Ralls (13): Reformatted for better readability. Rearranged some if blocks to reduce excessive indenting. Extract method to carbon_menu_create_item Prettier control of Debug printing. Error detection and reporting for carbon calls Clean up compile errors Better, more concise logging create carbon_menu_item_get_checked from carbon_menu_item_get (which is returned to it's former form) Use carbon_menu_item_get_checked where needed Avoid adding CarbonMenuItems after errors Better logging Just increment the carbon_item->index after an insert instead of trying to delete the menu item and get everything relinked. Changes from version ige_mac_integration-0.8.0 to version ige-mac-integration-0.8.4: John Ralls (3): Added -DMAC_INTEGRATION Updated URL in README