This week in GTK+ – 25

In this last week, the master branch of GTK+ has seen 167 commits, with 8048 lines added and 6858 lines removed.

Planning and status
Notable changes

On the master branch:

  • The default value of the GtkFileChooser:local-only property is now FALSE, which means that file selections dialogs will automatically show non-local resources.
  • Benjamin Otte introduced the GtkSnapshot API, which works as a GskRenderNode builder for widgets, and aims to replace the immediate mode gtk_render_* family of functions.
  • Benjamin also changed the GtkDrawingArea API, which now works using an explicit callback function, instead of a the generic GtkWidget::draw signal.
  • Finally, Benjamin has implemented support for 3D CSS transformations in GTK+.
  • The GDK API to read back the contents of a GdkWindow into a GdkPixbuf have been removed, as their behavior and result are platform-dependent.
  • Matthias Clasen updated the GTK+ 3.x → 4.x porting guide, and the API reference, with the newest API additions.
  • Simon Steinbeiss updated the CSS styling for GtkProgressbar to add the empty and full classes when the progress is set to 0.0 or 1.0, respectively.
Bugs fixed
  • 774475 wayland: gtk+ prevents using subsurfaces if the parent is not root
  • 774476 surfaces with no outputs get scale factor reset
  • 774634 GtkPlacesView does not unref all GDaemonFileEnumerator it references
  • 773007 GtkFilechooser gives completion for non-matching extensions
  • 774609 small fix to foreign drawing spinbutton demo
  • 773587 [PATCH] recent-manager: Add a limit to the list’s size
  • 774352 GtkAppChooserWidget does not unref all GAppInfo it references
  • 774347 Fails to build: unknown type name GdkColor
  • 773601 Display size detected as 0x0 pixels when RANDR is not available
  • 774614 Wrong #include in Print docs
Getting involved

Interested in working on GTK+? Look at the list of bugs for newcomers and join the IRC channel #gtk+ on irc.gnome.org.

This week in GTK+ – 24

In this last week, the master branch of GTK+ has seen 46 commits, with 1541 lines added and 3471 lines removed.

Planning and status
  • Emmanuele Bassi outlined a list of items to work on GSK on the wiki
  • The GTK+ road map is available on the wiki.
Notable changes

On the master branch:

  • Matthias Clasen worked on removing the custom -gtk-gradient CSS function and ensured that the standard radial-gradient and linear-gradient functions worked as defined by the CSS specifications
  • Lapo Calamandrei ported Adwaita and other themes shipped by GTK+ to the standard CSS gradient definitions
  • Benjamin Otte introduced a GskTexture API inside GSK to cache icon assets from GTK+ and avoid multiple texture uploads
  • Timm Bäder removed the custom style properties used by GtkTreeView and GtkToolItemGroup, and replaced them with standard CSS properties
  • Timm also removed the appears-as-list custom style property from GtkComboBox

On the 3.22 stable branch:

  • Matthias Clasen released GTK+ 3.22.3
  • Chun-wei Fan merged the HiDPI display support for Windows
Bugs fixed
  • 774097 GtkPrintOperation should not truncate job names
  • 772075 GTK+ uses a lot more CPU under Wayland than under X11
  • 773916 GtkComposeTable caches broken: using a same ~/.XCompose does not work twice in a row
  • 773979 GdkGLContext does not chain finalize handler
  • 774046 GtkSpinButton does not always unref priv->{up,down}_button
  • 774066 GtkHeaderBar does not unref all GtkBox and GtkSeparator it creates
  • 774185 GtkPlacesSidebar does not unref itself as many times as it references
Getting involved

Interested in working on GTK+? Look at the list of bugs for newcomers and join the IRC channel #gtk+ on irc.gnome.org.

This week in GTK+ – 23

In this last week, the master branch of GTK+ has seen 146 commits, with 10020 lines added and 16435 lines removed.

Planning and status
  • Benjamin Otte worked on clarifying the relationship between various coordinate systems used in GTK+ and in gsk.
  • Benjamin is also making changes throughout the tree in preparation for making all widgets window-less.
  • Emmanule Bassi is working on finer-grained gsk render nodes for CSS rendering.
  • The GTK+ road map is available on the wiki.
