This week in GTK+ – 26

In this last week, the master branch of GTK+ has seen 40 commits, with 1551 lines added and 1998 lines removed.

Planning and status
  • Matthias Clasen released the first GTK+ 3.89 development snapshot
  • The GTK+ road map is available on the wiki.
Notable changes

On the master branch:

  • Andrew Chadwick landed a series of fixes for graphic tablets support on Windows
  • Benjamin Otte removed the gtk_cairo_should_draw_window() utility function; the function was introduced for compatibility in the 3.x API, but now it’s not necessary any more
  • Benjamin also removed gdk_window_process_updates() and gdk_window_process_all_updates(); GDK has long since been switched to a frame clock; additionally, only top level GdkWindow can be used as a rendering surface
  • Lapo Calamandrei updated the High Contrast and Adwaita theme with the recent round of CSS improvements for progress bars and gradients
Bugs fixed
  • 774114 Window shadows are repainted even if only the contents of the window change
  • 774695 GtkProgressbar needs full and empty classes
  • 774265 No tilt for wintab devices
  • 774699 [wintab, potential segfault]: list iteration regression causes odd-indexed devices to be ignored during lookup & e.g. present no pressure
  • 775038 Build: Add wayland to GSKs dependencies
  • 774917 [wayland] child subsurfaces need to be placed relative to their parent
  • 774893 Application font sizes scaling gets clamped to 1.00 when starting GtkInspector
  • 774939 GtkLabelAccessible: Initialize link before setting parent
  • 774760 inspector: ensure controller is a GtkGesture
  • 774686 GtkMenu does not unref all GtkCheckMenuItem it creates
  • 774743 GtkNotebook does not unref all GtkBuiltinIcon it creates
  • 774790 GtkTextHandle does not unref all GtkAdjustment 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+ – 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+ – 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.