From 37d5bdf0160270f959c1bb94a4f7b4c3fc516f91 Mon Sep 17 00:00:00 2001 From: Mystro256 Date: Sun, 11 Dec 2016 01:05:51 -0500 Subject: [PATCH] Update to git snapshot --- .gitignore | 1 + sources | 3 +- wxGTK3-3.0.2-background-color.patch | 32 ---- wxGTK3-3.0.2-checkradio.patch | 38 ---- wxGTK3-3.0.2-draw-elliptic-arc-crash.patch | 38 ---- wxGTK3-3.0.2-fix-percent-dnd.patch | 62 ------- wxGTK3-3.0.2-fix-percent-dnd2.patch | 35 ---- wxGTK3-3.0.2-font-enumerator-stop.patch | 47 ----- wxGTK3-3.0.2-getbestsize.patch | 29 --- wxGTK3-3.0.2-gtk-show-uri.patch | 48 ----- wxGTK3-3.0.2-gtk-show-uri1.patch | 27 --- wxGTK3-3.0.2-gtk-sizing-problems.patch | 166 ----------------- wxGTK3-3.0.2-init-from-font.patch | 39 ---- wxGTK3-3.0.2-media-docs.patch | 54 ------ wxGTK3-3.0.2-paint-clipping-region.patch | 40 ---- wxGTK3-3.0.2-scrolwin-sizing-loop.patch | 31 ---- wxGTK3-3.0.2-size-alloc-fix.patch | 36 ---- wxGTK3-3.0.2-spibuttfix.patch | 14 -- wxGTK3-3.0.2-stc-gcc6.patch | 39 ---- wxGTK3-3.0.2-string-tests-gcc6.patch | 60 ------ wxGTK3-3.0.2-upstreamfixes.patch | 155 ---------------- wxGTK3-3.0.2-wayland-window-sizing1.patch | 171 ------------------ wxGTK3-3.0.2-wayland-window-sizing2.patch | 59 ------ wxGTK3-3.0.2-wayland.patch | 108 ----------- wxGTK3-3.0.2-wxgetkeystate.patch | 121 ------------- ...wxpgchoicesdata-protected-destructor.patch | 21 --- ...check.patch => wxGTK3-3.0.3-abicheck.patch | 0 wxGTK3.spec | 131 ++++---------- 28 files changed, 37 insertions(+), 1568 deletions(-) delete mode 100644 wxGTK3-3.0.2-background-color.patch delete mode 100644 wxGTK3-3.0.2-checkradio.patch delete mode 100644 wxGTK3-3.0.2-draw-elliptic-arc-crash.patch delete mode 100644 wxGTK3-3.0.2-fix-percent-dnd.patch delete mode 100644 wxGTK3-3.0.2-fix-percent-dnd2.patch delete mode 100644 wxGTK3-3.0.2-font-enumerator-stop.patch delete mode 100644 wxGTK3-3.0.2-getbestsize.patch delete mode 100644 wxGTK3-3.0.2-gtk-show-uri.patch delete mode 100644 wxGTK3-3.0.2-gtk-show-uri1.patch delete mode 100644 wxGTK3-3.0.2-gtk-sizing-problems.patch delete mode 100644 wxGTK3-3.0.2-init-from-font.patch delete mode 100644 wxGTK3-3.0.2-media-docs.patch delete mode 100644 wxGTK3-3.0.2-paint-clipping-region.patch delete mode 100644 wxGTK3-3.0.2-scrolwin-sizing-loop.patch delete mode 100644 wxGTK3-3.0.2-size-alloc-fix.patch delete mode 100644 wxGTK3-3.0.2-spibuttfix.patch delete mode 100644 wxGTK3-3.0.2-stc-gcc6.patch delete mode 100644 wxGTK3-3.0.2-string-tests-gcc6.patch delete mode 100644 wxGTK3-3.0.2-upstreamfixes.patch delete mode 100644 wxGTK3-3.0.2-wayland-window-sizing1.patch delete mode 100644 wxGTK3-3.0.2-wayland-window-sizing2.patch delete mode 100644 wxGTK3-3.0.2-wayland.patch delete mode 100644 wxGTK3-3.0.2-wxgetkeystate.patch delete mode 100644 wxGTK3-3.0.2-wxpgchoicesdata-protected-destructor.patch rename wxGTK3-3.0.2-abicheck.patch => wxGTK3-3.0.3-abicheck.patch (100%) diff --git a/.gitignore b/.gitignore index 0a4525b..d923a2b 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ /wxWidgets-3.0.1.tar.bz2 /wxWidgets-3.0.2-docs-html.tar.bz2 /wxWidgets-3.0.2.tar.bz2 +/wxWidgets-9518d52.tar.gz diff --git a/sources b/sources index 80e6fd1..c8eeff8 100644 --- a/sources +++ b/sources @@ -1,2 +1 @@ -67844da5ed54c1a09d8d4ebe32a5e00a wxWidgets-3.0.2-docs-html.tar.bz2 -ba4cd1f3853d0cd49134c5ae028ad080 wxWidgets-3.0.2.tar.bz2 +f1b6f528f6dc5d3a83d1d484b08a35f9 wxWidgets-9518d52.tar.gz diff --git a/wxGTK3-3.0.2-background-color.patch b/wxGTK3-3.0.2-background-color.patch deleted file mode 100644 index 830d876..0000000 --- a/wxGTK3-3.0.2-background-color.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 553ec7537c30636ddf6cbc157373477fb2e9da41 Mon Sep 17 00:00:00 2001 -From: Paul Cornett -Date: Wed, 9 Nov 2016 20:06:26 -0800 -Subject: [PATCH] Fix non-default window background color with GTK+ >= 3.20 - -GTK+ no longer automatically paints non-default window background. See #17586 - -(cherry picked from commit 9bb5d0435a4cce5bcb7b3956cb730f59c37ea5f6) ---- - src/gtk/window.cpp | 9 +++++++++ - 1 file changed, 9 insertions(+) - -diff --git a/src/gtk/window.cpp b/src/gtk/window.cpp -index 0826e06..bca5443 100644 ---- a/src/gtk/window.cpp -+++ b/src/gtk/window.cpp -@@ -4238,6 +4238,15 @@ void wxWindowGTK::GTKSendPaintEvents(const GdkRegion* region) - 0, 0, w, h); - #endif // !__WXGTK3__ - } -+#ifdef __WXGTK3__ -+ else if (m_backgroundColour.IsOk() && gtk_check_version(3,20,0) == NULL) -+ { -+ cairo_save(cr); -+ gdk_cairo_set_source_rgba(cr, m_backgroundColour); -+ cairo_paint(cr); -+ cairo_restore(cr); -+ } -+#endif - break; - - case wxBG_STYLE_PAINT: diff --git a/wxGTK3-3.0.2-checkradio.patch b/wxGTK3-3.0.2-checkradio.patch deleted file mode 100644 index fd9ba15..0000000 --- a/wxGTK3-3.0.2-checkradio.patch +++ /dev/null @@ -1,38 +0,0 @@ -diff -rupN wxWidgets-3.0.2-orig/src/gtk/renderer.cpp wxWidgets-3.0.2/src/gtk/renderer.cpp ---- wxWidgets-3.0.2-orig/src/gtk/renderer.cpp 2015-11-05 19:57:31.075151404 -0500 -+++ wxWidgets-3.0.2/src/gtk/renderer.cpp 2015-11-05 20:37:56.230764763 -0500 -@@ -41,6 +41,10 @@ - #include "wx/gtk/private.h" - #include "wx/gtk/private/gtk2-compat.h" - -+#if defined(__WXGTK3__) && !GTK_CHECK_VERSION(3,14,0) -+ #define GTK_STATE_FLAG_CHECKED (1 << 11) -+#endif -+ - // ---------------------------------------------------------------------------- - // wxRendererGTK: our wxRendererNative implementation - // ---------------------------------------------------------------------------- -@@ -551,7 +555,11 @@ wxRendererGTK::DrawCheckBox(wxWindow* wi - { - int stateFlags = GTK_STATE_FLAG_NORMAL; - if (flags & wxCONTROL_CHECKED) -+ { - stateFlags = GTK_STATE_FLAG_ACTIVE; -+ if (gtk_check_version(3,14,0) == NULL) -+ stateFlags = GTK_STATE_FLAG_CHECKED; -+ } - if (flags & wxCONTROL_DISABLED) - stateFlags |= GTK_STATE_FLAG_INSENSITIVE; - if (flags & wxCONTROL_UNDETERMINED) -@@ -866,7 +874,11 @@ void wxRendererGTK::DrawRadioBitmap(wxWi - #ifdef __WXGTK3__ - int state = GTK_STATE_FLAG_NORMAL; - if (flags & wxCONTROL_CHECKED) -+ { - state = GTK_STATE_FLAG_ACTIVE; -+ if (gtk_check_version(3,14,0) == NULL) -+ state = GTK_STATE_FLAG_CHECKED; -+ } - else if (flags & wxCONTROL_UNDETERMINED) - state = GTK_STATE_FLAG_INCONSISTENT; - if (flags & wxCONTROL_DISABLED) diff --git a/wxGTK3-3.0.2-draw-elliptic-arc-crash.patch b/wxGTK3-3.0.2-draw-elliptic-arc-crash.patch deleted file mode 100644 index 29a993e..0000000 --- a/wxGTK3-3.0.2-draw-elliptic-arc-crash.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 148971013ee48926dfe153ca39c94be92acde37c Mon Sep 17 00:00:00 2001 -From: Paul Cornett -Date: Wed, 15 Oct 2014 16:53:54 +0000 -Subject: [PATCH] fix crash in wxGCDC::DrawEllipticArc() after r76954, closes - #16623 - -git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_3_0_BRANCH@78023 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 ---- - src/common/dcgraph.cpp | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) - -diff --git a/src/common/dcgraph.cpp b/src/common/dcgraph.cpp -index d27e9cc..c390eb4 100644 ---- a/src/common/dcgraph.cpp -+++ b/src/common/dcgraph.cpp -@@ -646,13 +646,12 @@ void wxGCDCImpl::DoDrawEllipticArc( wxCoord x, wxCoord y, wxCoord w, wxCoord h, - m_graphicContext->PushState(); - m_graphicContext->Translate(dx, dy); - m_graphicContext->Scale(factor, 1.0); -- wxGraphicsPath path; -+ wxGraphicsPath path = m_graphicContext->CreatePath(); - - // since these angles (ea,sa) are measured counter-clockwise, we invert them to - // get clockwise angles - if ( m_brush.GetStyle() != wxTRANSPARENT ) - { -- path = m_graphicContext->CreatePath(); - path.MoveToPoint( 0, 0 ); - path.AddArc( 0, 0, h/2.0 , DegToRad(-sa) , DegToRad(-ea), sa > ea ); - path.AddLineToPoint( 0, 0 ); -@@ -664,7 +663,6 @@ void wxGCDCImpl::DoDrawEllipticArc( wxCoord x, wxCoord y, wxCoord w, wxCoord h, - } - else - { -- wxGraphicsPath path = m_graphicContext->CreatePath(); - path.AddArc( 0, 0, h/2.0 , DegToRad(-sa) , DegToRad(-ea), sa > ea ); - m_graphicContext->DrawPath( path ); - } diff --git a/wxGTK3-3.0.2-fix-percent-dnd.patch b/wxGTK3-3.0.2-fix-percent-dnd.patch deleted file mode 100644 index 6f3f931..0000000 --- a/wxGTK3-3.0.2-fix-percent-dnd.patch +++ /dev/null @@ -1,62 +0,0 @@ -commit 8f29de5231e348d356b5f3962225362e8fd87ba9 -Author: Tim Kosse -Date: Mon Sep 14 11:42:38 2015 +0200 - - Escape filenames in wxFileDataObject::GetDataSize/GetDataHere - - On wxGTK, wxFileDataObject::SetData calls g_filename_from_uri which - percent-decodes URIs. No corresponding percent-encoding was done in - wxFileDataObject::GetDataSize/GetDataHere. Use g_filename_to_uri instead in so - that filenames are properly escaped. - - This commit also fixes the data being truncated if it contains non-ASCII - characters on wide-character builds, see the memcpy arguments in the original - code. - -diff --git a/src/gtk/dataobj.cpp b/src/gtk/dataobj.cpp -index 9a39607..2d1f43c 100644 ---- a/src/gtk/dataobj.cpp -+++ b/src/gtk/dataobj.cpp -@@ -235,16 +235,21 @@ wxTextDataObject::GetAllFormats(wxDataFormat *formats, - - bool wxFileDataObject::GetDataHere(void *buf) const - { -- wxString filenames; -+ char* out = reinterpret_cast(buf); - - for (size_t i = 0; i < m_filenames.GetCount(); i++) - { -- filenames += wxT("file:"); -- filenames += m_filenames[i]; -- filenames += wxT("\r\n"); -+ char* uri = g_filename_to_uri(m_filenames[i].mbc_str(), 0, 0); -+ if (uri) -+ { -+ size_t const len = strlen(uri); -+ strcpy(out, uri); -+ out += len; -+ *(out++) = '\r'; -+ *(out++) = '\n'; -+ } - } -- -- memcpy( buf, filenames.mbc_str(), filenames.length() + 1 ); -+ *out = 0; - - return true; - } -@@ -255,9 +260,11 @@ size_t wxFileDataObject::GetDataSize() const - - for (size_t i = 0; i < m_filenames.GetCount(); i++) - { -- // This is junk in UTF-8 -- res += m_filenames[i].length(); -- res += 5 + 2; // "file:" (5) + "\r\n" (2) -+ char* uri = g_filename_to_uri(m_filenames[i].mbc_str(), 0, 0); -+ if (uri) { -+ res += strlen(uri) + 2; // Including "\r\n" -+ g_free(uri); -+ } - } - - return res + 1; diff --git a/wxGTK3-3.0.2-fix-percent-dnd2.patch b/wxGTK3-3.0.2-fix-percent-dnd2.patch deleted file mode 100644 index 772d477..0000000 --- a/wxGTK3-3.0.2-fix-percent-dnd2.patch +++ /dev/null @@ -1,35 +0,0 @@ -commit 0f9f942a5bbe0ed9f07ea2e1fef90a7e2db768e5 -Author: Paul Cornett -Date: Fri Oct 2 09:14:06 2015 -0700 - - Fix memory leak introduced in 8f29de52 - - Also, use memcpy() instead of strcpy() since we already have the length, - and use static_cast instead of reinterpret_cast. - -diff --git a/src/gtk/dataobj.cpp b/src/gtk/dataobj.cpp -index 2d1f43c..df460d8 100644 ---- a/src/gtk/dataobj.cpp -+++ b/src/gtk/dataobj.cpp -@@ -235,7 +235,7 @@ wxTextDataObject::GetAllFormats(wxDataFormat *formats, - - bool wxFileDataObject::GetDataHere(void *buf) const - { -- char* out = reinterpret_cast(buf); -+ char* out = static_cast(buf); - - for (size_t i = 0; i < m_filenames.GetCount(); i++) - { -@@ -243,10 +243,11 @@ bool wxFileDataObject::GetDataHere(void *buf) const - if (uri) - { - size_t const len = strlen(uri); -- strcpy(out, uri); -+ memcpy(out, uri, len); - out += len; - *(out++) = '\r'; - *(out++) = '\n'; -+ g_free(uri); - } - } - *out = 0; diff --git a/wxGTK3-3.0.2-font-enumerator-stop.patch b/wxGTK3-3.0.2-font-enumerator-stop.patch deleted file mode 100644 index f587882..0000000 --- a/wxGTK3-3.0.2-font-enumerator-stop.patch +++ /dev/null @@ -1,47 +0,0 @@ -From a19e512e80acdb2a777c3e44923ad0b1178db35a Mon Sep 17 00:00:00 2001 -From: Scott Talbert -Date: Sun, 7 Aug 2016 23:15:41 -0400 -Subject: [PATCH] Fix the stop function of wxFontEnumerator for wxGTK - -In a wxFontEnumerator, if false is returned from OnFacename() or -OnFontEncoding(), the enumeration is supposed to stop. This was not happening -on wxGTK. - -See https://github.com/wxWidgets/wxWidgets/pull/311 - -(cherry picked from commit 3572c2c6548bca2dbd439a3d25ed403fda99ebe9) ---- - src/common/fontenumcmn.cpp | 3 ++- - src/unix/fontenum.cpp | 5 ++++- - 2 files changed, 6 insertions(+), 2 deletions(-) - -diff --git a/src/common/fontenumcmn.cpp b/src/common/fontenumcmn.cpp -index 1185a86..f0d6f68 100644 ---- a/src/common/fontenumcmn.cpp -+++ b/src/common/fontenumcmn.cpp -@@ -124,7 +124,8 @@ bool wxFontEnumerator::EnumerateEncodingsUTF8(const wxString& facename) - - for ( size_t n = 0; n < count; n++ ) - { -- OnFontEncoding(facenames[n], utf8); -+ if ( !OnFontEncoding(facenames[n], utf8) ) -+ break; - } - - return true; -diff --git a/src/unix/fontenum.cpp b/src/unix/fontenum.cpp -index cc7ee1d..e3739ed 100644 ---- a/src/unix/fontenum.cpp -+++ b/src/unix/fontenum.cpp -@@ -89,7 +89,10 @@ bool wxFontEnumerator::EnumerateFacenames(wxFontEncoding encoding, - #endif - { - const gchar *name = pango_font_family_get_name(families[i]); -- OnFacename(wxString(name, wxConvUTF8)); -+ if ( !OnFacename(wxString(name, wxConvUTF8)) ) -+ { -+ break; -+ } - } - } - g_free(families); diff --git a/wxGTK3-3.0.2-getbestsize.patch b/wxGTK3-3.0.2-getbestsize.patch deleted file mode 100644 index ba7a4c1..0000000 --- a/wxGTK3-3.0.2-getbestsize.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 2bc3721f065fd7d47674ccaf7e8d9d6cc195aab5 Mon Sep 17 00:00:00 2001 -From: Paul Cornett -Date: Sat, 6 Feb 2016 08:58:53 -0800 -Subject: [PATCH] Fix GetBestSize() for GTK3 after size has been set - -Need to reset size request to get actual best size. -See Fedora bug https://bugzilla.redhat.com/show_bug.cgi?id=1282142 - -(cherry picked from commit 6ed7e27bf270f9f7767b59ebaa9a7f37c5bb3bed) ---- - src/gtk/control.cpp | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/src/gtk/control.cpp b/src/gtk/control.cpp -index 3352965..20cd746 100644 ---- a/src/gtk/control.cpp -+++ b/src/gtk/control.cpp -@@ -319,7 +319,11 @@ wxSize wxControl::GTKGetPreferredSize(GtkWidget* widget) const - { - GtkRequisition req; - #ifdef __WXGTK3__ -+ int w, h; -+ gtk_widget_get_size_request(widget, &w, &h); -+ gtk_widget_set_size_request(widget, -1, -1); - gtk_widget_get_preferred_size(widget, NULL, &req); -+ gtk_widget_set_size_request(widget, w, h); - #else - GTK_WIDGET_GET_CLASS(widget)->size_request(widget, &req); - #endif diff --git a/wxGTK3-3.0.2-gtk-show-uri.patch b/wxGTK3-3.0.2-gtk-show-uri.patch deleted file mode 100644 index e886120..0000000 --- a/wxGTK3-3.0.2-gtk-show-uri.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 2dd407609b8987634180c045e9a6d131db6f947e Mon Sep 17 00:00:00 2001 -From: Paul Cornett -Date: Mon, 17 Aug 2015 21:54:41 -0700 -Subject: [PATCH] use gtk_show_uri() in wxLaunchDefaultBrowser() implementation - for GTK+ - -(cherry picked from commit 22eec388068044b9ea3c9fd1539d6686574a32df) ---- - src/unix/utilsx11.cpp | 16 +++++++++++++++- - 1 file changed, 15 insertions(+), 1 deletion(-) - -diff --git a/src/unix/utilsx11.cpp b/src/unix/utilsx11.cpp -index 12ff73e..7d5811a 100644 ---- a/src/unix/utilsx11.cpp -+++ b/src/unix/utilsx11.cpp -@@ -36,10 +36,11 @@ - #endif - - #ifdef __WXGTK__ --#include -+#include - #ifdef GDK_WINDOWING_X11 - #include - #endif -+GdkWindow* wxGetTopLevelGDK(); - #endif - - // Only X11 backend is supported for wxGTK here -@@ -887,6 +888,19 @@ bool wxDoLaunchDefaultBrowser(const wxString& url, int flags) - { - wxUnusedVar(flags); - -+#ifdef __WXGTK__ -+#if GTK_CHECK_VERSION(2,14,0) -+#ifndef __WXGTK3__ -+ if (gtk_check_version(2,14,0) == NULL) -+#endif -+ { -+ GdkScreen* screen = gdk_window_get_screen(wxGetTopLevelGDK()); -+ if (gtk_show_uri(screen, url.utf8_str(), GDK_CURRENT_TIME, NULL)) -+ return true; -+ } -+#endif // GTK_CHECK_VERSION(2,14,0) -+#endif // __WXGTK__ -+ - // Our best best is to use xdg-open from freedesktop.org cross-desktop - // compatibility suite xdg-utils - // (see http://portland.freedesktop.org/wiki/) -- this is installed on diff --git a/wxGTK3-3.0.2-gtk-show-uri1.patch b/wxGTK3-3.0.2-gtk-show-uri1.patch deleted file mode 100644 index bd5fcc5..0000000 --- a/wxGTK3-3.0.2-gtk-show-uri1.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 79676e1e9d307c479c5aefa70c0fd052341d697e Mon Sep 17 00:00:00 2001 -From: Vadim Zeitlin -Date: Mon, 24 Aug 2015 17:18:15 +0200 -Subject: [PATCH] Fix wxGTK build after wxLaunchDefaultBrowser() fix backport. - -2dd407609b8987634180c045e9a6d131db6f947e uses wxGetTopLevelGDK() only -available in master and not in 3.0 branch, avoid it by just using the default -screen (which also avoids having to add another GTK+ version check for -gdk_window_get_screen() which is only available since 2.24). ---- - src/unix/utilsx11.cpp | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/src/unix/utilsx11.cpp b/src/unix/utilsx11.cpp -index 7d5811a..6b35551 100644 ---- a/src/unix/utilsx11.cpp -+++ b/src/unix/utilsx11.cpp -@@ -894,8 +894,7 @@ bool wxDoLaunchDefaultBrowser(const wxString& url, int flags) - if (gtk_check_version(2,14,0) == NULL) - #endif - { -- GdkScreen* screen = gdk_window_get_screen(wxGetTopLevelGDK()); -- if (gtk_show_uri(screen, url.utf8_str(), GDK_CURRENT_TIME, NULL)) -+ if (gtk_show_uri(NULL, url.utf8_str(), GDK_CURRENT_TIME, NULL)) - return true; - } - #endif // GTK_CHECK_VERSION(2,14,0) diff --git a/wxGTK3-3.0.2-gtk-sizing-problems.patch b/wxGTK3-3.0.2-gtk-sizing-problems.patch deleted file mode 100644 index 8096209..0000000 --- a/wxGTK3-3.0.2-gtk-sizing-problems.patch +++ /dev/null @@ -1,166 +0,0 @@ -From 6475376931bf316a4fd791114408f7c1fc2fe836 Mon Sep 17 00:00:00 2001 -From: Paul Cornett -Date: Wed, 2 Nov 2016 10:30:44 -0700 -Subject: [PATCH] Fix some sizing problems with GTK3 - -A change in size-allocate handling with GTK+ 3.20 exposed a flaw in our method for -deferring queue-resize requests. Using an idle callback to process the requests -did not work well with the GdkFrameClock-based system used since GTK+ 3.8. Using -the "check-resize" signal works better. Also with GTK+ >= 3.20, it seems necessary -to manually work the queue-resize up to the TLW, as otherwise the resized widgets -don't get updated without an external size-allocate event. -See #17585 - -(backport of 3b4ee5a031b1c2fa29772b90751a82dd7f1d3de0) ---- - src/gtk/window.cpp | 102 +++++++++++++++++++++++++++++++++++++++-------------- - 1 file changed, 76 insertions(+), 26 deletions(-) - -diff --git a/src/gtk/window.cpp b/src/gtk/window.cpp -index d27f889..ab56baa 100644 ---- a/src/gtk/window.cpp -+++ b/src/gtk/window.cpp -@@ -221,6 +221,8 @@ int g_lastButtonNumber = 0; - - #ifdef __WXGTK3__ - static GList* gs_sizeRevalidateList; -+static GSList* gs_queueResizeList; -+static bool gs_inSizeAllocate; - void wxGTKSizeRevalidate(wxWindow*); - #endif - -@@ -2083,6 +2085,54 @@ static void frame_clock_layout(GdkFrameClock*, wxWindow* win) - } - #endif // GTK_CHECK_VERSION(3,8,0) - -+#ifdef __WXGTK3__ -+//----------------------------------------------------------------------------- -+// "check-resize" -+//----------------------------------------------------------------------------- -+ -+static void check_resize(GtkContainer*, wxWindow*) -+{ -+ gs_inSizeAllocate = true; -+} -+ -+static void check_resize_after(GtkContainer*, wxWindow*) -+{ -+ gs_inSizeAllocate = false; -+ if (gs_queueResizeList) -+ { -+ for (GSList* p = gs_queueResizeList; p; p = p->next) -+ { -+ if (p->data == NULL) -+ continue; -+ -+ wxWindowGTK* w = static_cast(p->data); -+ g_object_remove_weak_pointer(G_OBJECT(w->m_widget), &p->data); -+ gtk_widget_set_size_request(w->m_widget, w->m_width, w->m_height); -+ -+ // in case only the position is changing -+ gtk_widget_queue_resize(w->m_widget); -+ -+ // need to force the queue-resize up to the TLW with GTK >= 3.20 -+ if (gtk_check_version(3,20,0) == NULL) -+ { -+ GtkWidget* widget = w->m_widget; -+ for (;;) -+ { -+ widget = gtk_widget_get_parent(widget); -+ if (widget == NULL) -+ break; -+ gtk_widget_queue_resize(widget); -+ if (gtk_widget_is_toplevel(widget)) -+ break; -+ } -+ } -+ } -+ g_slist_free(gs_queueResizeList); -+ gs_queueResizeList = NULL; -+ } -+} -+#endif // __WXGTK3__ -+ - } // extern "C" - - void wxWindowGTK::GTKHandleRealized() -@@ -2670,6 +2720,13 @@ void wxWindowGTK::PostCreation() - g_signal_connect(m_wxwindow ? m_wxwindow : m_widget, "size_allocate", - G_CALLBACK(size_allocate), this); - } -+#ifdef __WXGTK3__ -+ else -+ { -+ g_signal_connect(m_widget, "check-resize", G_CALLBACK(check_resize), this); -+ g_signal_connect_after(m_widget, "check-resize", G_CALLBACK(check_resize_after), this); -+ } -+#endif - - #if GTK_CHECK_VERSION(2, 8, 0) - #ifndef __WXGTK3__ -@@ -2778,46 +2835,39 @@ void wxWindowGTK::ConnectWidget( GtkWidget *widget ) - G_CALLBACK (gtk_window_leave_callback), this); - } - --static GSList* gs_queueResizeList; -- --extern "C" { --static gboolean queue_resize(void*) --{ -- gdk_threads_enter(); -- for (GSList* p = gs_queueResizeList; p; p = p->next) -- { -- if (p->data) -- { -- gtk_widget_queue_resize(GTK_WIDGET(p->data)); -- g_object_remove_weak_pointer(G_OBJECT(p->data), &p->data); -- } -- } -- g_slist_free(gs_queueResizeList); -- gs_queueResizeList = NULL; -- gdk_threads_leave(); -- return false; --} --} -- - void wxWindowGTK::DoMoveWindow(int x, int y, int width, int height) - { -- gtk_widget_set_size_request(m_widget, width, height); - GtkWidget* parent = gtk_widget_get_parent(m_widget); - if (WX_IS_PIZZA(parent)) -+ { - WX_PIZZA(parent)->move(m_widget, x, y, width, height); -+ if ( -+#ifdef __WXGTK3__ -+ !gs_inSizeAllocate && -+#endif -+ gtk_widget_get_visible(m_widget)) -+ { -+ // in case only the position is changing -+ gtk_widget_queue_resize(m_widget); -+ } -+ } - -+#ifdef __WXGTK3__ - // With GTK3, gtk_widget_queue_resize() is ignored while a size-allocate - // is in progress. This situation is common in wxWidgets, since - // size-allocate can generate wxSizeEvent and size event handlers often - // call SetSize(), directly or indirectly. Work around this by deferring - // the queue-resize until after size-allocate processing is finished. -- if (g_slist_find(gs_queueResizeList, m_widget) == NULL) -+ if (!gs_inSizeAllocate || !gtk_widget_get_visible(m_widget)) -+ gtk_widget_set_size_request(m_widget, width, height); -+ else - { -- if (gs_queueResizeList == NULL) -- g_idle_add_full(GTK_PRIORITY_RESIZE, queue_resize, NULL, NULL); -- gs_queueResizeList = g_slist_prepend(gs_queueResizeList, m_widget); -+ gs_queueResizeList = g_slist_prepend(gs_queueResizeList, this); - g_object_add_weak_pointer(G_OBJECT(m_widget), &gs_queueResizeList->data); - } -+#else // !__WXGTK3__ -+ gtk_widget_set_size_request(m_widget, width, height); -+#endif // !__WXGTK3__ - } - - void wxWindowGTK::ConstrainSize() diff --git a/wxGTK3-3.0.2-init-from-font.patch b/wxGTK3-3.0.2-init-from-font.patch deleted file mode 100644 index d251a8c..0000000 --- a/wxGTK3-3.0.2-init-from-font.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 238a948ed01f27e05e2c0e08932e8da207590648 Mon Sep 17 00:00:00 2001 -From: Scott Talbert -Date: Tue, 9 Aug 2016 21:12:58 -0400 -Subject: [PATCH] Fix wxNativeFontInfo::InitFromFont() when using Pango - -Use pango_font_description_copy() to make a lossless copy of the original font -instead of doing it using wxWidgets API which is less direct and, in addition, -currently is completely broken as SetXXX() methods don't create the Pango font -description if it doesn't exist as they ought to. - -See https://github.com/wxWidgets/wxWidgets/pull/312 - -(cherry picked from commit dbe2a1c2fdba53ad1d08ce36780267217933a876) ---- - include/wx/fontutil.h | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/include/wx/fontutil.h b/include/wx/fontutil.h -index 60bb874..9e4d023 100644 ---- a/include/wx/fontutil.h -+++ b/include/wx/fontutil.h -@@ -227,6 +227,9 @@ public : - // init with the parameters of the given font - void InitFromFont(const wxFont& font) - { -+#if wxUSE_PANGO -+ Init(*font.GetNativeFontInfo()); -+#else - // translate all font parameters - SetStyle((wxFontStyle)font.GetStyle()); - SetWeight((wxFontWeight)font.GetWeight()); -@@ -252,6 +255,7 @@ public : - // deal with encoding now (it may override the font family and facename - // so do it after setting them) - SetEncoding(font.GetEncoding()); -+#endif // !wxUSE_PANGO - } - - // accessors and modifiers for the font elements diff --git a/wxGTK3-3.0.2-media-docs.patch b/wxGTK3-3.0.2-media-docs.patch deleted file mode 100644 index d6a97fe..0000000 --- a/wxGTK3-3.0.2-media-docs.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 03903c1e459f108e0c464db24064e4cde84f174a Mon Sep 17 00:00:00 2001 -From: Vadim Zeitlin -Date: Fri, 20 Dec 2013 17:50:27 +0000 -Subject: [PATCH] Document wxEVT_MEDIA_XXX event types. - -See #15768. - -(cherry picked from commit 5c1f95bc71028e4562f847af56b815b2f13370a9 on master) ---- - interface/wx/mediactrl.h | 12 ++++++++++++ - 1 file changed, 12 insertions(+) - -diff --git a/interface/wx/mediactrl.h b/interface/wx/mediactrl.h -index e425fa0..8bcfada 100644 ---- a/interface/wx/mediactrl.h -+++ b/interface/wx/mediactrl.h -@@ -48,6 +48,7 @@ enum wxMediaCtrlPlayerControls - @beginEventTable{wxMediaEvent} - @event{EVT_MEDIA_LOADED(id\, func)} - Sent when a media has loaded enough data that it can start playing. -+ Processes a @c wxEVT_MEDIA_LOADED event type. - @event{EVT_MEDIA_STOP(id\, func)} - Sent when a media has switched to the @c wxMEDIASTATE_STOPPED state. - You may be able to Veto this event to prevent it from stopping, -@@ -55,14 +56,19 @@ enum wxMediaCtrlPlayerControls - the media (note that this may not have the desired effect - if you - want to loop the media, for example, catch the @c EVT_MEDIA_FINISHED - and play there instead). -+ Processes a @c wxEVT_MEDIA_STOP event type. - @event{EVT_MEDIA_FINISHED(id\, func)} - Sent when a media has finished playing in a wxMediaCtrl. -+ Processes a @c wxEVT_MEDIA_FINISHED event type. - @event{EVT_MEDIA_STATECHANGED(id\, func)} - Sent when a media has switched its state (from any media state). -+ Processes a @c wxEVT_MEDIA_STATECHANGED event type. - @event{EVT_MEDIA_PLAY(id\, func)} - Sent when a media has switched to the @c wxMEDIASTATE_PLAYING state. -+ Processes a @c wxEVT_MEDIA_PLAY event type. - @event{EVT_MEDIA_PAUSE(id\, func)} - Sent when a media has switched to the @c wxMEDIASTATE_PAUSED state. -+ Processes a @c wxEVT_MEDIA_PAUSE event type. - @endEventTable - - @library{wxmedia} -@@ -442,3 +448,9 @@ class wxMediaCtrl : public wxControl - wxFileOffset Tell(); - }; - -+wxEventType wxEVT_MEDIA_LOADED; -+wxEventType wxEVT_MEDIA_STOP; -+wxEventType wxEVT_MEDIA_FINISHED; -+wxEventType wxEVT_MEDIA_STATECHANGED; -+wxEventType wxEVT_MEDIA_PLAY; -+wxEventType wxEVT_MEDIA_PAUSE; diff --git a/wxGTK3-3.0.2-paint-clipping-region.patch b/wxGTK3-3.0.2-paint-clipping-region.patch deleted file mode 100644 index 13f6827..0000000 --- a/wxGTK3-3.0.2-paint-clipping-region.patch +++ /dev/null @@ -1,40 +0,0 @@ -From cd8811bf142172c4920ba13a685472ceb405ef78 Mon Sep 17 00:00:00 2001 -From: Paul Cornett -Date: Thu, 3 Nov 2016 09:14:30 -0700 -Subject: [PATCH] Fix paint clipping region with GTK+ >= 3.20 - -Apparently the clip is no longer set properly. Fixes wxDC::Clear() overwriting -areas outside the window. Problem can be seen in the Audacity toolbars. - -(cherry picked from commit bca7313499c11a6d7fecd2baa355ac09fd3ac83b) ---- - src/gtk/window.cpp | 14 +++++++++++++- - 1 file changed, 13 insertions(+), 1 deletion(-) - -diff --git a/src/gtk/window.cpp b/src/gtk/window.cpp -index 41fffb4..96789de 100644 ---- a/src/gtk/window.cpp -+++ b/src/gtk/window.cpp -@@ -4099,9 +4099,21 @@ void wxWindowGTK::GTKSendPaintEvents(const GdkRegion* region) - #endif - { - #ifdef __WXGTK3__ -- m_paintContext = cr; -+ { -+ cairo_region_t* region = gdk_window_get_clip_region(gtk_widget_get_window(m_wxwindow)); -+ cairo_rectangle_int_t rect; -+ cairo_region_get_extents(region, &rect); -+ cairo_region_destroy(region); -+ cairo_rectangle(cr, rect.x, rect.y, rect.width, rect.height); -+ cairo_clip(cr); -+ } - double x1, y1, x2, y2; - cairo_clip_extents(cr, &x1, &y1, &x2, &y2); -+ -+ if (x1 >= x2 || y1 >= y2) -+ return; -+ -+ m_paintContext = cr; - m_updateRegion = wxRegion(int(x1), int(y1), int(x2 - x1), int(y2 - y1)); - #else // !__WXGTK3__ - m_updateRegion = wxRegion(region); diff --git a/wxGTK3-3.0.2-scrolwin-sizing-loop.patch b/wxGTK3-3.0.2-scrolwin-sizing-loop.patch deleted file mode 100644 index 3a29b6e..0000000 --- a/wxGTK3-3.0.2-scrolwin-sizing-loop.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 8d7e0d045250fa78a7e7d5a25cecee43bb75db3a Mon Sep 17 00:00:00 2001 -From: Paul Cornett -Date: Mon, 10 Nov 2014 04:13:18 +0000 -Subject: [PATCH] fix infinite sizing loop with GTK3 when using a non-default - target window, closes #16668 - -git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_3_0_BRANCH@78106 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 ---- - docs/changes.txt | 5 +++++ - src/gtk/scrolwin.cpp | 8 ++++++++ - 2 files changed, 13 insertions(+) - -diff --git a/src/gtk/scrolwin.cpp b/src/gtk/scrolwin.cpp -index 9b39077..c500288 100644 ---- a/src/gtk/scrolwin.cpp -+++ b/src/gtk/scrolwin.cpp -@@ -81,6 +81,14 @@ void wxScrollHelper::AdjustScrollbars() - { - int vw, vh; - m_targetWindow->GetVirtualSize(&vw, &vh); -+#ifdef __WXGTK3__ -+ if (m_targetWindow != m_win) -+ { -+ // setting wxPizza preferred size keeps GtkScrolledWindow from causing -+ // an infinite sizing loop -+ gtk_widget_set_size_request(m_win->m_wxwindow, vw, vh); -+ } -+#endif - - int w, h; - const wxSize availSize = GetSizeAvailableForScrollTarget( diff --git a/wxGTK3-3.0.2-size-alloc-fix.patch b/wxGTK3-3.0.2-size-alloc-fix.patch deleted file mode 100644 index 0e539d6..0000000 --- a/wxGTK3-3.0.2-size-alloc-fix.patch +++ /dev/null @@ -1,36 +0,0 @@ -diff -up wxWidgets-3.0.2/src/gtk/win_gtk.cpp.size-alloc-fix wxWidgets-3.0.2/src/gtk/win_gtk.cpp ---- wxWidgets-3.0.2/src/gtk/win_gtk.cpp.size-alloc-fix 2016-04-04 14:55:37.647728846 -0400 -+++ wxWidgets-3.0.2/src/gtk/win_gtk.cpp 2016-04-04 14:56:36.199637226 -0400 -@@ -192,8 +192,24 @@ static void pizza_remove(GtkContainer* c - } - - #ifdef __WXGTK3__ -+// Get preferred size of children, to avoid GTK+ warnings complaining -+// that they were size-allocated without asking their preferred size -+static void children_get_preferred_size(const GList* p) -+{ -+ for (; p; p = p->next) -+ { -+ const wxPizzaChild* child = static_cast(p->data); -+ if (gtk_widget_get_visible(child->widget)) -+ { -+ GtkRequisition req; -+ gtk_widget_get_preferred_size(child->widget, &req, NULL); -+ } -+ } -+} -+ - static void pizza_get_preferred_width(GtkWidget* widget, int* minimum, int* natural) - { -+ children_get_preferred_size(WX_PIZZA(widget)->m_children); - *minimum = 0; - gtk_widget_get_size_request(widget, natural, NULL); - if (*natural < 0) -@@ -202,6 +218,7 @@ static void pizza_get_preferred_width(Gt - - static void pizza_get_preferred_height(GtkWidget* widget, int* minimum, int* natural) - { -+ children_get_preferred_size(WX_PIZZA(widget)->m_children); - *minimum = 0; - gtk_widget_get_size_request(widget, NULL, natural); - if (*natural < 0) diff --git a/wxGTK3-3.0.2-spibuttfix.patch b/wxGTK3-3.0.2-spibuttfix.patch deleted file mode 100644 index 6747065..0000000 --- a/wxGTK3-3.0.2-spibuttfix.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -rupN wxWidgets-3.0.2-orig/src/gtk/spinbutt.cpp wxWidgets-3.0.2/src/gtk/spinbutt.cpp ---- wxWidgets-3.0.2-orig/src/gtk/spinbutt.cpp 2014-10-06 17:33:44.000000000 -0400 -+++ wxWidgets-3.0.2/src/gtk/spinbutt.cpp 2015-08-22 10:44:00.743403904 -0400 -@@ -92,6 +92,10 @@ bool wxSpinButton::Create(wxWindow *pare - g_object_ref(m_widget); - - gtk_entry_set_width_chars(GTK_ENTRY(m_widget), 0); -+#if GTK_CHECK_VERSION(3,12,0) -+ if (gtk_check_version(3,12,0) == NULL) -+ gtk_entry_set_max_width_chars(GTK_ENTRY(m_widget), 0); -+#endif - gtk_spin_button_set_wrap( GTK_SPIN_BUTTON(m_widget), - (int)(m_windowStyle & wxSP_WRAP) ); - diff --git a/wxGTK3-3.0.2-stc-gcc6.patch b/wxGTK3-3.0.2-stc-gcc6.patch deleted file mode 100644 index 119175c..0000000 --- a/wxGTK3-3.0.2-stc-gcc6.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 73e9e18ea09ffffcaac50237def0d9728a213c02 Mon Sep 17 00:00:00 2001 -From: Scott Talbert -Date: Sat, 20 Feb 2016 00:08:14 -0500 -Subject: [PATCH] Fix STC compilation with GCC6 - -Use std::abs() from instead of abs() from to avoid problems -with ambiguous overloads. - -Closes #17147. - -Closes https://github.com/wxWidgets/wxWidgets/pull/222 ---- - src/stc/scintilla/src/Editor.cxx | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/src/stc/scintilla/src/Editor.cxx b/src/stc/scintilla/src/Editor.cxx -index cd72953..2081df2 100644 ---- a/src/stc/scintilla/src/Editor.cxx -+++ b/src/stc/scintilla/src/Editor.cxx -@@ -11,6 +11,7 @@ - #include - #include - -+#include - #include - #include - #include -@@ -5841,9 +5842,9 @@ void Editor::GoToLine(int lineNo) { - } - - static bool Close(Point pt1, Point pt2) { -- if (abs(pt1.x - pt2.x) > 3) -+ if (std::abs(pt1.x - pt2.x) > 3) - return false; -- if (abs(pt1.y - pt2.y) > 3) -+ if (std::abs(pt1.y - pt2.y) > 3) - return false; - return true; - } diff --git a/wxGTK3-3.0.2-string-tests-gcc6.patch b/wxGTK3-3.0.2-string-tests-gcc6.patch deleted file mode 100644 index 6ed7767..0000000 --- a/wxGTK3-3.0.2-string-tests-gcc6.patch +++ /dev/null @@ -1,60 +0,0 @@ -From 01f62c02957cc1443ea761ddffe0b4322d987a1d Mon Sep 17 00:00:00 2001 -From: Vadim Zeitlin -Date: Sun, 21 Jun 2015 15:56:06 +0200 -Subject: [PATCH] Avoid warnings about narrowing casts in the long long tests. - -Recent g++ versions give -Wnarrowing warning when a value outside of the type -range is used to initialize a variable of this type in { }. Avoid it in the -long long tests using explicit casts as we already cast between long long and -unsigned long long values here anyhow. ---- - tests/strings/strings.cpp | 19 +++++++++++-------- - 1 file changed, 11 insertions(+), 8 deletions(-) - -diff --git a/tests/strings/strings.cpp b/tests/strings/strings.cpp -index b016294..78a3a9d 100644 ---- a/tests/strings/strings.cpp -+++ b/tests/strings/strings.cpp -@@ -589,14 +589,16 @@ enum - Number_Long = 16 // only for long tests - }; - -+#ifdef wxLongLong_t -+typedef wxLongLong_t TestValue_t; -+#else -+typedef long TestValue_t; -+#endif -+ - static const struct ToLongData - { - const wxChar *str; --#ifdef wxLongLong_t -- wxLongLong_t value; --#else -- long value; --#endif // wxLongLong_t -+ TestValue_t value; - int flags; - int base; - -@@ -618,7 +620,7 @@ static const struct ToLongData - - { wxT("-1"), -1, Number_Signed | Number_Long }, - // this is surprising but consistent with strtoul() behaviour -- { wxT("-1"), ULONG_MAX, Number_Unsigned | Number_Long }, -+ { wxT("-1"), (TestValue_t)ULONG_MAX, Number_Unsigned | Number_Long }, - - // this must overflow, even with 64 bit long - { wxT("922337203685477580711"), 0, Number_Invalid }, -@@ -626,8 +628,9 @@ static const struct ToLongData - #ifdef wxLongLong_t - { wxT("2147483648"), wxLL(2147483648), Number_LongLong }, - { wxT("-2147483648"), wxLL(-2147483648), Number_LongLong | Number_Signed }, -- { wxT("9223372036854775808"), wxULL(9223372036854775808), Number_LongLong | -- Number_Unsigned }, -+ { wxT("9223372036854775808"), -+ TestValue_t(wxULL(9223372036854775808)), -+ Number_LongLong | Number_Unsigned }, - #endif // wxLongLong_t - - // Base tests. diff --git a/wxGTK3-3.0.2-upstreamfixes.patch b/wxGTK3-3.0.2-upstreamfixes.patch deleted file mode 100644 index 44dbd01..0000000 --- a/wxGTK3-3.0.2-upstreamfixes.patch +++ /dev/null @@ -1,155 +0,0 @@ -diff -rupN wxWidgets-3.0.2-orig/src/generic/grid.cpp wxWidgets-3.0.2/src/generic/grid.cpp ---- wxWidgets-3.0.2-orig/src/generic/grid.cpp 2014-10-06 17:33:44.000000000 -0400 -+++ wxWidgets-3.0.2/src/generic/grid.cpp 2015-06-22 11:50:16.359029017 -0400 -@@ -2114,7 +2114,8 @@ void wxGridWindow::OnFocus(wxFocusEvent& - m_owner->GetGridCursorCol()); - const wxRect cursor = - m_owner->BlockToDeviceRect(cursorCoords, cursorCoords); -- Refresh(true, &cursor); -+ if (cursor != wxGridNoCellRect) -+ Refresh(true, &cursor); - } - - if ( !m_owner->GetEventHandler()->ProcessEvent( event ) ) -diff -rupN wxWidgets-3.0.2-orig/src/generic/listctrl.cpp wxWidgets-3.0.2/src/generic/listctrl.cpp ---- wxWidgets-3.0.2-orig/src/generic/listctrl.cpp 2014-10-06 17:33:44.000000000 -0400 -+++ wxWidgets-3.0.2/src/generic/listctrl.cpp 2015-06-22 12:12:26.838603542 -0400 -@@ -1935,6 +1935,13 @@ void wxListMainWindow::RefreshLines( siz - size_t visibleFrom, visibleTo; - GetVisibleLinesRange(&visibleFrom, &visibleTo); - -+ if ( lineFrom > visibleTo || lineTo < visibleFrom ) -+ { -+ // None of these lines are currently visible at all, don't bother -+ // doing anything. -+ return; -+ } -+ - if ( lineFrom < visibleFrom ) - lineFrom = visibleFrom; - if ( lineTo > visibleTo ) -diff -rupN wxWidgets-3.0.2-orig/src/gtk/aboutdlg.cpp wxWidgets-3.0.2/src/gtk/aboutdlg.cpp ---- wxWidgets-3.0.2-orig/src/gtk/aboutdlg.cpp 2014-10-06 17:33:44.000000000 -0400 -+++ wxWidgets-3.0.2/src/gtk/aboutdlg.cpp 2015-06-22 12:09:00.951644896 -0400 -@@ -23,7 +23,7 @@ - #include "wx/aboutdlg.h" - - #ifndef WX_PRECOMP -- #include "wx/utils.h" // for wxLaunchDefaultBrowser() -+ #include "wx/window.h" - #endif //WX_PRECOMP - - #include -@@ -131,7 +131,7 @@ static void wxGtkAboutDialogOnLink(GtkAb - } - #endif - --void wxAboutBox(const wxAboutDialogInfo& info, wxWindow* WXUNUSED(parent)) -+void wxAboutBox(const wxAboutDialogInfo& info, wxWindow* parent) - { - // don't create another dialog if one is already present - if ( !gs_aboutDialog ) -@@ -235,6 +235,11 @@ void wxAboutBox(const wxAboutDialogInfo& - g_signal_connect(dlg, "response", - G_CALLBACK(wxGtkAboutDialogOnClose), NULL); - -+ GtkWindow* gtkParent = NULL; -+ if (parent && parent->m_widget) -+ gtkParent = (GtkWindow*)gtk_widget_get_ancestor(parent->m_widget, GTK_TYPE_WINDOW); -+ gtk_window_set_transient_for(GTK_WINDOW(dlg), gtkParent); -+ - gtk_window_present(GTK_WINDOW(dlg)); - } - -diff -rupN wxWidgets-3.0.2-orig/src/gtk/filedlg.cpp wxWidgets-3.0.2/src/gtk/filedlg.cpp ---- wxWidgets-3.0.2-orig/src/gtk/filedlg.cpp 2014-10-06 17:33:44.000000000 -0400 -+++ wxWidgets-3.0.2/src/gtk/filedlg.cpp 2015-06-22 12:16:47.386285719 -0400 -@@ -187,7 +187,8 @@ bool wxFileDialog::Create(wxWindow *pare - const wxSize& sz, - const wxString& name) - { -- parent = GetParentForModalDialog(parent, style); -+ // wxFD_MULTIPLE has the same value as wxDIALOG_NO_PARENT -+ parent = GetParentForModalDialog(parent, style & ~wxFD_MULTIPLE); - - if (!wxFileDialogBase::Create(parent, message, defaultDir, defaultFileName, - wildCard, style, pos, sz, name)) -diff -rupN wxWidgets-3.0.2-orig/src/gtk/fontdlg.cpp wxWidgets-3.0.2/src/gtk/fontdlg.cpp ---- wxWidgets-3.0.2-orig/src/gtk/fontdlg.cpp 2014-10-06 17:33:44.000000000 -0400 -+++ wxWidgets-3.0.2/src/gtk/fontdlg.cpp 2015-06-22 11:51:23.827727490 -0400 -@@ -78,6 +78,7 @@ bool wxFontDialog::DoCreate(wxWindow *pa - gtk_parent = GTK_WINDOW(parent->m_widget); - - #if GTK_CHECK_VERSION(3,2,0) -+ g_type_ensure(PANGO_TYPE_FONT_FACE); - if (gtk_check_version(3,2,0) == NULL) - m_widget = gtk_font_chooser_dialog_new(wxGTK_CONV(message), gtk_parent); - else -diff -rupN wxWidgets-3.0.2-orig/src/gtk/print.cpp wxWidgets-3.0.2/src/gtk/print.cpp ---- wxWidgets-3.0.2-orig/src/gtk/print.cpp 2014-10-06 17:33:44.000000000 -0400 -+++ wxWidgets-3.0.2/src/gtk/print.cpp 2015-06-22 12:01:37.173889476 -0400 -@@ -32,7 +32,6 @@ - #include "wx/fontutil.h" - #include "wx/dynlib.h" - #include "wx/paper.h" --#include "wx/scopeguard.h" - #include "wx/modalhook.h" - - #include -@@ -612,6 +611,11 @@ wxGtkPrintDialog::wxGtkPrintDialog( wxWi - - m_parent = parent; - SetShowDialog(true); -+ -+ const wxPrintData& printData = m_printDialogData.GetPrintData(); -+ wxGtkPrintNativeData* native = -+ static_cast(printData.GetNativeData()); -+ native->SetPrintJob(gtk_print_operation_new()); - } - - wxGtkPrintDialog::wxGtkPrintDialog( wxWindow *parent, wxPrintData *data ) -@@ -625,11 +629,22 @@ wxGtkPrintDialog::wxGtkPrintDialog( wxWi - - m_parent = parent; - SetShowDialog(true); -+ -+ const wxPrintData& printData = m_printDialogData.GetPrintData(); -+ wxGtkPrintNativeData* native = -+ static_cast(printData.GetNativeData()); -+ native->SetPrintJob(gtk_print_operation_new()); - } - - - wxGtkPrintDialog::~wxGtkPrintDialog() - { -+ const wxPrintData& printData = m_printDialogData.GetPrintData(); -+ wxGtkPrintNativeData* native = -+ static_cast(printData.GetNativeData()); -+ GtkPrintOperation* printOp = native->GetPrintJob(); -+ g_object_unref(printOp); -+ native->SetPrintJob(NULL); - } - - // This is called even if we actually don't want the dialog to appear. -@@ -921,10 +936,9 @@ bool wxGtkPrinter::Print(wxWindow *paren - wxPrintData printdata = GetPrintDialogData().GetPrintData(); - wxGtkPrintNativeData *native = (wxGtkPrintNativeData*) printdata.GetNativeData(); - -- wxGtkObject printOp(gtk_print_operation_new()); -- native->SetPrintJob(printOp); -- wxON_BLOCK_EXIT_OBJ1(*native, wxGtkPrintNativeData::SetPrintJob, -- static_cast(NULL)); -+ // wxGtkPrintDialog needs to be created first as it creates the PrintOp -+ wxGtkPrintDialog dialog(parent, &m_printDialogData); -+ GtkPrintOperation* printOp = native->GetPrintJob(); - - wxPrinterToGtkData dataToSend; - dataToSend.printer = this; -@@ -937,7 +951,6 @@ bool wxGtkPrinter::Print(wxWindow *paren - - // This is used to setup the DC and - // show the dialog if desired -- wxGtkPrintDialog dialog( parent, &m_printDialogData ); - dialog.SetPrintDC(m_dc); - dialog.SetShowDialog(prompt); - diff --git a/wxGTK3-3.0.2-wayland-window-sizing1.patch b/wxGTK3-3.0.2-wayland-window-sizing1.patch deleted file mode 100644 index 34f026c..0000000 --- a/wxGTK3-3.0.2-wayland-window-sizing1.patch +++ /dev/null @@ -1,171 +0,0 @@ -From 41be4271e18a21acbcc30d1e61653190f8ef7a6d Mon Sep 17 00:00:00 2001 -From: Paul Cornett -Date: Fri, 5 Feb 2016 10:26:06 -0800 -Subject: [PATCH] Adapt window decorations cache for client-side decorations - -Fixes size calculations for TLWs created after the first one, -with Wayland, Mir and Broadway. See #17336 - -(cherry picked from commit 91ea4872813b90ff91702a11abbe644cb1e5044b) ---- - src/gtk/toplevel.cpp | 93 +++++++++++++++++++++++++++++++++++++++++++++++----- - 1 file changed, 84 insertions(+), 9 deletions(-) - -diff --git a/src/gtk/toplevel.cpp b/src/gtk/toplevel.cpp -index 7530b0f..c3d42e8 100644 ---- a/src/gtk/toplevel.cpp -+++ b/src/gtk/toplevel.cpp -@@ -40,6 +40,15 @@ - #endif - #ifdef GDK_WINDOWING_WAYLAND - #include -+ #define HAS_CLIENT_DECOR -+#endif -+#ifdef GDK_WINDOWING_MIR -+ #include -+ #define HAS_CLIENT_DECOR -+#endif -+#ifdef GDK_WINDOWING_BROADWAY -+ #include -+ #define HAS_CLIENT_DECOR - #endif - - #include "wx/gtk/private.h" -@@ -82,6 +91,26 @@ static enum { - static bool gs_decorCacheValid; - #endif - -+#ifdef HAS_CLIENT_DECOR -+static bool HasClientDecor(GtkWidget* widget) -+{ -+ GdkDisplay* display = gtk_widget_get_display(widget); -+#ifdef GDK_WINDOWING_WAYLAND -+ if (GDK_IS_WAYLAND_DISPLAY(display)) -+ return true; -+#endif -+#ifdef GDK_WINDOWING_MIR -+ if (GDK_IS_MIR_DISPLAY(display)) -+ return true; -+#endif -+#ifdef GDK_WINDOWING_BROADWAY -+ if (GDK_IS_BROADWAY_DISPLAY(display)) -+ return true; -+#endif -+ return false; -+} -+#endif // HAS_CLIENT_DECOR -+ - //----------------------------------------------------------------------------- - // RequestUserAttention related functions - //----------------------------------------------------------------------------- -@@ -235,8 +264,24 @@ size_allocate(GtkWidget*, GtkAllocation* alloc, wxTopLevelWindowGTK* win) - GtkAllocation a; - gtk_widget_get_allocation(win->m_widget, &a); - wxSize size(a.width, a.height); -- size.x += win->m_decorSize.left + win->m_decorSize.right; -- size.y += win->m_decorSize.top + win->m_decorSize.bottom; -+#ifdef HAS_CLIENT_DECOR -+ if (HasClientDecor(win->m_widget)) -+ { -+ GtkAllocation a2; -+ gtk_widget_get_allocation(win->m_mainWidget, &a2); -+ wxTopLevelWindowGTK::DecorSize decorSize; -+ decorSize.left = a2.x; -+ decorSize.right = a.width - a2.width - a2.x; -+ decorSize.top = a2.y; -+ decorSize.bottom = a.height - a2.height - a2.y; -+ win->GTKUpdateDecorSize(decorSize); -+ } -+ else -+#endif -+ { -+ size.x += win->m_decorSize.left + win->m_decorSize.right; -+ size.y += win->m_decorSize.top + win->m_decorSize.bottom; -+ } - win->m_width = size.x; - win->m_height = size.y; - -@@ -1062,8 +1107,13 @@ void wxTopLevelWindowGTK::DoMoveWindow(int WXUNUSED(x), int WXUNUSED(y), int WXU - void wxTopLevelWindowGTK::GTKDoGetSize(int *width, int *height) const - { - wxSize size(m_width, m_height); -- size.x -= m_decorSize.left + m_decorSize.right; -- size.y -= m_decorSize.top + m_decorSize.bottom; -+#ifdef HAS_CLIENT_DECOR -+ if (!HasClientDecor(m_widget)) -+#endif -+ { -+ size.x -= m_decorSize.left + m_decorSize.right; -+ size.y -= m_decorSize.top + m_decorSize.bottom; -+ } - if (size.x < 0) size.x = 0; - if (size.y < 0) size.y = 0; - #if wxUSE_LIBHILDON2 -@@ -1171,7 +1221,12 @@ void wxTopLevelWindowGTK::DoGetClientSize( int *width, int *height ) const - base_type::DoGetClientSize(width, height); - else - { -- GTKDoGetSize(width, height); -+ int w = m_width - (m_decorSize.left + m_decorSize.right); -+ int h = m_height - (m_decorSize.top + m_decorSize.bottom); -+ if (w < 0) w = 0; -+ if (h < 0) h = 0; -+ if (width) *width = w; -+ if (height) *height = h; - } - } - -@@ -1193,8 +1248,20 @@ void wxTopLevelWindowGTK::DoSetSizeHints( int minW, int minH, - hints.min_height = 1; - hints.max_width = INT_MAX; - hints.max_height = INT_MAX; -- const int decorSize_x = m_decorSize.left + m_decorSize.right; -- const int decorSize_y = m_decorSize.top + m_decorSize.bottom; -+ int decorSize_x; -+ int decorSize_y; -+#ifdef HAS_CLIENT_DECOR -+ if (HasClientDecor(m_widget)) -+ { -+ decorSize_x = 0; -+ decorSize_y = 0; -+ } -+ else -+#endif -+ { -+ decorSize_x = m_decorSize.left + m_decorSize.right; -+ decorSize_y = m_decorSize.top + m_decorSize.bottom; -+ } - if (minSize.x > decorSize_x) - hints.min_width = minSize.x - decorSize_x; - if (minSize.y > decorSize_y) -@@ -1221,11 +1288,19 @@ void wxTopLevelWindowGTK::DoSetSizeHints( int minW, int minH, - (GtkWindow*)m_widget, NULL, &hints, (GdkWindowHints)hints_mask); - } - --#ifdef GDK_WINDOWING_X11 - void wxTopLevelWindowGTK::GTKUpdateDecorSize(const DecorSize& decorSize) - { - if (!IsMaximized() && !IsFullScreen()) - GetCachedDecorSize() = decorSize; -+ -+#ifdef HAS_CLIENT_DECOR -+ if (HasClientDecor(m_widget)) -+ { -+ m_decorSize = decorSize; -+ return; -+ } -+#endif -+#ifdef GDK_WINDOWING_X11 - if (m_updateDecorSize && memcmp(&m_decorSize, &decorSize, sizeof(DecorSize))) - { - m_useCachedClientSize = false; -@@ -1292,8 +1367,8 @@ void wxTopLevelWindowGTK::GTKUpdateDecorSize(const DecorSize& decorSize) - showEvent.SetEventObject(this); - HandleWindowEvent(showEvent); - } --} - #endif // GDK_WINDOWING_X11 -+} - - wxTopLevelWindowGTK::DecorSize& wxTopLevelWindowGTK::GetCachedDecorSize() - { diff --git a/wxGTK3-3.0.2-wayland-window-sizing2.patch b/wxGTK3-3.0.2-wayland-window-sizing2.patch deleted file mode 100644 index c32b8be..0000000 --- a/wxGTK3-3.0.2-wayland-window-sizing2.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 0388ce8e25535415d9bdd79ce14eb20e73859279 Mon Sep 17 00:00:00 2001 -From: Paul Cornett -Date: Sat, 6 Feb 2016 16:07:28 -0800 -Subject: [PATCH] Allow SetClientSize() to set correct size even when size of - window decorations is not known - -This should allow correct sizing of first TLW (when using SetClientSize()) -with backends using client-side decorations such as Wayland. - -(cherry picked from commit bc4df78421a5b1e6fd9b218e89d03e59bd846d0a) ---- - src/gtk/toplevel.cpp | 27 +++++++++++++++++++++++++++ - 1 file changed, 27 insertions(+) - -diff --git a/src/gtk/toplevel.cpp b/src/gtk/toplevel.cpp -index c3d42e8..a52dad0 100644 ---- a/src/gtk/toplevel.cpp -+++ b/src/gtk/toplevel.cpp -@@ -1194,6 +1194,14 @@ void wxTopLevelWindowGTK::DoSetSize( int x, int y, int width, int height, int si - } - } - -+extern "C" { -+static gboolean reset_size_request(void* data) -+{ -+ gtk_widget_set_size_request(GTK_WIDGET(data), -1, -1); -+ return false; -+} -+} -+ - void wxTopLevelWindowGTK::DoSetClientSize(int width, int height) - { - base_type::DoSetClientSize(width, height); -@@ -1202,6 +1210,25 @@ void wxTopLevelWindowGTK::DoSetClientSize(int width, int height) - // Has to be done after calling base because it calls SetSize, - // which sets this true - m_deferShowAllowed = false; -+ -+ if (m_wxwindow) -+ { -+ // If window is not resizable or not yet shown, set size request on -+ // client widget, to make it more likely window will get correct size -+ // even if our decorations size cache is incorrect (as it will be before -+ // showing first TLW). -+ if (!gtk_window_get_resizable(GTK_WINDOW(m_widget))) -+ { -+ gtk_widget_set_size_request(m_widget, -1, -1); -+ gtk_widget_set_size_request(m_wxwindow, m_clientWidth, m_clientHeight); -+ } -+ else if (!IsShown()) -+ { -+ gtk_widget_set_size_request(m_wxwindow, m_clientWidth, m_clientHeight); -+ // Cancel size request at next idle to allow resizing -+ g_idle_add_full(G_PRIORITY_LOW, reset_size_request, m_wxwindow, NULL); -+ } -+ } - } - - void wxTopLevelWindowGTK::DoGetClientSize( int *width, int *height ) const diff --git a/wxGTK3-3.0.2-wayland.patch b/wxGTK3-3.0.2-wayland.patch deleted file mode 100644 index b17bac0..0000000 --- a/wxGTK3-3.0.2-wayland.patch +++ /dev/null @@ -1,108 +0,0 @@ -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-3.0.2-wxgetkeystate.patch b/wxGTK3-3.0.2-wxgetkeystate.patch deleted file mode 100644 index 7ab7093..0000000 --- a/wxGTK3-3.0.2-wxgetkeystate.patch +++ /dev/null @@ -1,121 +0,0 @@ -From 98065821bbf0178981b50515094f565b703fcaa8 Mon Sep 17 00:00:00 2001 -From: Scott Talbert -Date: Tue, 13 Sep 2016 13:24:12 +0200 -Subject: [PATCH] Fix wxGetKeyState() on non-X11 wxGTK backends (e.g., Wayland) - -wxGetKeyState() does not currently work on non-X11 GTK backends, and in some -cases it has been reported to crash. It seems that the most likely use case -for wxGetKeyState() is to query the modifier keys, so on non-X11 backends, use -GTK+ calls to retrieve the modifier key state. - -Non-modifier keys are not currently implemented, update the documentation to -mention this. - -Closes https://github.com/wxWidgets/wxWidgets/pull/322 - -(this is a combined backport of 1033fb048dec849906f76ece25f154e6a61fde4e, -9f9c09e24a7f9d86ea51997bd4c55c1ddb7c3159 and -a18fe083cc91bee442863c8ab7f97d6549f2b75c from master) ---- - interface/wx/utils.h | 3 +++ - src/unix/utilsx11.cpp | 62 +++++++++++++++++++++++++++++++++++++++++++++++++-- - 2 files changed, 63 insertions(+), 2 deletions(-) - -diff --git a/interface/wx/utils.h b/interface/wx/utils.h -index 0bac1c0..f127a74 100644 ---- a/interface/wx/utils.h -+++ b/interface/wx/utils.h -@@ -372,6 +372,9 @@ wxString wxGetDisplayName(); - Even though there are virtual key codes defined for mouse buttons, they - cannot be used with this function currently. - -+ In wxGTK, this function can be only used with modifier keys (@c WXK_ALT, @c -+ WXK_CONTROL and @c WXK_SHIFT) when not using X11 backend currently. -+ - @header{wx/utils.h} - */ - bool wxGetKeyState(wxKeyCode key); -diff --git a/src/unix/utilsx11.cpp b/src/unix/utilsx11.cpp -index 6b35551..efc0837 100644 ---- a/src/unix/utilsx11.cpp -+++ b/src/unix/utilsx11.cpp -@@ -809,7 +809,7 @@ WXKeySym wxCharCodeWXToX(int id) - // check current state of a key - // ---------------------------------------------------------------------------- - --bool wxGetKeyState(wxKeyCode key) -+static bool wxGetKeyStateX11(wxKeyCode key) - { - wxASSERT_MSG(key != WXK_LBUTTON && key != WXK_RBUTTON && key != - WXK_MBUTTON, wxT("can't use wxGetKeyState() for mouse buttons")); -@@ -851,11 +851,69 @@ bool wxGetKeyState(wxKeyCode key) - // with the least-significant bit in the byte representing key 8N. - char key_vector[32]; - XQueryKeymap(pDisplay, key_vector); -- return key_vector[keyCode >> 3] & (1 << (keyCode & 7)); -+ return (key_vector[keyCode >> 3] & (1 << (keyCode & 7))) != 0; - } - - #endif // !defined(__WXGTK__) || defined(GDK_WINDOWING_X11) - -+// We need to use GDK functions when using wxGTK with a non-X11 backend, the -+// X11 code above can't work in this case. -+#ifdef __WXGTK__ -+ -+// gdk_keymap_get_modifier_state() is only available since 3.4 -+#if GTK_CHECK_VERSION(3,4,0) -+ -+#define wxHAS_GETKEYSTATE_GTK -+ -+extern GtkWidget *wxGetRootWindow(); -+ -+static bool wxGetKeyStateGTK(wxKeyCode key) -+{ -+ if (gtk_check_version(3,4,0) != NULL) -+ return false; -+ -+ GdkDisplay* display = gtk_widget_get_display(wxGetRootWindow()); -+ GdkKeymap* keymap = gdk_keymap_get_for_display(display); -+ guint state = gdk_keymap_get_modifier_state(keymap); -+ guint mask = 0; -+ switch (key) -+ { -+ case WXK_ALT: -+ mask = GDK_MOD1_MASK; -+ break; -+ -+ case WXK_CONTROL: -+ mask = GDK_CONTROL_MASK; -+ break; -+ -+ case WXK_SHIFT: -+ mask = GDK_SHIFT_MASK; -+ break; -+ -+ default: -+ wxFAIL_MSG(wxS("Unsupported key, only modifiers can be used")); -+ return false; -+ } -+ return (state & mask) != 0; -+} -+ -+#endif // GTK+ 3.4 -+#endif // __WXGTK__ -+ -+bool wxGetKeyState(wxKeyCode key) -+{ -+#ifdef wxHAS_GETKEYSTATE_GTK -+ GdkDisplay* display = gtk_widget_get_display(wxGetRootWindow()); -+ const char* name = g_type_name(G_TYPE_FROM_INSTANCE(display)); -+ if (strcmp(name, "GdkX11Display") != 0) -+ { -+ return wxGetKeyStateGTK(key); -+ } -+#endif // GTK+ 3.4+ -+ -+ return wxGetKeyStateX11(key); -+} -+ - // ---------------------------------------------------------------------------- - // Launch document with default app - // ---------------------------------------------------------------------------- diff --git a/wxGTK3-3.0.2-wxpgchoicesdata-protected-destructor.patch b/wxGTK3-3.0.2-wxpgchoicesdata-protected-destructor.patch deleted file mode 100644 index de1d6f9..0000000 --- a/wxGTK3-3.0.2-wxpgchoicesdata-protected-destructor.patch +++ /dev/null @@ -1,21 +0,0 @@ -From dcc23ceba8e1dba828e8b3e4633ac77acaad7562 Mon Sep 17 00:00:00 2001 -From: Robin Dunn -Date: Thu, 5 Mar 2015 15:14:23 -0800 -Subject: [PATCH] Change ~wxPGChoicesData from private to protected - ---- - include/wx/propgrid/property.h | 1 + - interface/wx/propgrid/property.h | 3 +++ - 2 files changed, 4 insertions(+) - -diff --git a/include/wx/propgrid/property.h b/include/wx/propgrid/property.h -index bc61848..ab1439d 100644 ---- a/include/wx/propgrid/property.h -+++ b/include/wx/propgrid/property.h -@@ -803,6 +803,7 @@ class WXDLLIMPEXP_PROPGRID wxPGChoicesData : public wxObjectRefData - private: - wxVector m_items; - -+protected: - virtual ~wxPGChoicesData(); - }; diff --git a/wxGTK3-3.0.2-abicheck.patch b/wxGTK3-3.0.3-abicheck.patch similarity index 100% rename from wxGTK3-3.0.2-abicheck.patch rename to wxGTK3-3.0.3-abicheck.patch diff --git a/wxGTK3.spec b/wxGTK3.spec index 8a1f065..1eb8740 100644 --- a/wxGTK3.spec +++ b/wxGTK3.spec @@ -9,110 +9,35 @@ %global gtkver 3 %endif +#For git snapshots, set to 0 to use release instead: +%global usesnapshot 1 +%if 0%{?usesnapshot} +%global commit0 9518d52ba80a22c6e6a6414e9137e66013d2d191 +%global shortcommit0 %(c=%{commit0}; echo ${c:0:7}) +#What doc version to use with the snapshot (usually last release): +%global docversion 3.0.2 +%endif + Name: %{wxgtkname} -Version: 3.0.2 -Release: 30%{?dist} +Version: 3.0.3 +Release: 0.1%{?usesnapshot:.git%{shortcommit0}}%{?dist} Summary: GTK port of the wxWidgets GUI library License: wxWidgets Group: System Environment/Libraries URL: http://www.wxwidgets.org/ -Source0: http://downloads.sf.net/wxwindows/%{srcname}-%{version}.tar.bz2 -Source1: http://downloads.sf.net/wxwindows/%{srcname}-%{version}-docs-html.tar.bz2 + +%if 0%{?usesnapshot} +Source0: https://github.com/%{srcname}/%{srcname}/archive/%{commit0}.tar.gz#/%{srcname}-%{shortcommit0}.tar.gz +%else +Source0: https://github.com/%{srcname}/%{srcname}/releases/download/v%{version}/%{srcname}-%{version}.tar.bz2 +%global docversion %{version} +%endif +Source1: https://github.com/%{srcname}/%{srcname}/releases/download/v%{docversion}/%{srcname}-%{docversion}-docs-html.tar.bz2 Source10: wx-config # https://bugzilla.redhat.com/show_bug.cgi?id=1225148 # remove abort when ABI check fails # Backport from wxGTK Patch0: %{name}-%{version}-abicheck.patch -# This is a collection of fixes from upstream -# to fix warnings and crashes. See bug for details: -# https://bugzilla.redhat.com/show_bug.cgi?id=1234211 -Patch1: %{name}-%{version}-upstreamfixes.patch -# This fixes the spinbutton on gtk 3.12+ -# For more details, see the upstream commit: -# https://github.com/wxWidgets/wxWidgets/commit/312ae4c92cec95954557347c2b7a9e24d4398a59 -Patch2: %{name}-%{version}-spibuttfix.patch -# This fixes checkbox/radiobutton on gtk 3.14+ -# 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 -# This fixes wxSTC compilation with GCC6 -# For more details, see the upstream commit: -# https://github.com/wxWidgets/wxWidgets/commit/73e9e18ea09ffffcaac50237def0d9728a213c02 -Patch5: %{name}-%{version}-stc-gcc6.patch -# This fixes compilation of the strings tests with GCC6 -# For more details, see the upstream commit: -# https://github.com/wxWidgets/wxWidgets/commit/01f62c02957cc1443ea761ddffe0b4322d987a1d -Patch6: %{name}-%{version}-string-tests-gcc6.patch -# This prevents wxStaticText from widening each time SetLabel() is called -# For more details, see the upstream commit: -# https://github.com/wxWidgets/wxWidgets/commit/2bc3721f065fd7d47674ccaf7e8d9d6cc195aab5 -Patch7: %{name}-%{version}-getbestsize.patch -# These patches fix top level window sizing under Wayland -# For more details, see the upstream commits: -# https://github.com/wxWidgets/wxWidgets/commit/41be4271e18a21acbcc30d1e61653190f8ef7a6d -# https://github.com/wxWidgets/wxWidgets/commit/0388ce8e25535415d9bdd79ce14eb20e73859279 -Patch8: %{name}-%{version}-wayland-window-sizing1.patch -Patch9: %{name}-%{version}-wayland-window-sizing2.patch -# This patch adds docs for the wxEVT_MEDIA_XXX event types (for Phoenix) -# For more details, see the upstream commits: -# https://github.com/wxWidgets/wxWidgets/commit/03903c1e459f108e0c464db24064e4cde84f174a -Patch10: %{name}-%{version}-media-docs.patch -# Fixes issue with size allocation in GTK 3.19+ -# For more details, see the upstream commit: -# https://github.com/wxWidgets/wxWidgets/commit/9fea81c069f9d803d79c4ce82f87a00a6e10b490 -Patch11: %{name}-%{version}-size-alloc-fix.patch -# Fixes the stop function of wxFontEnumerator -# For more details, see the upstream commit: -# https://github.com/wxWidgets/wxWidgets/commit/a19e512e80acdb2a777c3e44923ad0b1178db35a -Patch12: %{name}-%{version}-font-enumerator-stop.patch -# Fixes wxNativeFontInfo::InitFromFont() -# For more details, see the upstream commit: -# https://github.com/wxWidgets/wxWidgets/commit/238a948ed01f27e05e2c0e08932e8da207590648 -Patch13: %{name}-%{version}-init-from-font.patch -# Fixes wxGetKeyState() from crashing on Wayland -# For more details, see the upstream commits (first is just a dependency patch): -# https://github.com/wxWidgets/wxWidgets/commit/2dd407609b8987634180c045e9a6d131db6f947e -# https://github.com/wxWidgets/wxWidgets/commit/79676e1e9d307c479c5aefa70c0fd052341d697e -# https://github.com/wxWidgets/wxWidgets/commit/98065821bbf0178981b50515094f565b703fcaa8 -Patch14: %{name}-%{version}-gtk-show-uri.patch -Patch15: %{name}-%{version}-gtk-show-uri1.patch -Patch16: %{name}-%{version}-wxgetkeystate.patch -# Fixes crash in wxGCDC::DrawEllipticArc() -# For more details, see the upstream commit: -# https://github.com/wxWidgets/wxWidgets/commit/148971013ee48926dfe153ca39c94be92acde37c -Patch17: %{name}-%{version}-draw-elliptic-arc-crash.patch -# Fixes drag and drop issues with filenames containing percent symbols -# For more details, see the upstream commits: -# https://github.com/wxWidgets/wxWidgets/commit/8f29de5231e348d356b5f3962225362e8fd87ba9 -# https://github.com/wxWidgets/wxWidgets/commit/0f9f942a5bbe0ed9f07ea2e1fef90a7e2db768e5 -Patch18: %{name}-%{version}-fix-percent-dnd.patch -Patch19: %{name}-%{version}-fix-percent-dnd2.patch -# Fixes rename issues in Filezilla with overlay scrollbars disabled - note: the -# size-alloc-fix patch is also required. -# For more details, see the upstream commit: -# https://github.com/wxWidgets/wxWidgets/commit/8d7e0d045250fa78a7e7d5a25cecee43bb75db3a -Patch20: %{name}-%{version}-scrolwin-sizing-loop.patch -# Fixes sizing issues on GTK 3.20+ -# For more details, see the upstream commit: -# https://github.com/wxWidgets/wxWidgets/commit/6475376931bf316a4fd791114408f7c1fc2fe836 -Patch21: %{name}-%{version}-gtk-sizing-problems.patch -# Fixes non-default window background color with GTK+ >= 3.20 -# For more details, see the upstream commit: -# https://github.com/wxWidgets/wxWidgets/commit/553ec7537c30636ddf6cbc157373477fb2e9da41 -Patch22: %{name}-%{version}-background-color.patch -# Fixes paint clipping region with GTK+ >= 3.20 -# This resolves a regression in poedit after the -29 update -# For more details, see the upstream commit: -# https://github.com/wxWidgets/wxWidgets/commit/cd8811bf142172c4920ba13a685472ceb405ef78 -Patch23: %{name}-%{version}-paint-clipping-region.patch -# Changes ~wxPGChoicesData from private to protected -# For more details, see the upstream commit: -# https://github.com/wxWidgets/wxWidgets/commit/dcc23ceba8e1dba828e8b3e4633ac77acaad7562 -Patch24: %{name}-%{version}-wxpgchoicesdata-protected-destructor.patch BuildRequires: gtk%{gtkver}-devel #Note webkitgtk (GTK2) does not appear to be supported @@ -245,7 +170,11 @@ This package provides XML documentation for the %{srcname} library. %prep +%if 0%{?usesnapshot} +%autosetup -n %{srcname}-%{commit0} -a 1 -p1 +%else %autosetup -n %{srcname}-%{version} -a 1 -p1 +%endif # patch some installed files to avoid conflicts with 2.8.* sed -i -e 's|aclocal)|aclocal/wxwin3.m4)|' Makefile.in @@ -253,7 +182,7 @@ sed -i -e 's|wxstd.mo|wxstd3.mo|' Makefile.in sed -i -e 's|wxmsw.mo|wxmsw3.mo|' Makefile.in # rename docs directory -mv %{srcname}-%{version} html +mv %{srcname}-%{docversion} html # fix plugin dir for 64-bit @@ -273,6 +202,13 @@ export LDFLAGS="-Wl,--as-needed" # Trick configure into using pkg-config for cppunit-config export CPPUNIT_CONFIG="/usr/bin/pkg-config cppunit" +%if 0%{?usesnapshot} +#For snapshots, mo files need to be generated +pushd locale +make allmo +popd +%endif + %configure \ --with-gtk=%{gtkver} \ --with-opengl \ @@ -284,7 +220,7 @@ export CPPUNIT_CONFIG="/usr/bin/pkg-config cppunit" --disable-rpath \ --enable-ipv6 -make %{?_smp_mflags} +%make_build pushd docs/doxygen WX_SKIP_DOXYGEN_VERSION_CHECK=1 ./regen.sh xml @@ -414,6 +350,9 @@ fi %doc docs/doxygen/out/xml/* %changelog +* Sat Dec 10 2016 Jeremy Newton - 3.0.3-0.1.git9518d52 +- Update to git snapshot + * Mon Nov 21 2016 Scott Talbert - 3.0.2-30 - Fix poedit regression in -29 - add paint clipping region patch (#1396747) - Add patch to change ~wxPGChoicesData from private to protected