summaryrefslogtreecommitdiff
path: root/net-p2p/amule/files/amule-2.3.2-fix-crash-closing-last-search-tab-2.patch
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2018-06-23 07:00:28 +0100
committerV3n3RiX <venerix@redcorelinux.org>2018-06-23 07:00:28 +0100
commite23cdda4dbb0c83b9e682ab5e916085a35203da5 (patch)
tree5a4ac448a3b288b731c24d947e0ce52df3cab07b /net-p2p/amule/files/amule-2.3.2-fix-crash-closing-last-search-tab-2.patch
parent8187a741807f3e9a9e26304973cf18087dcf2560 (diff)
gentoo resync : 23.06.2018
Diffstat (limited to 'net-p2p/amule/files/amule-2.3.2-fix-crash-closing-last-search-tab-2.patch')
-rw-r--r--net-p2p/amule/files/amule-2.3.2-fix-crash-closing-last-search-tab-2.patch159
1 files changed, 159 insertions, 0 deletions
diff --git a/net-p2p/amule/files/amule-2.3.2-fix-crash-closing-last-search-tab-2.patch b/net-p2p/amule/files/amule-2.3.2-fix-crash-closing-last-search-tab-2.patch
new file mode 100644
index 000000000000..e47970beb0c8
--- /dev/null
+++ b/net-p2p/amule/files/amule-2.3.2-fix-crash-closing-last-search-tab-2.patch
@@ -0,0 +1,159 @@
+From 4c94c2d9f3be8b9068966f15aebc29b8c9b706ab Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?D=C3=A9vai=20Tam=C3=A1s?= <gonosztopi@amule.org>
+Date: Mon, 17 Oct 2016 22:14:26 +0200
+Subject: [PATCH] Apply the workaround only if needed
+
+This way it'll be easy for us to remove the workaround once wxWidgets fixes
+the bug.
+---
+ docs/Changelog | 4 ++++
+ src/MuleNotebook.cpp | 19 ++++++++++++++-----
+ src/MuleNotebook.h | 8 ++++++++
+ 3 files changed, 26 insertions(+), 5 deletions(-)
+
+diff --git a/docs/Changelog b/docs/Changelog
+index 7dbff70b2..e9176dd51 100644
+--- a/docs/Changelog
++++ b/docs/Changelog
+@@ -2,6 +2,10 @@ Version 2.4.0 - The river knows.
+ ----------
+ 201?-??-??
+
++ gaffatape:
++ * Workaround for bug in wxWidgets causing aMule to crash on
++ closing the last search tab
++
+ GonoszTopi:
+ * Fix restoring toolbar orientation on 'Cancel'
+
+diff --git a/src/MuleNotebook.cpp b/src/MuleNotebook.cpp
+index 4ab23ce18..5d3ad0453 100644
+--- a/src/MuleNotebook.cpp
++++ b/src/MuleNotebook.cpp
+@@ -32,7 +32,10 @@
+
+ DEFINE_LOCAL_EVENT_TYPE(wxEVT_COMMAND_MULENOTEBOOK_PAGE_CLOSING)
+ DEFINE_LOCAL_EVENT_TYPE(wxEVT_COMMAND_MULENOTEBOOK_ALL_PAGES_CLOSED)
++
++#if MULE_NEEDS_DELETEPAGE_WORKAROUND
+ DEFINE_LOCAL_EVENT_TYPE(wxEVT_COMMAND_MULENOTEBOOK_DELETE_PAGE)
++#endif
+
+ BEGIN_EVENT_TABLE(CMuleNotebook, wxNotebook)
+ EVT_RIGHT_DOWN(CMuleNotebook::OnRMButton)
+@@ -45,9 +48,12 @@ BEGIN_EVENT_TABLE(CMuleNotebook, wxNotebook)
+ EVT_LEFT_UP(CMuleNotebook::OnMouseButtonRelease)
+ EVT_MIDDLE_UP(CMuleNotebook::OnMouseButtonRelease)
+ EVT_MOTION(CMuleNotebook::OnMouseMotion)
++#if MULE_NEEDS_DELETEPAGE_WORKAROUND
+ EVT_MULENOTEBOOK_DELETE_PAGE(wxID_ANY, CMuleNotebook::OnDeletePage)
++#endif
+ END_EVENT_TABLE()
+
++
+ CMuleNotebook::CMuleNotebook( wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name )
+ : wxNotebook(parent, id, pos, size, style, name)
+ {
+@@ -62,11 +68,14 @@ CMuleNotebook::~CMuleNotebook()
+ DeleteAllPages();
+ }
+
++
++#if MULE_NEEDS_DELETEPAGE_WORKAROUND
+ void CMuleNotebook::OnDeletePage(wxBookCtrlEvent& evt)
+ {
+ int page = evt.GetSelection();
+ DeletePage(page);
+ }
++#endif // MULE_NEEDS_DELETEPAGE_WORKAROUND
+
+
+ bool CMuleNotebook::DeletePage(int nPage)
+@@ -208,7 +217,6 @@ void CMuleNotebook::OnPopupCloseOthers(wxCommandEvent& WXUNUSED(evt))
+
+ void CMuleNotebook::OnMouseButtonRelease(wxMouseEvent &event)
+ {
+-
+ if (GetImageList() == NULL) {
+ // This Mulenotebook has no images on tabs, so nothing to do.
+ event.Skip();
+@@ -224,7 +232,7 @@ void CMuleNotebook::OnMouseButtonRelease(wxMouseEvent &event)
+ if ((tab != -1) && (((flags == wxNB_HITTEST_ONICON) && event.LeftUp()) ||
+ ((flags == wxNB_HITTEST_ONLABEL) && event.MiddleUp()))) {
+ // User did click on a 'x' or middle click on the label
+-
++#if MULE_NEEDS_DELETEPAGE_WORKAROUND
+ /* WORKAROUND: Instead of calling DeletePage, we need to wait for the
+ * mouse release signal to reach Gtk. Inconsistent with normal wxEvent
+ * behaviour the button release handler in wxWidgets don't evaluate
+@@ -232,16 +240,18 @@ void CMuleNotebook::OnMouseButtonRelease(wxMouseEvent &event)
+ wxNotebookEvent evt( wxEVT_COMMAND_MULENOTEBOOK_DELETE_PAGE, GetId(), tab );
+ evt.SetEventObject(this);
+ AddPendingEvent( evt );
++#else
++ DeletePage(tab);
++#endif // MULE_NEEDS_DELETEPAGE_WORKAROUND
+ } else {
+ // Is not a 'x'. Send this event up.
+ event.Skip();
+ }
+-
+ }
+
++
+ void CMuleNotebook::OnMouseMotion(wxMouseEvent &event)
+ {
+-
+ if (GetImageList() == NULL) {
+ // This Mulenotebook has no images on tabs, so nothing to do.
+ event.Skip();
+@@ -263,7 +273,6 @@ void CMuleNotebook::OnMouseMotion(wxMouseEvent &event)
+ // Is not a 'x'. Send this event up.
+ event.Skip();
+ }
+-
+ }
+
+ // File_checked_for_headers
+diff --git a/src/MuleNotebook.h b/src/MuleNotebook.h
+index ab2809d88..14f61ee68 100644
+--- a/src/MuleNotebook.h
++++ b/src/MuleNotebook.h
+@@ -28,9 +28,13 @@
+
+ #include <wx/notebook.h>
+
++#define MULE_NEEDS_DELETEPAGE_WORKAROUND wxCHECK_VERSION(3,0,2)
++
+
+ DECLARE_LOCAL_EVENT_TYPE(wxEVT_COMMAND_MULENOTEBOOK_PAGE_CLOSING, -1)
+ DECLARE_LOCAL_EVENT_TYPE(wxEVT_COMMAND_MULENOTEBOOK_ALL_PAGES_CLOSED, -1)
++
++#if MULE_NEEDS_DELETEPAGE_WORKAROUND
+ DECLARE_LOCAL_EVENT_TYPE(wxEVT_COMMAND_MULENOTEBOOK_DELETE_PAGE, -1)
+
+ #define EVT_MULENOTEBOOK_DELETE_PAGE(id, fn) \
+@@ -41,6 +45,8 @@ DECLARE_LOCAL_EVENT_TYPE(wxEVT_COMMAND_MULENOTEBOOK_DELETE_PAGE, -1)
+ (wxObjectEventFunction)(wxEventFunction)(wxNotebookEventFunction) &fn, \
+ NULL \
+ ),
++#endif // MULE_NEEDS_DELETEPAGE_WORKAROUND
++
+ #define EVT_MULENOTEBOOK_PAGE_CLOSING(id, fn) \
+ DECLARE_EVENT_TABLE_ENTRY( \
+ wxEVT_COMMAND_MULENOTEBOOK_PAGE_CLOSING, \
+@@ -116,9 +122,11 @@ public:
+ */
+ void SetPopupHandler( wxWindow* widget );
+
++#if MULE_NEEDS_DELETEPAGE_WORKAROUND
+ private:
+ // Internal handler. Workaround for wxWidgets Tab-Crash bug.
+ void OnDeletePage(wxBookCtrlEvent& evt);
++#endif // MULE_NEEDS_DELETEPAGE_WORKAROUND
+
+ protected:
+ /**
+--
+2.16.4
+