
On 2014-04-16 03:03 +0100, Krzysztof KosiĆski wrote:
2014-04-15 21:05 GMT+02:00 su_v <suv-sf@...58...>:
- Current packaging scripts in trunk and in the stable release branch
don't work to quickly produce a new X11-based package of 0.48.5. [1]
So it sounds like have to provide a Quartz build for OSX, right?
It's about time to switch to GTK+/Quartz builds: many Mac users really dislike having to install XQuartz, and to use X11-based applications. In my own experience GTK+/Quartz-based builds are usable - despite some backend-specific issues with the GUI and with canvas updates.
Canvas updates ================ Overall slowness and lagging as was described here: http://inkscape.13.x6.nabble.com/Inkscape-native-Mac-OS-X-build-look-improvements-tp2826961p2826975.html in my experience seems to have improved a lot during the past years (probably upstream in the Quartz backend of Gdk/Gtk), but isn't fully solved yet.
The application bundles based on the branch 'osxmenu' use this setting (in the bundle's Info.plist file): <key>CGDisableCoalescedUpdates</key> <true/> which helps for example to improve real-time updates which happen both on-canvas and in the status bar messages, e.g. when rotating a selection by dragging a rotation handle with the mouse.
Canvas updates are still delayed under these circumstances:
GTK2 and GTK3 Quartz backend: - hiding/showing GUI elements (menu 'View > Show/Hide') - toggling grid on/off (only if the rulers are hidden) - updating the selection cue and transformation handles (only if all GUI elements are hidden (Shift+F11)) GTK3 Quartz backend only: - scrolling, panning (space bar + pointer move, scrolling, Ctrl+Arrow keys) (not updated canvas areas show the solid background color from the gtk theme, instead of the (outdated) drawing content)
Symptom: a horizontal stripe of the visible canvas area (relative to the cursor position) is immediately updated, for the rest a manual "trigger" is required.
Actions which may trigger full canvas update: - moving the selection (edit) - hovering a visible GUI element (toolbar, dock) with the mouse pointer - switch focus to the controls bar (Alt+X) - scrolling / zooming (if rulers are visible) - updates in the status bar (if visible): Any key press which updates the message displayed in the status bar, any changes of the current mouse pointer position or of the zoom level (both are live-updated in the status bar).
Actions to trigger an update of sel cue / transformation handles: - hovering a transformation handle to highlight it - anything which updates the status bar (if visible) - hovering any visible part of the GUI outside canvas (works even with the minimized dock in 'Shift+F11' mode)
- Creating new packages with GTK+/Quartz and better OS integration
requires changes in 'src' which need to be reviewed, fixed, or written (some are missing at the moment). [2]
What items are still missing and how long would it take to implement them?
-- Missing:
File name & location ==================== When using the global menubar, there is no way to find out the location of the currently opened document in the file system: - Inkscape trunk no longer displays the full path in the window title bar (not even after saving - the full path is now displayed as status bar message, and disappears quickly as soon as the notification area is updated). - The items in the 'File > Open recent' only display the file name, and the tooltips with the full path info are not shown if using the global osx menu bar (works ok if the menubar is docked in the document window, with either of the two available GTK+ backends on OS X).
Proposed partial solution: most native OS X application display a proxy icon in the window title bar of document windows, just in front of the file name, which - when clicked with the modifier 'alt/opt' pressed - displays a dropdown menu with the full path as list of folders: it allows to quickly open a file manager (Finder) window at the location of the document or one of the parent folders.
Sample code (C) in Gedit to implement such a proxy icon: https://git.gnome.org/browse/gedit/tree/gedit/gedit-app-osx.c#n99 Related documentation: https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/WinPa...
I don't know a solution for displaying the full information for items in the 'File > Open recent' menu. For now, the information can be accessed via file chooser dialog (there the tooltips work ok for the items in the 'Recently Used' list).
Menu: layout ============ When using the global menu bar on OS X, the menu items for preferences and input devices need to be moved to the application menu (currently they are still in the 'Edit' menu, following the GNOME HIG).
Sample code in GIMP: https://git.gnome.org/browse/gimp/tree/app/gui/gui.c#n498
Should be easy to implement for someone with moderate C++ skills and familiar with Inkscape's methods to reference the menu itself and the individual menu items.
Menu: radio buttons in sub-menus ================================ Radio menu items in sub-menus are not updated on change, affects: View -> Display mode View -> Color Display mode
For the 'toolbar layout' choices ('View' menu, at the bottom), it works now by forcing an update of the global menu: http://bazaar.launchpad.net/~suv-lp/inkscape/osxmenu/view/head:/src/interface.cpp#L620 but I didn't figure out how to achieve the same for radio menu items in the sub-menus. Valerio Aimale's latest RC packages of 0.48.4 last year did solve this for the sub-menus too, but unfortunately the related code was never shared.
Menu: check buttons (trunk) =================== Check menu items don't sync with keyboard shortcuts (same verb): View > Page Grid View > Guides View > Color-managed View
Also happens when using Unity's global menubar: https://bugs.launchpad.net/inkscape/+bug/1136344
Wishlist ======== (nice to have, but not critical)
* context menu for the Dock icon * GUI option to change theme (gtk) and icons (inkscape)
-- Other known issues:
Clipboard (release critical) ========= For upstream GTK+/Quartz it was decided to preserve any clipboard content present at the time when the application quits, and the clipboard content is requested in all registered output formats from the application.
Many of Inkscape's output formats are script-based extensions. Not all of them are able to process the SVG file of the clipboard content without failure (either prompting an error message about missing layers, or failing to handle certain object types, or crashing because the document lacks expected attributes, e.g. document width and height). These error messages pop up after the user quit the application - depending on what was on the clipboard, there can be 5-10 of them, and each error message dialog has to be closed individually, otherwise the application does not quit.
https://bugs.launchpad.net/inkscape/+bug/1046068
Current osxmenu packages use workarounds in python modules and scripts for known issues with individual extensions (rather messy solution, doesn't work for externally maintained extensions).
Ideally I think this should be addressed internally, similar to how those error messages are suppressed if Inkscape is not used in GUI mode: https://bugs.launchpad.net/inkscape/+bug/1046068/comments/18
Window size ===========
The window position doesn't handle the vertical offset for the global menu bar correctly, which also results in not recording the 'Maximized' window state correctly. Annoying, but not critical: https://bugs.launchpad.net/inkscape/+bug/1302627
SVG Font editor =============== Not usable with GTK+/Quartz (crashes in stable and trunk): https://bugs.launchpad.net/inkscape/+bug/1116468
Based on what is mentioned in many inkscape-related tweets, blog posts and comments elsewhere, Inkscape's SVG font editor has gained a lot of popularity recently for creating custom (icon) fonts to be used in web design. It would be a pity to have the feature disabled for Mac users ...
Import Clipart ============== crash in stable: https://bugs.launchpad.net/inkscape/+bug/365567 fails in trunk: https://bugs.launchpad.net/inkscape/+bug/943148
Probably best to disable (hide from menu) for now.
It is unclear to me why the new GIO-based version of the import dialog in trunk fails on OS X - the same error can be reproduced with a sample application like "Gio Async Read Example" described here: http://www.micahcarrick.com/asynchronous-read-in-python-with-gio.html
Possibly related to missing packages (gvfs maybe), or some schemas (?) required by glib2, or indeed due to missing support for such async operations on OS X in Glib/GIO - I never was able to figure this out on my own.
I can review the code changes, but I have tons of stuff to do at the university, so I'm not sure how long it will take :/
Would it help if I post smaller diffs for changes in 'src' which are not restricted to GTK+/Quartz with #ifdef's (and thus might affect other platforms too); each with a brief summary?
(I know that the commit log the 'osxmenu' branch is rather messy, some changes occurred over several commits, or had later changes / reverts)
Regards, V