On 2015-08-29 13:39 (+0200), David Evans wrote:
On 8/28/15 2:59 PM, Krzysztof KosiĆski wrote:
> The long term solution would be to use the Quartz backend of GTK
> instead of the X11 backend on the Mac. However, the prerequisite is
> porting Inkscape to GTK3 and ironing out all the bugs that will cause.
Nonetheless, it appears, at this point, that this is something that really
needs to be done since the upstream gtkmm developer has indicated that he
considers gtkmm-2.24 an "ancient deprecated version" that he doesn't care
to
maintain further and has specifically put Inkscape on notice to port to
the current GTK3 version ASAP[1][2].
I note that the current experimental GTK3 code builds on Mac (using MacPorts
at least) using either the X11 or quartz backends and seems to function at
a basic level although I am not an expert Inkscape user by any means.
What is the official status of this GTK3 port and what will it take to bring it
up to snuff as the preferred build? Is there currently any concerted effort
in this regard and if so who is/are the lead developer(s) for this effort?
If someone wanted to help, where would he/she start?
Some of the known (blocking) issues wrt using the Quartz backend of Gtk+
with official Inkscape packages for OS X:
Inkscape's canvas (GTK2, GTK3)
==============================
All Inkscape builds (stable, trunk) using Gtk+'s Quartz backend suffer
from canvas redraw/refresh issues (try using a Quartz-based build with
all the GUI elements hidden - the keyboard shortcut to toggle this mode
on/off is 'Shift+F11'). GTK3-based builds expose quite bad flickering on
top of that.
Also listed among the known issues here:
http://wiki.inkscape.org/wiki/index.php/Notes_on_Packaging_for_OS_X#2014:...
https://code.launchpad.net/~suv-lp/inkscape/osxmenu
Screen recordings:
https://inkscape.org/en/gallery/6314/
Data exchange via native clipboard (GTK2, GTK3)
===============================================
Current state with Gtk+/Quartz is even worse than with Gtk+/X11 (which
is already limited to raster image formats, besides text). AFAIU mostly
an upstream issue first (possibly requires implementation of
backend-specific support in Inkscape too):
https://bugzilla.gnome.org/show_bug.cgi?id=692123
OS integration (GTK3)
=====================
In order to use GTK3's native support for OS integration (e.g. the
global menu bar on OS X), Inkscape's internal menu / application code
would need a major refactoring AFAIU. Using the external library
gtk-mac-integration is (at least for the moment) still possible (it does
support GTK3), but discouraged by its author (the library was written
for GTK2 which does not have such internal support at all). An example
of a GTK3 application which successfully uses GTK3's native support for
the global menubar on OS X is current stable Gedit.
A GTK3/Quartz-based (self-contained, relocatable) Inkscape application
bundle demo is available based on the osxmenu branch (DMG, requires OS X
10.7 or later). This demo app bundle uses gtk-mac-integration-gtk3 for
the global menu bar (due to Inkscape's lack of support for native GTK3
features).
Extended input devices (GTK3)
=============================
Current (stable) GTK3 Quartz backend lacks any support for
pressure-sensitive input devices. A related patch which had landed
earlier in GTK2 is limited (stability is only expected if used with
applications launched as regular osx application bundle; unclear whether
anything but Wacom is actually supported; IIRC from MyPaint-related
discussions, there seem to be differences e.g. to the X11-based feature
wrt the number (or quality) of received events/data (?)). A follow-up
patch for GTK3 is still in bugzilla (no recent activity):
https://bugzilla.gnome.org/show_bug.cgi?id=695701
GTK3 / GNOME
============
GTK3 (to a larger extent than GTK2) seems to increasingly rely on system
services commonly available on Linux DEs (e.g. dbus, gvfs) which -
AFAICT unlike the Win32 backend - do not have a native OS X port (in
glib, GIO, gvfs, etc.) yet, and which are a pain for packaging if one
aims for a self-contained relocatable application package which does not
require to use an installer (in order to install what is required to
auto-launch/manage launchd-supported services as required dependencies
outside of the application bundle).
... (not an exhaustive list).
Regards, V