Notable changes
  • Benjamin Otte added a frame recorder to the GTK+ inspector. See this post for more information.
  • Timm Bäder and Benjamin converted more widgets to use indirect rendering with gsk render nodes.
  • Matthias Clasen made the GtkTextAttributes structure private, thereby enabling further cleanups and the removal of the deprecated GdkColor type.
  • Benjamin removed visuals.
Bugs fixed
  • 773885 pop down GtkPopover on pressing escape
  • 773299Ensure GTK+-4.x builds and works on Windows
  • 773274[Wayland] Crash under gdk_wayland_window_attach_image()
  • 768081Enable HiDPI support for GDK-Win32
  • 773857 – X11: Add support for gdk_window_fullscreen_on_monitor
  • 773799GtkLevelBar doesn’t update blocks on discrete mode
  • 773954gtkstylecontext: Clarify memory allocation behaviour of getters
  • 773903gtk.h and gtktextiter.h include private gtktextattributes.h
Getting involved

Interested in working on GTK+? Look at the list of bugs for newcomers and join the IRC channel #gtk+ on irc.gnome.org.

This Week in GTK+ – 22

In this last week, the master branch of GTK+ has seen 132 commits, with 10020 lines added and 16435 lines removed.

Planning and status
Notable changes

On the master branch:

  • Alex Larsson removed the “offscreen” GdkWindow support in GDK, and the GtkOffscreenWindow widget in GTK+, in order to simplify the internals of GDK. Replacing offscreen windows is going to be the job of GSK from now on
  • Alex also changed the way GTK+ is built: from now on, there won’t be a separate GDK and GSK shared libraries; instead, GTK+ will provide a single shared library that includes GDK and GSK symbols. This allows GTK to use internal symbols without having to expose them via private function pointer tables, and reduces the intra PLT jumps to call GDK API
  • Chun-wei Fan improved the OpenGL support in the Windows backend of GDK; GDK will use more accurate GL configuration options, and will fall back to legacy GL contexts if core profiles contexts are not available, just like the X11 and Wayland backends
  • Fan also updated the Visual Studio projects files in order to build GSK; MSVC 2013 is now the minimum required version to compile the next stable version of GTK+
  • Benjamin Otte reworked the way invalidations are queued in GTK, and removed gdk_window_invalidate(); this allowed the inspector to show the updates caused by GTK widget invalidations during rendering
  • Benjamin also removed the API to query visuals from GDK, and the API to check if the windowing system is using RGBA visuals and compositing has been moved to GdkDisplay from GtkWidget
Bugs fixed
  • 773479 Typo in GtkShortcutType developer docs
  • 773100 Merge libgdk.so into libgtk.so
  • 773528 Improve GL support on Windows
Getting involved

Interested in working on GTK+? Look at the list of bugs for newcomers and join the IRC channel #gtk+ on irc.gnome.org.

This Week in GTK+ – 21

In this last week, the master branch of GTK+ has seen 335 commits, with 13631 lines added and 37699 lines removed.

Planning and status
  • Emmanuele merged his wip/ebassi/gsk-renderer branch into the master branch, effectively adding GSK to the API; there is an ongoing effort in improving its performance profile, as well as porting more widgets to the GskRenderNode API
  • Benjamin added new GdkWindow constructors for input and child windows, which will eventually replace the generic gdk_window_new() API
  • Timm removed more deprecated API from GTK+
  • Timm also replaced all the get_preferred_* family of virtual functions with a single GtkWidgetClass.measure virtual function, thus simplifying the implementation of widgets
  • Matthias started a new migration guide for application developers that wish to port their code from GTK+ 3.x to GTK+ 4.x
  • Chun-wei Fan updated the Windows backend of GDK following the deprecations and API changes
  • The GTK+ road map is available on the wiki.
Notable changes
  • GDK now tries to do a better job at detecting if a GL context is using OpenGL ES, a core OpenGL profile, or a legacy OpenGL profile.
  • New deprecations in the gtk-3-22 branch for API that has been removed from the master branch:
    • gdk_window_set_debug_updates() — will be replaced by appropriate rendering in GSK
    • GtkContainer:child — no replacement, as it’s just a C convenience property for use in variadic arguments functions
    • gdk_window_set_background* family of functions — no replacement
    • gdk_window_set_wmclass() — no replacement, as it was already marked as “do not use”
    • gdk_drag_dest_set_proxy() — no replacement
    • various GdkScreen API — replaced by GdkMonitor
  • Jaime Velasco Juan vastly improved the “native” Windows theme in the gtk-3-22 branch, to better match the Windows 7 visuals
  • Lapo Calamandrei has fixed the appearance of circular buttons in Adwaita
Bugs fixed
  • 772922 GtkMenu: Try using gdk_window_move_to_rect() more often
  • 773029 [gucharmap] style-set signal problem
  • 773246 Typo in css color definitions documentation
  • 773180 Don’t second-guess whether our GDK GL context is GLES
  • 773113 tests: fix clipboard test by loading correct icon
  • 771694 GtkSourceView completion popup window not shown, no grabbed seat found
  • 771205 Buttons with circular style class have a suddenly clipped shadow at the bottom
Getting involved

Interested in working on GTK+? Look at the list of bugs for newcomers and join the IRC channel #gtk+ on irc.gnome.org.

This Week in GTK+ – 20

In this last week, the master branch of GTK+ has seen 191 commits, with 4159 lines added and 64248 lines removed.

Planning and status
  • Benjamin merged his wip/otte/gtk4 branch, which removed various deprecated GDK and GTK+ API, into master
  • Timm merged parts of his wip/baedert/box branch, which removed the deprecated themeing engine API and other old style API, into master
  • The GTK+ road map is available on the wiki.
Notable changes
  • Emmanuele added various compiler flags to the default build in master, in order to catch issues earlier — and, hopefully, before pushing to the remote repository — during development
  • Matthias added new compiler requirements for GTK+; if you wish to build GTK+, your compiler must support at least a known subset of C99
Bugs fixed
  • 772683 Usage of FALSE instead of gint in glarea demo
  • 772926 shortcutswindow: working version of set_section_name()
  • 772775 menu bindings needs attribute to force LTR for horizontal-buttons display-hint
  • 771320 [Wayland] Maps widget is displayed at wrong position inside gnome-contacts
  • 767713 Fullscreen in wayland is buggy
Getting involved

Interested in working on GTK+? Look at the list of bugs for newcomers and join the IRC channel #gtk+ on irc.gnome.org.

This Week in GTK+ – 19

In this last week, the master branch of GTK+ has seen 24 commits, with 3731 lines added and 3351 lines removed.

Planning and status
  • Matthias released GTK+ 3.22.1, and created the gtk-3-22 branch for stable releases
  • The window on the master branch is now open for the 4.0 development
  • Benjamin Otte has started working on the removal of the 3.x deprecated API in his wip/otte/gtk4 branch
  • Timm Bäder is removing the deprecated style API in his wip/baedert/box branch
  • The GTK+ road map is available on the wiki.
Notable changes
  • Matthias is working on the build system to ensure that the master branch is parallel installable with the gtk-3-22 and gtk-2-24 stable branches
  • The old and deprecated AM_PATH_GTK_3_0 m4 macro for autotools-based build systems has been removed from the master branch; projects depending on GTK+ 3.x should already have been ported to just use pkg-config and the PKG_CHECK_MODULES macro instead.
Bugs fixed
  • 772695 Show the keyboard shortcuts from left to right even in RTL
  • 772345 placesviewrow: busy_spinner when visible offsets the rest of the widgets on the row
  • 772415 Avoid calling eglGetDisplay
  • 772389 Appending a character to a GtkEntry control in overwrite mode rings the bell
Getting involved

Interested in working on GTK+? Look at the list of bugs for newcomers and join the IRC channel #gtk+ on irc.gnome.org.

Who wrote GTK+ 3.22

Now that GTK+ 3.22.0 and GLib 2.50.0 have been released, it’s time to look back at this development cycle and see the contributions from people and companies that made these releases possible.

Activity

During the 3.22 development cycle, GLib saw a total of 14119 lines added, 2031 removed, for a net gain of 12088 lines:

