diff --git a/0001-Revert-Meson-Simplify-pkgconfig-file-generator.patch b/0001-Revert-Meson-Simplify-pkgconfig-file-generator.patch new file mode 100644 index 0000000..a3de687 --- /dev/null +++ b/0001-Revert-Meson-Simplify-pkgconfig-file-generator.patch @@ -0,0 +1,120 @@ +From 5f5fd77f096174c45f8335afe6efd6745796d9a5 Mon Sep 17 00:00:00 2001 +From: Kalev Lember +Date: Mon, 25 Jul 2022 16:21:50 +0200 +Subject: [PATCH] Revert "Meson: Simplify pkgconfig file generator" + +Temporarily revert this until we figure out how to best restore +private requires that are needed for rpm automatic dep extraction. + +https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/4756 + +This reverts commit 802bf4199911c811938b0454a876089bafa97dba. +--- + meson.build | 47 +++++++++++++++++++++++++++++++++-------------- + 1 file changed, 33 insertions(+), 14 deletions(-) + +diff --git a/meson.build b/meson.build +index 1b8f2d0248..4fc808dbd4 100644 +--- a/meson.build ++++ b/meson.build +@@ -471,6 +471,9 @@ if not os_win32 + endif + endif + ++ ++pc_gdk_extra_libs = [] ++ + cairo_backends = [] + foreach backend: [ ['cairo-xlib', cairo_req, x11_enabled], + ['cairo-win32', cairo_req, win32_enabled], +@@ -601,14 +604,26 @@ if x11_enabled + cdata.set('HAVE_RANDR15', xrandr15_dep.found()) + endif + ++if broadway_enabled ++ pc_gdk_extra_libs += ['-lz'] ++endif ++ ++if macos_enabled ++ pc_gdk_extra_libs += ['-framework Cocoa', '-framework Carbon'] ++endif ++ + extra_demo_ldflags = [] + if win32_enabled ++ pc_gdk_extra_libs += ['-lgdi32', '-limm32', '-lshell32', '-lole32'] + if cc.get_id() == 'msvc' + # Since the demo programs are now built as pure GUI programs, we + # need to pass in /entry:mainCRTStartup so that they will properly + # link on Visual Studio builds + extra_demo_ldflags = ['/entry:mainCRTStartup'] ++ else ++ pc_gdk_extra_libs += ['-Wl,-luuid'] + endif ++ pc_gdk_extra_libs += ['-lwinmm', '-ldwmapi', '-lsetupapi', '-lcfgmgr32', '-lhid'] + + # Check whether libepoxy is built with EGL support on Windows + endif +@@ -826,7 +841,16 @@ gsk_private_packages = [] # all already in gdk_private_packages + pangoft2_pkgs = (wayland_enabled or x11_enabled) ? ['pangoft2'] : [] + gtk_private_packages = pangoft2_pkgs + +-pkgs = [] ++gdk_extra_libs = pc_gdk_extra_libs ++gsk_extra_libs = [] ++gtk_extra_libs = [] ++ ++gdk_extra_cflags = [] ++gsk_extra_cflags = [] ++gtk_extra_cflags = [] ++ ++pkgs = [ 'gtk4' ] ++ + pkg_targets = [] + display_backends = [] + foreach backend: [ 'broadway', 'macos', 'wayland', 'win32', 'x11', ] +@@ -843,23 +867,18 @@ common_pc_variables = [ + 'gtk_host=@0@-@1@'.format(host_machine.cpu_family(), host_machine.system()), # FIXME + ] + +-pkg_config.generate(libgtk, +- filebase: 'gtk4', +- unescaped_variables: common_pc_variables, +- name: 'GTK', +- description: 'GTK Graphical UI Library', +- requires: gdk_packages + gsk_packages + gtk_packages, +- subdirs: ['gtk-@0@'.format(gtk_api_version)], +-) +-meson.override_dependency('gtk4', libgtk_dep) +- + foreach pkg: pkgs + pkg_config.generate( + filebase: pkg, + unescaped_variables: common_pc_variables, + name: 'GTK', + description: 'GTK Graphical UI Library', +- requires: 'gtk4', ++ requires: gdk_packages + gsk_packages + gtk_packages, ++ requires_private: gdk_private_packages + gsk_private_packages + gtk_private_packages, ++ libraries: ['-L${libdir}', '-lgtk-4'], ++ libraries_private: gdk_extra_libs + gsk_extra_libs + gtk_extra_libs, ++ subdirs: ['gtk-@0@'.format(gtk_api_version)], ++ extra_cflags: gdk_extra_cflags + gsk_extra_cflags + gtk_extra_cflags, + ) + meson.override_dependency(pkg, libgtk_dep) + endforeach +@@ -870,10 +889,10 @@ if os_unix + unescaped_variables: common_pc_variables, + name: 'GTK', + description: 'GTK Unix print support', +- requires: 'gtk4', ++ requires: ['gtk4'] + gtk_packages, ++ libraries: [], + subdirs: ['gtk-@0@/unix-print'.format(gtk_api_version)], + ) +- meson.override_dependency('gtk4-unix-print', libgtk_dep) + endif + + subdir('po') +-- +2.37.1 + diff --git a/0001-focus-fall-back-to-old-behaviour-if-we-didn-t-focus-.patch b/0001-focus-fall-back-to-old-behaviour-if-we-didn-t-focus-.patch new file mode 100644 index 0000000..3738cc7 --- /dev/null +++ b/0001-focus-fall-back-to-old-behaviour-if-we-didn-t-focus-.patch @@ -0,0 +1,34 @@ +From e07f8ef50657dab0d5184d4c6927acc0683bc07d Mon Sep 17 00:00:00 2001 +From: Adam Williamson +Date: Tue, 1 Nov 2022 17:26:29 -0700 +Subject: [PATCH] focus: fall back to old behaviour if we didn't focus anything + +8455b9ac74 seems to have introduced a problem where we can wind +up focusing no widget at all if the `while (parent)` loop doesn't +find a widget it can successfully move the focus to. This 'fixes' +that by falling back to doing the previous thing if we make it +all the way through that loop without moving the focus. Thanks to +@coreyberla for a hint to improve the implementation. + +Signed-off-by: Adam Williamson +--- + gtk/gtkwindow.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c +index a7cbde18bc..21dfb49880 100644 +--- a/gtk/gtkwindow.c ++++ b/gtk/gtkwindow.c +@@ -4703,6 +4703,9 @@ maybe_unset_focus_and_default (GtkWindow *window) + parent = _gtk_widget_get_parent (parent); + } + ++ if (!parent) ++ gtk_widget_child_focus (GTK_WIDGET (window), GTK_DIR_TAB_FORWARD); ++ + priv->move_focus = FALSE; + g_clear_object (&priv->move_focus_widget); + } +-- +2.38.1 + diff --git a/gtk-4.7.0.tar.xz b/gtk-4.9.1.tar.xz similarity index 65% rename from gtk-4.7.0.tar.xz rename to gtk-4.9.1.tar.xz index 2b77f53..621f5e9 100644 Binary files a/gtk-4.7.0.tar.xz and b/gtk-4.9.1.tar.xz differ diff --git a/gtk4.spec b/gtk4.spec index 3c690f0..026d757 100644 --- a/gtk4.spec +++ b/gtk4.spec @@ -1,21 +1,31 @@ -%global glib2_version 2.66.0 +%global glib2_version 2.72.0 %global pango_version 1.50.0 %global cairo_version 1.14.0 %global gdk_pixbuf_version 2.30.0 -%global wayland_protocols_version 1.23 -%global wayland_version 1.20.0 +%global wayland_protocols_version 1.25 +%global wayland_version 1.21.0 %global epoxy_version 1.4 %global bin_version 4.0.0 %global __provides_exclude_from ^%{_libdir}/gtk-4.0 Name: gtk4 -Version: 4.7.0 -Release: 3 +Version: 4.9.1 +Release: 1 Summary: GTK graphical user interface library License: LGPLv2+ URL: https://www.gtk.org -Source0: https://download.gnome.org/sources/gtk/4.7/gtk-%{version}.tar.xz +Source0: https://download.gnome.org/sources/gtk/4.9/gtk-%{version}.tar.xz +Source1: settings.ini +# Temporarily revert this until we figure out how to best restore +# private requires that are needed for rpm automatic dep extraction. +# https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/4756 +Patch0: 0001-Revert-Meson-Simplify-pkgconfig-file-generator.patch +# https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/5189 +# https://gitlab.gnome.org/GNOME/nautilus/-/issues/2574 +# Fix a problem which could lead to no element being focused +# (so keyboard shortcuts don't work) in some cases +Patch1: 0001-focus-fall-back-to-old-behaviour-if-we-didn-t-focus-.patch BuildRequires: cups-devel desktop-file-utils docbook-style-xsl gcc BuildRequires: sassc libxslt gcc-c++ gettext meson @@ -36,7 +46,7 @@ BuildRequires: pkgconfig(libjpeg) BuildRequires: pkgconfig(libpng) BuildRequires: pkgconfig(libtiff-4) BuildRequires: pkgconfig(pango) >= %{pango_version} -BuildRequires: pkgconfig(rest-0.7) +BuildRequires: pkgconfig(rest-1.0) BuildRequires: pkgconfig(sysprof-4) BuildRequires: pkgconfig(sysprof-capture-4) BuildRequires: pkgconfig(tracker-sparql-3.0) @@ -56,12 +66,14 @@ BuildRequires: pkgconfig(xrender) Requires: adwaita-icon-theme Requires: hicolor-icon-theme +Requires: gtk-update-icon-cache Requires: cairo%{?_isa} >= %{cairo_version} Requires: cairo-gobject%{?_isa} >= %{cairo_version} Requires: glib2%{?_isa} >= %{glib2_version} Requires: libepoxy%{?_isa} >= %{epoxy_version} -Requires: wayland%{?_isa} >= %{wayland_version} +Requires: libwayland-client%{?_isa} >= %{wayland_version} +Requires: libwayland-cursor%{?_isa} >= %{wayland_version} Requires: pango%{?_isa} >= %{pango_version} Requires: gdk-pixbuf2-modules%{?_isa} Recommends: dconf%{?_isa} @@ -88,16 +100,13 @@ for writing applications with version 4 of the GTK widget toolkit. %build export CFLAGS='-fno-strict-aliasing -DG_DISABLE_CAST_CHECKS -DG_DISABLE_ASSERT %optflags' %meson \ - -Dx11-backend=true \ - -Dwayland-backend=true \ -Dbroadway-backend=true \ -Dsysprof=enabled \ -Dtracker=enabled \ -Dcolord=enabled \ - -Dgtk_doc=false \ + -Dgtk_doc=true \ -Dman-pages=true \ - -Dinstall-tests=false \ - -Dmedia-ffmpeg=disabled + -Dinstall-tests=false %meson_build @@ -105,11 +114,10 @@ export CFLAGS='-fno-strict-aliasing -DG_DISABLE_CAST_CHECKS -DG_DISABLE_ASSERT % %meson_install %find_lang gtk40 -%find_lang gtk40-properties mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/gtk-4.0 mkdir -p $RPM_BUILD_ROOT%{_libdir}/gtk-4.0/modules -mkdir -p $RPM_BUILD_ROOT%{_libdir}/gtk-4.0/%{bin_version}/theming-engines +install -p %{SOURCE1} $RPM_BUILD_ROOT%{_datadir}/gtk-4.0/ %check desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop @@ -136,17 +144,17 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop %{_datadir}/glib-2.0/schemas/org.gtk.gtk4.Settings.FileChooser.gschema.xml %dir %{_datadir}/gtk-4.0 %{_datadir}/gtk-4.0/emoji/ +%{_datadir}/gtk-4.0/settings.ini %{_bindir}/gtk4-broadwayd %{_mandir}/man1/gtk4-broadwayd.1* -%files devel -f gtk40-properties.lang +%files devel %{_libdir}/libgtk-4.so %{_includedir}/* %{_libdir}/pkgconfig/* %{_bindir}/gtk4-builder-tool %{_bindir}/gtk4-encode-symbolic-svg %{_bindir}/gtk4-query-settings -%{_bindir}/gtk4-node-editor %{_datadir}/gettext/ %{_datadir}/gir-1.0 %{_datadir}/gtk-4.0/gtk4builder.rng @@ -154,37 +162,39 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop %{_mandir}/man1/gtk4-builder-tool.1* %{_mandir}/man1/gtk4-encode-symbolic-svg.1* %{_mandir}/man1/gtk4-query-settings.1* -%{_datadir}/doc/gtk4/ +%{_datadir}/doc/ %{_bindir}/gtk4-demo %{_bindir}/gtk4-demo-application %{_bindir}/gtk4-icon-browser +%{_bindir}/gtk4-node-editor %{_bindir}/gtk4-print-editor %{_bindir}/gtk4-widget-factory +%{_datadir}/applications/org.gtk.gtk4.NodeEditor.desktop %{_datadir}/applications/org.gtk.Demo4.desktop %{_datadir}/applications/org.gtk.IconBrowser4.desktop %{_datadir}/applications/org.gtk.PrintEditor4.desktop %{_datadir}/applications/org.gtk.WidgetFactory4.desktop -%{_datadir}/applications/org.gtk.gtk4.NodeEditor.desktop +%{_datadir}/icons/hicolor/*/apps/org.gtk.gtk4.NodeEditor*.svg %{_datadir}/icons/hicolor/*/apps/org.gtk.Demo4*.svg %{_datadir}/icons/hicolor/*/apps/org.gtk.IconBrowser4*.svg %{_datadir}/icons/hicolor/*/apps/org.gtk.PrintEditor4*.svg %{_datadir}/icons/hicolor/*/apps/org.gtk.WidgetFactory4*.svg -%{_datadir}/icons/hicolor/*/apps/org.gtk.gtk4.NodeEditor.Devel.svg -%{_datadir}/icons/hicolor/*/apps/org.gtk.gtk4.NodeEditor.svg -%{_datadir}/icons/hicolor/*/apps/org.gtk.gtk4.NodeEditor-symbolic.svg %{_datadir}/glib-2.0/schemas/org.gtk.Demo4.gschema.xml +%{_datadir}/metainfo/org.gtk.gtk4.NodeEditor.appdata.xml %{_datadir}/metainfo/org.gtk.Demo4.appdata.xml %{_datadir}/metainfo/org.gtk.IconBrowser4.appdata.xml %{_datadir}/metainfo/org.gtk.PrintEditor4.appdata.xml %{_datadir}/metainfo/org.gtk.WidgetFactory4.appdata.xml -%{_datadir}/metainfo/org.gtk.gtk4.NodeEditor.appdata.xml %{_mandir}/man1/gtk4-demo.1* -%{_mandir}/man1/gtk4-node-editor.1* %{_mandir}/man1/gtk4-demo-application.1* %{_mandir}/man1/gtk4-icon-browser.1* +%{_mandir}/man1/gtk4-node-editor.1* %{_mandir}/man1/gtk4-widget-factory.1* %changelog +* Mon Jan 02 2023 lin zhang - 4.9.1-1 +- update to 4.9.1 + * Thu Jan 19 2023 yaoxin - 4.7.0-3 - Fix error pkgconfig(rest-1.0) due to rest revert to 0.8.1 diff --git a/settings.ini b/settings.ini new file mode 100644 index 0000000..462e32c --- /dev/null +++ b/settings.ini @@ -0,0 +1,2 @@ +[Settings] +gtk-hint-font-metrics=1