Update to git snapshot

epel8
Mystro256 8 years ago
parent fe5a6f06ce
commit 37d5bdf016

1
.gitignore vendored

@ -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

@ -1,2 +1 @@
67844da5ed54c1a09d8d4ebe32a5e00a wxWidgets-3.0.2-docs-html.tar.bz2
ba4cd1f3853d0cd49134c5ae028ad080 wxWidgets-3.0.2.tar.bz2
f1b6f528f6dc5d3a83d1d484b08a35f9 wxWidgets-9518d52.tar.gz

@ -1,32 +0,0 @@
From 553ec7537c30636ddf6cbc157373477fb2e9da41 Mon Sep 17 00:00:00 2001
From: Paul Cornett <paulcor@users.noreply.github.com>
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:

@ -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)

@ -1,38 +0,0 @@
From 148971013ee48926dfe153ca39c94be92acde37c Mon Sep 17 00:00:00 2001
From: Paul Cornett <paulcor@bullseye.com>
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 );
}

@ -1,62 +0,0 @@
commit 8f29de5231e348d356b5f3962225362e8fd87ba9
Author: Tim Kosse <tim.kosse@filezilla-project.org>
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<char*>(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;

@ -1,35 +0,0 @@
commit 0f9f942a5bbe0ed9f07ea2e1fef90a7e2db768e5
Author: Paul Cornett <paulcor@users.noreply.github.com>
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<char*>(buf);
+ char* out = static_cast<char*>(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;

@ -1,47 +0,0 @@
From a19e512e80acdb2a777c3e44923ad0b1178db35a Mon Sep 17 00:00:00 2001
From: Scott Talbert <swt@techie.net>
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);

@ -1,29 +0,0 @@
From 2bc3721f065fd7d47674ccaf7e8d9d6cc195aab5 Mon Sep 17 00:00:00 2001
From: Paul Cornett <paulcor@users.noreply.github.com>
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

@ -1,48 +0,0 @@
From 2dd407609b8987634180c045e9a6d131db6f947e Mon Sep 17 00:00:00 2001
From: Paul Cornett <paulcor@users.noreply.github.com>
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 <gdk/gdk.h>
+#include <gtk/gtk.h>
#ifdef GDK_WINDOWING_X11
#include <gdk/gdkx.h>
#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

@ -1,27 +0,0 @@
From 79676e1e9d307c479c5aefa70c0fd052341d697e Mon Sep 17 00:00:00 2001
From: Vadim Zeitlin <vadim@wxwidgets.org>
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)

@ -1,166 +0,0 @@
From 6475376931bf316a4fd791114408f7c1fc2fe836 Mon Sep 17 00:00:00 2001
From: Paul Cornett <paulcor@users.noreply.github.com>
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<wxWindowGTK*>(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()

@ -1,39 +0,0 @@
From 238a948ed01f27e05e2c0e08932e8da207590648 Mon Sep 17 00:00:00 2001
From: Scott Talbert <swt@techie.net>
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

@ -1,54 +0,0 @@
From 03903c1e459f108e0c464db24064e4cde84f174a Mon Sep 17 00:00:00 2001
From: Vadim Zeitlin <vadim@wxwidgets.org>
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;

@ -1,40 +0,0 @@
From cd8811bf142172c4920ba13a685472ceb405ef78 Mon Sep 17 00:00:00 2001
From: Paul Cornett <paulcor@users.noreply.github.com>
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);

@ -1,31 +0,0 @@
From 8d7e0d045250fa78a7e7d5a25cecee43bb75db3a Mon Sep 17 00:00:00 2001
From: Paul Cornett <paulcor@bullseye.com>
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(

@ -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<wxPizzaChild*>(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)

@ -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) );

@ -1,39 +0,0 @@
From 73e9e18ea09ffffcaac50237def0d9728a213c02 Mon Sep 17 00:00:00 2001
From: Scott Talbert <swt@techie.net>
Date: Sat, 20 Feb 2016 00:08:14 -0500
Subject: [PATCH] Fix STC compilation with GCC6
Use std::abs() from <cmath> instead of abs() from <math.h> 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 <ctype.h>
#include <assert.h>
+#include <cmath>
#include <string>
#include <vector>
#include <map>
@@ -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;
}

@ -1,60 +0,0 @@
From 01f62c02957cc1443ea761ddffe0b4322d987a1d Mon Sep 17 00:00:00 2001
From: Vadim Zeitlin <vadim@wxwidgets.org>
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.

@ -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 <gtk/gtk.h>
@@ -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 <gtk/gtk.h>
@@ -612,6 +611,11 @@ wxGtkPrintDialog::wxGtkPrintDialog( wxWi
m_parent = parent;
SetShowDialog(true);
+
+ const wxPrintData& printData = m_printDialogData.GetPrintData();
+ wxGtkPrintNativeData* native =
+ static_cast<wxGtkPrintNativeData*>(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<wxGtkPrintNativeData*>(printData.GetNativeData());
+ native->SetPrintJob(gtk_print_operation_new());
}
wxGtkPrintDialog::~wxGtkPrintDialog()
{
+ const wxPrintData& printData = m_printDialogData.GetPrintData();
+ wxGtkPrintNativeData* native =
+ static_cast<wxGtkPrintNativeData*>(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<GtkPrintOperation> printOp(gtk_print_operation_new());
- native->SetPrintJob(printOp);
- wxON_BLOCK_EXIT_OBJ1(*native, wxGtkPrintNativeData::SetPrintJob,
- static_cast<GtkPrintOperation*>(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);

@ -1,171 +0,0 @@
From 41be4271e18a21acbcc30d1e61653190f8ef7a6d Mon Sep 17 00:00:00 2001
From: Paul Cornett <paulcor@users.noreply.github.com>
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 <gdk/gdkwayland.h>
+ #define HAS_CLIENT_DECOR
+#endif
+#ifdef GDK_WINDOWING_MIR
+ #include <gdk/gdkmir.h>
+ #define HAS_CLIENT_DECOR
+#endif
+#ifdef GDK_WINDOWING_BROADWAY
+ #include <gdk/gdkbroadway.h>
+ #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()
{

@ -1,59 +0,0 @@
From 0388ce8e25535415d9bdd79ce14eb20e73859279 Mon Sep 17 00:00:00 2001
From: Paul Cornett <paulcor@users.noreply.github.com>
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

@ -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

@ -1,121 +0,0 @@
From 98065821bbf0178981b50515094f565b703fcaa8 Mon Sep 17 00:00:00 2001
From: Scott Talbert <swt@techie.net>
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
// ----------------------------------------------------------------------------

@ -1,21 +0,0 @@
From dcc23ceba8e1dba828e8b3e4633ac77acaad7562 Mon Sep 17 00:00:00 2001
From: Robin Dunn <robin@alldunn.com>
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<wxPGChoiceEntry> m_items;
+protected:
virtual ~wxPGChoicesData();
};

@ -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 <alexjnewt AT hotmail DOT com> - 3.0.3-0.1.git9518d52
- Update to git snapshot
* Mon Nov 21 2016 Scott Talbert <swt@techie.net> - 3.0.2-30
- Fix poedit regression in -29 - add paint clipping region patch (#1396747)
- Add patch to change ~wxPGChoicesData from private to protected

Loading…
Cancel
Save