glib-changes-3-22GTK+, instead, saw a total of 46581 lines added, 19163 removed, for a net gain of 27418 lines:

gtk-changes-3-22

The statistics do not include translations.

Contributors
GLib

GLib saw contributions from 60 individuals:

glib-contributors-3-22

The trend for contributors in GLib in increasing, even if the size of changes has decreasing.

Developers with the most changesets
Matthias Clasen 60 24.7%
Philip Withnall 44 18.1%
Chun-wei Fan 18 7.4%
Mario Sanchez Prada 10 4.1%
Allison Lortie 7 2.9%
Ruslan Izhbulatov 7 2.9%
Emmanuele Bassi 6 2.5%
Krzesimir Nowak 6 2.5%
Jonh Wendell 5 2.1%
Cosimo Cecchi 5 2.1%
Simon McVittie 4 1.6%
Ondrej Holy 4 1.6%
Christoph Reiter 4 1.6%
Rico Tzschichholz 3 1.2%
Dan Winship 3 1.2%
Aurélien Zanelli 3 1.2%
Kjell Ahlstedt 2 0.8%
Piotr Drąg 2 0.8%
Colin Walters 2 0.8%
Emilio Pozuelo Monfort 2 0.8%
Developers with the most changed lines
Matthias Clasen 7797 53.6%
Philip Withnall 2736 18.8%
Cosimo Cecchi 767 5.3%
Chun-wei Fan 674 4.6%
Mario Sanchez Prada 418 2.9%
Allison Lortie 365 2.5%
Christoph Reiter 319 2.2%
Krzesimir Nowak 220 1.5%
Jonh Wendell 178 1.2%
Ruslan Izhbulatov 163 1.1%
Marc-Antoine Perennou 142 1.0%
Emmanuele Bassi 104 0.7%
Tim-Philipp Müller 81 0.6%
Benjamin Otte 79 0.5%
Ondrej Holy 48 0.3%
Giovanni Campagna 43 0.3%
Jeremy Whiting 34 0.2%
Debarshi Ray 33 0.2%
Stephan Bergmann 32 0.2%
Christian Persch 30 0.2%

Matthias Clasen and Philip Withnall have been the biggest contributors, this cycle. Matthias worked on the portals implementation for allowing sandboxed applications to access system services; Philip worked on the new structured logging API.

GTK+

GTK+ saw contributions from 75 developers:

gtk-contributors-3-22

The number of contributors is trending downwards, and given that the amount of changes has also reduced, it’s likely a reflection on the overall stabilization process towards the 3.22 long term release.

Developers with the most changesets
Matthias Clasen 369 37.3%
Lapo Calamandrei 73 7.4%
Carlos Garnacho 69 7.0%
Timm Bäder 67 6.8%
Emmanuele Bassi 60 6.1%
Ruslan Izhbulatov 30 3.0%
Jonas Ådahl 28 2.8%
Benjamin Otte 25 2.5%
Olivier Fourdan 21 2.1%
Matt Watson 21 2.1%
Sébastien Wilmet 18 1.8%
Chun-wei Fan 13 1.3%
Andreas Pokorny 12 1.2%
Georges Basile Stavracas Neto 12 1.2%
Christian Hergert 12 1.2%
Piotr Drąg 11 1.1%
Tristan Van Berkom 11 1.1%
Ray Strode 10 1.0%
Stephen Chandler Paul 9 0.9%
William Hua 8 0.8%
Developers with the most changed lines
Matthias Clasen 14378 28.2%
William Hua 6212 12.2%
Ruslan Izhbulatov 5222 10.2%
Lapo Calamandrei 4383 8.6%
Carlos Garnacho 3510 6.9%
Emmanuele Bassi 1947 3.8%
Matt Watson 1811 3.6%
Georges Basile Stavracas Neto 1805 3.5%
Jonas Ådahl 1647 3.2%
Chun-wei Fan 1195 2.3%
Stephen Chandler Paul 1099 2.2%
Timm Bäder 1018 2.0%
Sébastien Wilmet 865 1.7%
Benjamin Otte 793 1.6%
Javier Jardón 655 1.3%
Alexander Larsson 486 1.0%
Andreas Pokorny 358 0.7%
Tristan Van Berkom 333 0.7%
Jakub Steiner 317 0.6%
Mohammed Sadiq 298 0.6%

Just like he did in GLib, Matthias worked on implementing support for portals inside GTK+, especially the ones that require user interaction like file selection and printing; Carlos Garnacho worked on the graphic tablets support in Wayland; Jonas Ådahl and Olivier Fourdan worked on the windowing system issues of the Wayland backend; William Hua worked on improving the Mir backend; Ruslan Izhbulatov and Chun-wei Fan worked on the Windows backend, especially with regards to keyboard input; Emmanuele worked on adding GLES support to the GdkGLContext API; Timm Bäder worked on GtkPopover; Matt Watson worked on GtkStack and the internal animation handling.

Affiliations

As usual, much of these changes would not have been possible without the contribution of various companies.

For GLib:

Top changeset contributors by employer
Red Hat 84 34.6%
(Unknown) 78 32.1%
Collabora 43 17.7%
Endless 22 9.1%
Canonical 12 4.9%
Centricular 2 0.8%
Intel 2 0.8%
Employers with the most hackers
(Unknown) 33 52.4%
Red Hat 14 22.2%
Collabora 4 6.3%
Endless 4 6.3%
Canonical 4 6.3%
Centricular 2 3.2%
Intel 2 3.2%

For GTK+:

Top changeset contributors by employer
Red Hat 548 55.4%
(Unknown) 333 33.7%
Endless 97 9.8%
Collabora 6 0.6%
Canonical 4 0.4%
Centricular 1 0.1%
Employers with the most hackers
(Unknown) 49 63.6%
Red Hat 16 20.8%
Endless 6 7.8%
Collabora 3 3.9%
Canonical 2 2.6%
Centricular 1 1.3%

This Week in GTK+ – 18

In this last week, the master branch of GTK+ has seen 33 commits, with 9362 lines added and 8025 lines removed.

Planning and status
  • Matthias released GTK+ 3.21.6, the last snapshot before the 3.22.0 release of September 21st.
  • The GTK+ road map is available on the wiki.
Notable changes
  • This week we had mostly translations for property descriptions and user-visibile messages, in preparation for the 3.22 release.
  • Ruslan fixed the GdkEventKey.is_modifier() structure field on Windows to report Ctrl, Alt, and Shift keys as modifiers.
  • Jonas Ådahl landed last minute fixes for combo boxes and other popups under Wayland.

Bugs fixed

  • 771117 gtk3 3.21.5 broke displaying drop-down lists, need to scroll to see contents
  • 771349 gdk_screen_get_monitor_scale_factor on X11 always returns 1 with GTK 3.21+
  • 771463 variable may be used uninitialized in gtk_widget_render
  • 602773 GdkEventKey.is_modifier is 0 for Shift, Ctrl, Alt keys
Getting involved

Interested in working on GTK+? Look at the list of bugs for newcomers and join the IRC channel #gtk+ on irc.gnome.org.

This Week in GTK+ – 17

In this last week, the master branch of GTK+ has seen 41 commits, with 19871 lines added and 16800 lines removed.

Planning and status
Notable changes
  • Matthias added a --version command line switch to small binaries shipped with GTK+, like gtk-launch and gtk3-demo; this allows checking the version of GTK+ on the system without resorting to distribution packages or development files.
  • The X11 backend of GDK now properly detects XRandR 1.5 support in VirtualBox.

Bugs fixed

  • 767391 cross-fade() not cross-fading
  • 771033 GtkStatusIcon cannot show activate menu in VirtualBox since 3.21.2
  • 764979 Connect to server is unusable after cancelling a password dialog
  • 770278 modernize example applications
  • 770508 [REGRESSION][BISECTED] Recent change in GtkTreeView::grab_focus_and_unset_draw_keyfocus() breaks shortcut assignment
  • 770906 Wayland: Unmapping a toplevel from a menu/popup can lead to a protocol error
Getting involved

Interested in working on GTK+? Look at the list of bugs for newcomers and join the IRC channel #gtk+ on irc.gnome.org.