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.

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.