From 63d23b21c516f72c0385c51ad85e6779d339c719 Mon Sep 17 00:00:00 2001 From: Jeremy Newton Date: Fri, 1 Jan 2016 11:37:32 -0500 Subject: [PATCH] Various bugfixes, see spec changelog --- wx-config | 4 +- wxGTK3-3.0.2-wayland.patch | 108 +++++++++++++++++++++++++++++++++++++ wxGTK3.spec | 54 ++++++++++++------- 3 files changed, 145 insertions(+), 21 deletions(-) create mode 100644 wxGTK3-3.0.2-wayland.patch diff --git a/wx-config b/wx-config index a738177..84e1d2d 100644 --- a/wx-config +++ b/wx-config @@ -19,10 +19,10 @@ if [ -z $arch ]; then fi case $arch in - i?86|ppc|s390|sparc|arm*|ia64) + i?86|ppc|s390|sparc|arm*|ia64|mips|mipsel) libdir=/usr/lib ;; - x86_64|ppc64|s390x|sparc64|aarch64|ppc64le) + x86_64|ppc64|s390x|sparc64|aarch64|ppc64le|mips64*) libdir=/usr/lib64 ;; *) diff --git a/wxGTK3-3.0.2-wayland.patch b/wxGTK3-3.0.2-wayland.patch new file mode 100644 index 0000000..b17bac0 --- /dev/null +++ b/wxGTK3-3.0.2-wayland.patch @@ -0,0 +1,108 @@ +diff -rupN wxWidgets-3.0.2/src/gtk/toplevel.cpp wxWidgets-3.0.2-wayland/src/gtk/toplevel.cpp +--- wxWidgets-3.0.2/src/gtk/toplevel.cpp 2014-10-06 17:33:44.000000000 -0400 ++++ wxWidgets-3.0.2-wayland/src/gtk/toplevel.cpp 2015-12-31 14:48:25.873812357 -0500 +@@ -456,8 +456,12 @@ gtk_frame_window_state_callback( GtkWidg + bool wxGetFrameExtents(GdkWindow* window, int* left, int* right, int* top, int* bottom) + { + #ifdef GDK_WINDOWING_X11 +- static GdkAtom property = gdk_atom_intern("_NET_FRAME_EXTENTS", false); + GdkDisplay* display = gdk_window_get_display(window); ++ ++ if (!GDK_IS_X11_DISPLAY(display)) ++ return false; ++ ++ static GdkAtom property = gdk_atom_intern("_NET_FRAME_EXTENTS", false); + Atom xproperty = gdk_x11_atom_to_xatom_for_display(display, property); + Atom type; + int format; +@@ -852,10 +856,19 @@ bool wxTopLevelWindowGTK::ShowFullScreen + + m_fsIsShowing = show; + ++ wxX11FullScreenMethod method = wxX11_FS_WMSPEC; ++ Display* xdpy = NULL; ++ Window xroot = None; ++ + #ifdef GDK_WINDOWING_X11 +- Display* xdpy = GDK_DISPLAY_XDISPLAY(gtk_widget_get_display(m_widget)); +- Window xroot = GDK_WINDOW_XID(gtk_widget_get_root_window(m_widget)); +- wxX11FullScreenMethod method = wxGetFullScreenMethodX11(xdpy, (WXWindow)xroot); ++ GdkDisplay *display = gtk_widget_get_display(m_widget); ++ ++ if (GDK_IS_X11_DISPLAY(display)) ++ { ++ xdpy = GDK_DISPLAY_XDISPLAY(gtk_widget_get_display(m_widget)); ++ xroot = GDK_WINDOW_XID(gtk_widget_get_root_window(m_widget)); ++ method = wxGetFullScreenMethodX11(xdpy, (WXWindow)xroot); ++ } + + // NB: gtk_window_fullscreen() uses freedesktop.org's WMspec extensions + // to switch to fullscreen, which is not always available. We must +@@ -870,7 +883,7 @@ bool wxTopLevelWindowGTK::ShowFullScreen + gtk_window_unfullscreen( GTK_WINDOW( m_widget ) ); + } + #ifdef GDK_WINDOWING_X11 +- else ++ else if (xdpy != NULL) + { + GdkWindow* window = gtk_widget_get_window(m_widget); + Window xid = GDK_WINDOW_XID(window); +@@ -958,6 +971,7 @@ bool wxTopLevelWindowGTK::Show( bool sho + deferShow = m_deferShowAllowed && + gs_requestFrameExtentsStatus != RFE_STATUS_BROKEN && + !gtk_widget_get_realized(m_widget) && ++ GDK_IS_X11_DISPLAY(gtk_widget_get_display(m_widget)) && + g_signal_handler_find(m_widget, + GSignalMatchType(G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_DATA), + g_signal_lookup("property_notify_event", GTK_TYPE_WIDGET), +diff -rupN wxWidgets-3.0.2/src/gtk/window.cpp wxWidgets-3.0.2-wayland/src/gtk/window.cpp +--- wxWidgets-3.0.2/src/gtk/window.cpp 2014-10-06 17:33:44.000000000 -0400 ++++ wxWidgets-3.0.2-wayland/src/gtk/window.cpp 2015-12-31 14:48:31.522812743 -0500 +@@ -780,28 +780,31 @@ wxTranslateGTKKeyEventToWx(wxKeyEvent& e + } + + #ifdef GDK_WINDOWING_X11 +- // we want to always get the same key code when the same key is +- // pressed regardless of the state of the modifiers, i.e. on a +- // standard US keyboard pressing '5' or '%' ('5' key with +- // Shift) should result in the same key code in OnKeyDown(): +- // '5' (although OnChar() will get either '5' or '%'). +- // +- // to do it we first translate keysym to keycode (== scan code) +- // and then back but always using the lower register +- Display *dpy = (Display *)wxGetDisplay(); +- KeyCode keycode = XKeysymToKeycode(dpy, keysym); ++ if (GDK_IS_X11_DISPLAY(gdk_window_get_display(gdk_event->window))) ++ { ++ // we want to always get the same key code when the same key is ++ // pressed regardless of the state of the modifiers, i.e. on a ++ // standard US keyboard pressing '5' or '%' ('5' key with ++ // Shift) should result in the same key code in OnKeyDown(): ++ // '5' (although OnChar() will get either '5' or '%'). ++ // ++ // to do it we first translate keysym to keycode (== scan code) ++ // and then back but always using the lower register ++ Display *dpy = (Display *)wxGetDisplay(); ++ KeyCode keycode = XKeysymToKeycode(dpy, keysym); + +- wxLogTrace(TRACE_KEYS, wxT("\t-> keycode %d"), keycode); ++ wxLogTrace(TRACE_KEYS, wxT("\t-> keycode %d"), keycode); + + #ifdef HAVE_X11_XKBLIB_H +- KeySym keysymNormalized = XkbKeycodeToKeysym(dpy, keycode, 0, 0); ++ KeySym keysymNormalized = XkbKeycodeToKeysym(dpy, keycode, 0, 0); + #else +- KeySym keysymNormalized = XKeycodeToKeysym(dpy, keycode, 0); ++ KeySym keysymNormalized = XKeycodeToKeysym(dpy, keycode, 0); + #endif + +- // use the normalized, i.e. lower register, keysym if we've +- // got one +- key_code = keysymNormalized ? keysymNormalized : keysym; ++ // use the normalized, i.e. lower register, keysym if we've ++ // got one ++ key_code = keysymNormalized ? keysymNormalized : keysym; ++ } + #else + key_code = keysym; + #endif diff --git a/wxGTK3.spec b/wxGTK3.spec index 14fa0c9..dbebb19 100644 --- a/wxGTK3.spec +++ b/wxGTK3.spec @@ -11,7 +11,7 @@ Name: %{wxgtkname} Version: 3.0.2 -Release: 11%{?dist} +Release: 12%{?dist} Summary: GTK port of the wxWidgets GUI library License: wxWidgets Group: System Environment/Libraries @@ -35,6 +35,10 @@ Patch2: %{name}-%{version}-spibuttfix.patch # For more details, see the upstream commit: # https://github.com/wxWidgets/wxWidgets/commit/c1d150ed1228c155054cf1fa90932ced7371e6a4 Patch3: %{name}-%{version}-checkradio.patch +# This fixes some wayland issues with GTK3 +# For more details, see the upstream bug: +# http://trac.wxwidgets.org/ticket/16688 +Patch4: %{name}-%{version}-wayland.patch BuildRequires: gtk%{gtkver}-devel #Note webkitgtk (GTK2) does not appear to be supported %if %{gtkver} == 3 @@ -72,7 +76,7 @@ Requires: %{name}%{?_isa} = %{version}-%{release} Requires: %{name}-gl = %{version}-%{release} Requires: %{name}-media = %{version}-%{release} Requires: %{wxbasename} = %{version}-%{release} -Requires: gtk%{gtkver}-devel +Requires: gtk%{gtkver}-devel Requires: libGLU-devel Provides: %{srcname}-devel = %{version}-%{release} @@ -139,6 +143,7 @@ This package provides documentation for the %{srcname} library. %patch1 -p1 -b .upstreamfixes %patch2 -p1 -b .spinbutt %patch3 -p1 -b .checkradio +%patch4 -p1 -b .wayland # patch some installed files to avoid conflicts with 2.8.* sed -i -e 's|aclocal)|aclocal/wxwin3.m4)|' Makefile.in @@ -192,6 +197,10 @@ sed -i -e 's|gtk3|gtk2|' %{buildroot}%{_libexecdir}/%{name}/wx-config mv %{buildroot}%{_bindir}/wxrc* %{buildroot}%{_libexecdir}/%{name} ln -s ../..%{_libexecdir}/%{name}/wxrc-3.0 %{buildroot}%{_bindir}/wxrc-3.0 +#Remove some python bitecode artifacts +rm -f %{buildroot}%{_datadir}/bakefile/presets/*.pyc +rm -f %{buildroot}%{_datadir}/bakefile/presets/*.pyo + # move bakefiles to avoid conflicts with 2.8.* mkdir %{buildroot}%{_datadir}/bakefile/presets/wx3 mv %{buildroot}%{_datadir}/bakefile/presets/*.* %{buildroot}%{_datadir}/bakefile/presets/wx3 @@ -241,6 +250,7 @@ popd %{_libdir}/libwx_*.so %{_libdir}/wx %{_datadir}/aclocal/wxwin3.m4 +%{_datadir}/bakefile/presets/wx3 %{_datadir}/bakefile/presets/wx3/*.* %{_libexecdir}/%{name} @@ -261,16 +271,22 @@ popd %doc html %changelog -* Thu Nov 5 2015 Jeremy Newton - 3.0.2-11 +* Thu Dec 31 2015 Jeremy Newton - 3.0.2-12 +- Remove python artifacts in bakefile dir, causes multilib devel conflict RH#1294712 +- Fix package devel not owning created wx3 backfile preset dir +- Add support for MIPS to wx-config RH#1294895 +- Wayland Patch + +* Thu Nov 5 2015 Jeremy Newton - 3.0.2-11 - Added patch to fix checkbox and radio button issues for f21 onwards -* Sun Nov 1 2015 Jeremy Newton - 3.0.2-10 +* Sun Nov 1 2015 Jeremy Newton - 3.0.2-10 - Removed depreciated/retired libgnomeprintui22 -* Sat Aug 22 2015 Jeremy Newton - 3.0.2-9 +* Sat Aug 22 2015 Jeremy Newton - 3.0.2-9 - Include spinbutton patch from upstream -* Mon Jun 22 2015 Jeremy Newton - 3.0.2-8 +* Mon Jun 22 2015 Jeremy Newton - 3.0.2-8 - Include some upstream patches to fix crashes and warnings * Fri Jun 19 2015 Fedora Release Engineering - 3.0.2-7 @@ -282,54 +298,54 @@ popd * Mon May 04 2015 Jason L Tibbitts III - 3.0.2-5 - Indicate that this package bundles scintilla 3.2.1. -* Thu Feb 26 2015 Jeremy Newton - 3.0.2-4 +* Thu Feb 26 2015 Jeremy Newton - 3.0.2-4 - Bump to rebuild, fix bug #1210239 -* Thu Feb 26 2015 Jeremy Newton - 3.0.2-3 +* Thu Feb 26 2015 Jeremy Newton - 3.0.2-3 - Bump to rebuild for gcc 5.0 to fix some issues -* Tue Nov 04 2014 Jeremy Newton - 3.0.2-2 +* Tue Nov 04 2014 Jeremy Newton - 3.0.2-2 - Moving things around again, hopefully fixing RH#1124402 - Adding symlinks to avoid breaking things -* Tue Nov 04 2014 Jeremy Newton - 3.0.2-1 +* Tue Nov 04 2014 Jeremy Newton - 3.0.2-1 - Update to 3.0.2 * Mon Nov 03 2014 Marcin Juszkiewicz - 3.0.1-5 - Add aarch64 and ppc64le to list of 64-bit architectures -* Tue Sep 30 2014 Jeremy Newton - 3.0.1-4 +* Tue Sep 30 2014 Jeremy Newton - 3.0.1-4 - Add conflict with wxgtk-devel again, temporary fix until it can be resolved -* Tue Sep 30 2014 Jeremy Newton - 3.0.1-3 +* Tue Sep 30 2014 Jeremy Newton - 3.0.1-3 - Avoid gtk warnings, fixes RH#1147995 - Moving wxrc and wx-config to libexec instead of renaming - Misc changes and spec error fixes, fixes RH#1124402 -* Sat Jul 5 2014 Jeremy Newton - 3.0.1-1 +* Sat Jul 5 2014 Jeremy Newton - 3.0.1-1 - Bump to 3.0.1 RH#1076617 -* Tue Mar 18 2014 Jeremy Newton - 3.0.0-6 +* Tue Mar 18 2014 Jeremy Newton - 3.0.0-6 - Removed disable-catch_segvs, see RH#1076617 -* Mon Mar 17 2014 Jeremy Newton - 3.0.0-5 +* Mon Mar 17 2014 Jeremy Newton - 3.0.0-5 - Renable combat28 - without it causes bugs RH#1076617 and a few others -* Wed Feb 19 2014 Jeremy Newton - 3.0.0-4 +* Wed Feb 19 2014 Jeremy Newton - 3.0.0-4 - Fixed GTK3 bug with wx-config - Fixed a unused-direct-shlib-dependency error -* Mon Feb 17 2014 Jeremy Newton - 3.0.0-3 +* Mon Feb 17 2014 Jeremy Newton - 3.0.0-3 - Added patch to avoid build fail on gtk 3.10+ - Reverted patching to make devel package compatible with wxGTK-devel - Added combatibility for RHEL 6+ - Changed all mention of GTK3 and GTK2 to GTK for consistency -* Mon Feb 10 2014 Jeremy Newton - 3.0.0-2 +* Mon Feb 10 2014 Jeremy Newton - 3.0.0-2 - Changed to build against gtk3 - Add webkit to build requires - Removed patching to make devel package compatible with wxGTK-devel - Disable 2.8.* combatibility (redundant functionality) -* Sat Jan 4 2014 Jeremy Newton - 3.0.0-1 +* Sat Jan 4 2014 Jeremy Newton - 3.0.0-1 - Initial build of wxwidgets version 3, mostly based on wxGTK spec