August - Gtk4 Migration (Tavmjong)

August got off to a slow start as I was in the US with family the first part of the month. But then things picked up:

StatusBar

I finished the work I began in July on refactoring the StatusBar (the bottom most row in the Inkscape interface). I converted the pop-menus for the Zoom and Rotate widgets to use Gio::Menus, which is necessary for Gtk4.

Events

We've moved to using our own event structure to handle events (mouse clicks, key strokes, etc.) within the Inkscape canvas (the part of the interface that shows the drawing). We were modifying the Gtk events that we received to help with manipulating object in the drawing. Gtk4 doesn't allow modifying events so instead we now create our own events. This required modifying the event handlers in each of our tools. I finished the work started by Matt Jakeman and PBS.

SelectedStyle

The SelectedStyle widget is the one in the lower left side of the Inkscape window that shows the current Fill and Stroke colors, the Opacity, and the Stroke width. I refactored this widget, removing several "EventBoxes" that are not supported by Gtk4 and whose functionality was not actually used (an EventBox allows one to wrap a normally non-interactive widget, like a label, to enable interactivity). In one case, the EventBox was being used. I moved the the middle-click pop-up menu to a different widget that does handle mouse events. It can be moved back if necessary in Gtk4 as with Gtk4 any widget can have interactivity added. (Did you know that middle mouse clicking on the "O:" label in Inkscape 1.3 will cycle through 0%, 50%, and 100% opacity? In the current development version, middle-clicking on the opacity value widget will do the same.) I also greatly simplified the code.

Items Worked On: