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.

This Week in GTK+ – 16

In this last week, the master branch of GTK+ has seen 32 commits, with 5125 lines added and 4393 lines removed.

Planning and status
  • Matthias released GTK+ 3.21.5, likely the last developers snapshot before the 3.22.0 release.
  • The GTK+ road map is available on the wiki.
Notable changes
  • GTK+ requires version 1.7 of the Wayland protocols definitions, in order to use v6 of the xdg_shell protocol.
  • GtkScrolledWindow can now optionally propagate the preferred natural size of its child to the parent.

Bugs fixed

  • 770550 gtkplacessidebar: fix signal marshal
  • 770458 GtkAboutDialog issue with long credit lists and GtkScrolledWindow
  • 770307 Crash when closing a glade project
  • 770624 [PATCHes] Fix typos.
  • 770745 wayland: Warn when an application tries to map popup incorrectly
  • 769498 Scrollbars are broken
  • 770703 Fix crash when using page-down on GtkListBox
  • 770614 GtkScale in HighContrast theme with value = 0: WARNING: allocates negative content width/height to node highlight
  • 770849 GtkLabel with padding brokenness
  • 766569 Better size requisition for GTK_SCROLL_NATURAL children
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+ – 15

In this last week, the master branch of GTK+ has seen 60 commits, with 10838 lines added and 6850 lines removed.

Planning and status
  • We’re close to the GTK+ 3.22 release, in time for GNOME 3.22.
  • Emmanuele has implemented a more comprehensive fallback path for mixed widget trees in his GSK branch.
  • Timm Bäder has taken the initial port of the build system to Meson done at GUADEC by Jussi Pakkanen and improved upon it.
  • The GTK+ road map is available on the wiki.
Notable changes
  • Carlos Garnacho merged his branch that implements graphic tablet support for the Wayland GDK backend; more details are available on his blog.
  • Jonas Ådahl ported GDK to the 6th version of the Wayland xdg_shell protocol, and he also fixed the behavior of transient-for windows created by sandbox portals on Wayland.

Bugs fixed

  • 770236 gtkbindings: Add an example for gtk_binding_entry_add_signal()
  • 770026 review comments for wip/wayland-tablet-v2
  • 770332 Notebook arrow icon wrong color after creating new tab
  • 769937 wayland: Port backend to use xdg-shell unstable v6
  • 764413 Wayland: not fullscreenable gtk+ apps can be fullscreened
  • 770374 Gtk Treeview Editable overshoots column width when column width is small
  • 770550 gtkplacessidebar: fix signal marshal
  • 770458 GtkAboutDialog issue with long credit lists and GtkScrolledWindow
  • 769788 Fix stacking order of flatpak portals on Wayland
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+ – 14

In these last two weeks, the master branch of GTK+ has seen 48 commits, with 4967 lines added and 3798 lines removed.

Planning and status
  • We skipped last week’s update due to most of the GTK+ developers being at GUADEC.
  • We had very productive discussions regarding the new release management and versioning scheme going forward; expect a full announcement on this blog.
  • GSK has been reviewed during GUADEC, and the work on the conversion of widgets to the new retained rendering API is ongoing; the API won’t be merged for 3.22, in order to improve rendering performance, shake out the last API issues found during porting, and especially avoid last minute breaking of applications using their own rendering on top of GTK+ windows, like Firefox and LibreOffice.
  • Carlos Garnacho has been porting the Wayland backend to the new tablet protocol; various changes have already landed in master, and the bulk of the review process is in bug 770026.
  • The work to support HiDPI displays in the Windows backend is progressing in bug 768081.
  • The GTK+ road map is available on the wiki.
Notable changes
  • Andreas Pokorny has been updating the Mir backend for GDK to improve the integration of GTK+ applications.
  • Timm Bäder added two new methods to GtkPopover, gtk_popover_popup() and gtk_popover_popdown(); these two new methods implement animated transitions, while calling gtk_widget_show() and gtk_widget_hide() will immediately show or hide the GtkPopover. With the addition of these two new methods, the GtkPopover:transitions-enabled property is now redundant and has been deprecated.

Bugs fixed

  • 769603 gtk+-3.20.8: underlink issue with ld.gold – build fails: ./.libs/libgdk-3.so: error: undefined reference to ‘shm_open’
  • 769601 Dead link in faq on gtk-question-index.html
  • 769568 Modification date display incorrectly wraps calendar days (and is inconsistent with GTK2 and Nautilus)
  • 768138 Update the GDK-Mir backend to fix a few problems
  • 769706 Add show/hide API to GtkPopover
  • 769402 regression in menu positioning on wayland
  • 768017 [Wayland] menus opened from access keys (mnemonic menu items) hide instantly
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+ – 13

In this last week, the master branch of GTK+ has seen 29 commits, with 4141 lines added and 3230 lines removed.

Planning and status
Notable changes
  • Ruslan Izhbulatov fixed two long standing issues with the keyboard layout and dead keys handling on Windows. GTK+ applications on Windows should now behave more in line with the rest of the platform, especially on US international keyboards. The changes have been applied to the master branch, but after further testing they should be backported to the 2.x stable branch.

Bugs fixed

  • 769287 GtkMenuToolButton:show-menu is emitted twice and breaks dynamic menus
  • 769485 Eliminate use of g_test_expect_message()
  • 712760 Clang static analysis fixes
  • 769451 Build failure of 3.21 (master) in Debian Unstable since 7-26-2016
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.