From 22986aded456be338193cdb2024fa1008bdc455a Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 19 Jul 2023 10:54:25 +0000 Subject: [PATCH 01/12] Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- 4Pane.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/4Pane.spec b/4Pane.spec index 476009e..7aeae78 100644 --- a/4Pane.spec +++ b/4Pane.spec @@ -8,7 +8,7 @@ Name: 4Pane Version: 8.0 -Release: 3%{?dist} +Release: 4%{?dist} Summary: Multi-pane, detailed-list file manager License: GPLv3 @@ -111,6 +111,9 @@ rm -rf %{buildroot}%{_docdir}/%{name} %{_datadir}/icons/hicolor/*/apps/%{name}* %changelog +* Wed Jul 19 2023 Fedora Release Engineering - 8.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + * Wed Jan 18 2023 Fedora Release Engineering - 8.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild From 4c235a142e6195c81b23ff3f001a7c484633815f Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 18 Jan 2024 12:00:49 +0000 Subject: [PATCH 02/12] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- 4Pane.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/4Pane.spec b/4Pane.spec index 7aeae78..9b3cc84 100644 --- a/4Pane.spec +++ b/4Pane.spec @@ -8,7 +8,7 @@ Name: 4Pane Version: 8.0 -Release: 4%{?dist} +Release: 5%{?dist} Summary: Multi-pane, detailed-list file manager License: GPLv3 @@ -111,6 +111,9 @@ rm -rf %{buildroot}%{_docdir}/%{name} %{_datadir}/icons/hicolor/*/apps/%{name}* %changelog +* Thu Jan 18 2024 Fedora Release Engineering - 8.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Wed Jul 19 2023 Fedora Release Engineering - 8.0-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild From 2745379cc98966f705e57272d5a6697620e83748 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 19 Jan 2024 09:06:17 +0000 Subject: [PATCH 03/12] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- 4Pane.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/4Pane.spec b/4Pane.spec index 9b3cc84..4c15492 100644 --- a/4Pane.spec +++ b/4Pane.spec @@ -8,7 +8,7 @@ Name: 4Pane Version: 8.0 -Release: 5%{?dist} +Release: 6%{?dist} Summary: Multi-pane, detailed-list file manager License: GPLv3 @@ -111,6 +111,9 @@ rm -rf %{buildroot}%{_docdir}/%{name} %{_datadir}/icons/hicolor/*/apps/%{name}* %changelog +* Fri Jan 19 2024 Fedora Release Engineering - 8.0-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Thu Jan 18 2024 Fedora Release Engineering - 8.0-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild From 238655c7fc8cef0b4cf88cbf51df0bfe6c431f31 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Mon, 22 Jan 2024 20:40:01 +0000 Subject: [PATCH 04/12] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- 4Pane.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/4Pane.spec b/4Pane.spec index 4c15492..21da87a 100644 --- a/4Pane.spec +++ b/4Pane.spec @@ -8,7 +8,7 @@ Name: 4Pane Version: 8.0 -Release: 6%{?dist} +Release: 7%{?dist} Summary: Multi-pane, detailed-list file manager License: GPLv3 @@ -111,6 +111,9 @@ rm -rf %{buildroot}%{_docdir}/%{name} %{_datadir}/icons/hicolor/*/apps/%{name}* %changelog +* Mon Jan 22 2024 Fedora Release Engineering - 8.0-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Fri Jan 19 2024 Fedora Release Engineering - 8.0-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild From 1de491c71fbc88c2957d387b6922d378131860a3 Mon Sep 17 00:00:00 2001 From: Mamoru TASAKA Date: Fri, 26 Jan 2024 14:34:27 +0900 Subject: [PATCH 05/12] SPDX migration --- 4Pane.spec | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/4Pane.spec b/4Pane.spec index 21da87a..a6325fc 100644 --- a/4Pane.spec +++ b/4Pane.spec @@ -8,10 +8,15 @@ Name: 4Pane Version: 8.0 -Release: 7%{?dist} +Release: 8%{?dist} Summary: Multi-pane, detailed-list file manager -License: GPLv3 +# Overall GPL-3.0-only +# 4Pane.appdata.xml CC0-1.0 +# Accelerators.cpp and etc LGPL-2.0-or-later (wxWindows) +# sdk/bzip/LICENSE bzip2-1.0.6 (unused) +# SPDX confirmed +License: GPL-3.0-only AND LGPL-2.0-or-later AND CC0-1.0 URL: http://www.4pane.co.uk/ Source0: http://downloads.sourceforge.net/fourpane/4pane-%{version}.tar.gz # https://sourceforge.net/p/fourpane/git4pane/ci/66ae9a6f2ac526d80559967cda428cd48e5859ee/ @@ -21,8 +26,8 @@ BuildRequires: gcc-c++ BuildRequires: bzip2-devel BuildRequires: xz-devel BuildRequires: wxGTK-devel -BuildRequires: %{_bindir}/desktop-file-install -BuildRequires: %{_bindir}/appstream-util +BuildRequires: /usr/bin/desktop-file-install +BuildRequires: /usr/bin/appstream-util BuildRequires: gettext BuildRequires: git BuildRequires: make @@ -50,7 +55,7 @@ config.h.in EOF git init -git config user.email "4Pane-owner@fedoraproject.org" +git config user.email "4Pane-maintainers@fedoraproject.org" git config user.name "4Pane owners" git add . git commit -m "base" -q @@ -68,11 +73,10 @@ export EXTRA_CXXFLAGS="%{optflags}" --disable-desktop \ --without-builtin_bzip2 || \ { sleep 5 ; cat config.log ; sleep 10 ; exit 1; } -make %{?_smp_mflags} +%make_build %install -%make_install \ - INSTALL="install -p" +%make_install # Some manual installation mkdir -p %{buildroot}%{_datadir}/applications @@ -85,15 +89,16 @@ install -cpm 644 bitmaps/%{name}Icon48.png %{buildroot}%{_datadir}/icons/hicolor mkdir -p %{buildroot}%{_mandir}/man1 install -cpm 644 4Pane.1 %{buildroot}%{_mandir}/man1/ -desktop-file-validate %{buildroot}%{_datadir}/applications/%{name}.desktop -appstream-util validate-relax --nonet \ - %{buildroot}%{_datadir}/metainfo/%{name}.appdata.xml - %find_lang %{name} # Once remove document and let %%doc re-install them rm -rf %{buildroot}%{_docdir}/%{name} +%check +desktop-file-validate %{buildroot}%{_datadir}/applications/%{name}.desktop +appstream-util validate-relax --nonet \ + %{buildroot}%{_datadir}/metainfo/%{name}.appdata.xml + %files -f %{name}.lang %license LICENCE %doc doc/* @@ -111,6 +116,9 @@ rm -rf %{buildroot}%{_docdir}/%{name} %{_datadir}/icons/hicolor/*/apps/%{name}* %changelog +* Fri Jan 26 2024 Mamoru TASAKA - 8.0-8 +- SPDX migration + * Mon Jan 22 2024 Fedora Release Engineering - 8.0-7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild From c0ef639e8c9ed5ebe808150c4c113c1e445743cd Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 17 Jul 2024 14:40:21 +0000 Subject: [PATCH 06/12] Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild --- 4Pane.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/4Pane.spec b/4Pane.spec index a6325fc..be409ab 100644 --- a/4Pane.spec +++ b/4Pane.spec @@ -8,7 +8,7 @@ Name: 4Pane Version: 8.0 -Release: 8%{?dist} +Release: 9%{?dist} Summary: Multi-pane, detailed-list file manager # Overall GPL-3.0-only @@ -116,6 +116,9 @@ appstream-util validate-relax --nonet \ %{_datadir}/icons/hicolor/*/apps/%{name}* %changelog +* Wed Jul 17 2024 Fedora Release Engineering - 8.0-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + * Fri Jan 26 2024 Mamoru TASAKA - 8.0-8 - SPDX migration From dea8c2aba22194db5a04bfdb265c773eab583e79 Mon Sep 17 00:00:00 2001 From: Mamoru TASAKA Date: Fri, 10 Jan 2025 11:14:13 +0900 Subject: [PATCH 07/12] remove no longer needed patches --- 4Pane-4.0-gtk320-sizing.patch | 267 ---------------------------------- 4Pane-7.0-wx3.2.patch | 140 ------------------ 4Pane.spec | 2 - 3 files changed, 409 deletions(-) delete mode 100644 4Pane-4.0-gtk320-sizing.patch delete mode 100644 4Pane-7.0-wx3.2.patch diff --git a/4Pane-4.0-gtk320-sizing.patch b/4Pane-4.0-gtk320-sizing.patch deleted file mode 100644 index e25188d..0000000 --- a/4Pane-4.0-gtk320-sizing.patch +++ /dev/null @@ -1,267 +0,0 @@ -diff --git a/MyFiles.cpp b/MyFiles.cpp -index fdd6b50..fa088eb 100644 ---- a/MyFiles.cpp -+++ b/MyFiles.cpp -@@ -249,6 +249,7 @@ CreateAcceleratorTable(); // Make a new one, w - void FileGenericDirCtrl::DoSize() - { - int w, h; GetClientSize(&w, &h); -+if (w==0 || h==0) return; // Not yet ready for sizing - - GetTreeCtrl()->SetSize(0, HEADER_HEIGHT + 1, w, h - HEADER_HEIGHT - 1); // Set the treectrl 'body' size - headerwindow->SetSize(0, 0, w, HEADER_HEIGHT); // Set the header-window size -diff --git a/MyFrame.cpp b/MyFrame.cpp -index 889feb4..074572c 100644 ---- a/MyFrame.cpp -+++ b/MyFrame.cpp -@@ -619,6 +619,15 @@ Connect(wxID_ANY, PasteThreadType, PasteThreadEventHandler(MyFrame::OnPasteThrea - #if defined __WXX11__ - Connect(wxEVT_IDLE, (wxObjectEventFunction)&MyFrame::OnIdle); - #endif -+ -+#if defined(__WXGTK3__) && GTK_CHECK_VERSION(3,20,0) -+ // Workarounds for display glitches with gtk+3.20 -+ m_resizetimer.SetOwner(this, 10000); -+ Connect(10000, wxEVT_TIMER, wxTimerEventHandler(MyFrame::OnResizeTimer), NULL, this); -+ m_resizetimer.Start(10); -+ -+ Layout->m_notebook->StartTimer(); -+#endif - } - - #ifdef __WXX11__ -@@ -631,6 +640,21 @@ Disconnect(wxID_ANY); - } - #endif - -+#if defined(__WXGTK3__) && GTK_CHECK_VERSION(3,20,0) -+void MyFrame::OnResizeTimer(wxTimerEvent& WXUNUSED(event)) -+{ -+int x, y; GetSize(&x,&y); -+if (y > 50) -+ { static int count(0); -+ if (++count < 10) return; -+ if (count % 2) SetSize(x-1, y); -+ else SetSize(x+1, y); -+ -+ if (count > 11 && !(count % 2)) m_resizetimer.Stop(); -+ } -+} -+#endif -+ - MyFrame::~MyFrame() - { - m_DragMutex.Unlock(); -@@ -1850,6 +1874,10 @@ MyTab* tab = GetActiveTab(); - if (tab == NULL) return; - - tab->PerformSplit(horizontal); -+ -+#if defined(__WXGTK3__) && GTK_CHECK_VERSION(3,20,0) -+ m_resizetimer.Start(10); -+#endif - } - - void MyFrame::SplitVertical(wxCommandEvent& WXUNUSED(event)) -@@ -1858,6 +1886,10 @@ MyTab* tab = GetActiveTab(); - if (tab == NULL) return; - - tab->PerformSplit(vertical); -+ -+#if defined(__WXGTK3__) && GTK_CHECK_VERSION(3,20,0) -+ m_resizetimer.Start(10); -+#endif - } - - void MyFrame::Unsplit(wxCommandEvent& WXUNUSED(event)) -@@ -1866,11 +1898,19 @@ MyTab* tab = GetActiveTab(); - if (tab == NULL) return; - - tab->PerformSplit(unsplit); -+ -+#if defined(__WXGTK3__) && GTK_CHECK_VERSION(3,20,0) -+ m_resizetimer.Start(10); -+#endif - } - - void MyFrame::OnTabTemplateLoadMenu(wxCommandEvent& event) - { - Layout->m_notebook->LoadTemplate(event.GetId() - SHCUT_TABTEMPLATERANGE_START); -+ -+#if defined(__WXGTK3__) && GTK_CHECK_VERSION(3,20,0) -+ m_resizetimer.Start(10); -+#endif - } - - void MyFrame::OnConfigureShortcuts(wxCommandEvent& WXUNUSED(event)) -@@ -2053,6 +2093,10 @@ void LayoutWindows::UnShowBottom() // If bottompanel is visible, unsplit it - if (!m_splitterMain->IsSplit()) return; // Can't unsplit it if it's not split - - m_splitterMain->Unsplit(bottompanel); -+ -+#if defined(__WXGTK3__) && GTK_CHECK_VERSION(3,20,0) -+ m_frame->m_resizetimer.Start(10); -+#endif - } - - void LayoutWindows::DoTool(enum toolchoice whichtool) // Invoke the requested tool in the bottom panel -diff --git a/MyFrame.h b/MyFrame.h -index a54d089..85e4ec0 100644 ---- a/MyFrame.h -+++ b/MyFrame.h -@@ -458,6 +458,13 @@ void OnIdle( wxIdleEvent& event ); // One-off to make the toolbar textctrl sh - void OnMouseCaptureLost(wxMouseCaptureLostEvent& event) {OnEndDrag((wxMouseEvent&)event); } // If the mouse escapes, try and do something sensible - #endif - -+#if defined(__WXGTK3__) && GTK_CHECK_VERSION(3,20,0) -+ void OnResizeTimer(wxTimerEvent& event); -+ public: -+ wxTimer m_resizetimer; -+#endif -+ -+protected: - void OnTextFilepathEnter(wxCommandEvent& WXUNUSED(event)){ TextFilepathEnter(); } - - void DoMiscUI(wxUpdateUIEvent& event); // UpdateUI for misc items -diff --git a/MyNotebook.cpp b/MyNotebook.cpp -index b628627..71faa53 100644 ---- a/MyNotebook.cpp -+++ b/MyNotebook.cpp -@@ -27,6 +27,13 @@ - #include "MyFiles.h" - #include "MyNotebook.h" - -+#if defined(__WXGTK3__) && GTK_CHECK_VERSION(3,20,0) -+ void ResizeTimer::Notify() -+ { -+ if (m_nb) -+ m_nb->OnTimerResize(); -+ } -+#endif - - MyNotebook::MyNotebook(wxSplitterWindow *main, wxWindowID id, const wxPoint& pos, const wxSize& size, long style) - : wxNotebook((wxWindow*)main, id, pos, size, style) -@@ -48,6 +55,10 @@ UnRedoManager::frame = MyFrame::mainframe; // Tell UnRedoManager's (static) - - DeviceMan = new DeviceAndMountManager; // Organises things to do with mounting partitions & devices - LaunchFromMenu = new LaunchMiscTools; // Launches user-defined external programs & scripts from the Tools menu -+ -+#if defined(__WXGTK3__) && GTK_CHECK_VERSION(3,20,0) -+ m_timer = new ResizeTimer(this); -+#endif - } - - MyNotebook::~MyNotebook() -@@ -61,6 +72,10 @@ delete DeleteLocation; - delete BookmarkMan; - } - -+#if defined(__WXGTK3__) && GTK_CHECK_VERSION(3,20,0) -+ void MyNotebook::StartTimer() { if ( m_timer) m_timer->StartOnce(50); } -+#endif -+ - void MyNotebook::LoadTabs(int TemplateNo /*=-1*/, const wxString& startdir0 /*=""*/, const wxString& startdir1 /*=""*/) // Load the default tabs, or if TemplateNo > -1, load that tab template - { - wxConfigBase* config = wxConfigBase::Get(); if (config==NULL) return; -@@ -123,6 +138,10 @@ for (tab=0; tab < GetPageCount(); ++tab) // We can now safely unhide - - MyFrame::mainframe->GetMenuBar()->Check(SHCUT_SAVETABS_ONEXIT, saveonexit); // Set the menu item check according to bool - DoLoadTemplateMenu(); // Get the correct no of loadable templates listed on the menu -+ -+#if defined(__WXGTK3__) && GTK_CHECK_VERSION(3,20,0) -+ StartTimer(); -+#endif - } - - void MyNotebook::DoLoadTemplateMenu() // Get the correct no of loadable templates listed on the menu -@@ -298,8 +317,13 @@ if (after == -1) // -1 flags to append, not - { if (InsertPage(after, page, pageName, true)) ++nextpageno; - else return; // If page couldn't be created, bug out - } -+ -+#if defined(__WXGTK3__) && GTK_CHECK_VERSION(3,20,0) -+ StartTimer(); -+#endif - } - -+ - void MyNotebook::AppendTab() - { - CreateTab(GetPageCount()); // By passing GetPageCount(), the correct tabdata should be used -@@ -359,8 +383,18 @@ if (InsertPage(page + 1, duppage, pageName, true)) - #if defined (__WXGTK__) - ShowTabs(true); // Show the tab heads now, as by definition there must be >1 tab - #endif -+ -+#if defined(__WXGTK3__) && GTK_CHECK_VERSION(3,20,0) -+ StartTimer(); -+#endif - } - -+#if defined(__WXGTK3__) && GTK_CHECK_VERSION(3,20,0) -+ void MyNotebook::OnTimerResize() -+ { -+ int x, y; GetSize(&x,&y); SetSize(x-1, y-1); wxSafeYield(); SetSize(x, y); -+ } -+#endif - - void MyNotebook::OnSelChange(wxNotebookEvent& event) - { -diff --git a/MyNotebook.h b/MyNotebook.h -index 8fc36db..0287530 100644 ---- a/MyNotebook.h -+++ b/MyNotebook.h -@@ -17,6 +17,23 @@ class DeviceAndMountManager; - class Bookmarks; - class LaunchMiscTools; - -+#if defined __WXGTK__ -+ #include -+#endif -+#if defined(__WXGTK3__) && GTK_CHECK_VERSION(3,20,0) -+ class MyNotebook; -+ -+ class ResizeTimer : public wxTimer -+ { -+ public: -+ ResizeTimer(MyNotebook* nb) : wxTimer(), m_nb(nb) {} -+ void Notify(); -+ -+ protected: -+ MyNotebook* m_nb; -+ }; -+#endif -+ - class MyNotebook : public wxNotebook - { - public: -@@ -38,11 +55,19 @@ void OnAdvanceSelection(wxCommandEvent& event){AdvanceSelection(event.GetId() == - void OnSameTabSize(wxCommandEvent& event){ EqualSizedTabs = ! EqualSizedTabs; EqualWidthTabs(EqualSizedTabs); } - #endif - -+#if defined(__WXGTK3__) && GTK_CHECK_VERSION(3,20,0) -+ void OnTimerResize(); -+#endif -+ - void LoadTemplate(int TemplateNo); // Triggered by a menu event, loads the selected tab template - void SaveDefaults(int TemplateNo = -1, const wxString& title = wxT(""));// Save current tab setup. If TemplateNo > -1 save as a template; otherwise just do a 'normal' save - void SaveAsTemplate(); // Save the current tab setup as a template - void DeleteTemplate(); // Delete an existing template - -+#if defined(__WXGTK3__) && GTK_CHECK_VERSION(3,20,0) -+ void StartTimer(); -+#endif -+ - DirectoryForDeletions* DeleteLocation; // Organises unique dirnames for deleted/trashed files - UnRedoManager* UnRedoMan; // The sole instance of UnRedoManager - DeviceAndMountManager* DeviceMan; // Find where floppy, cds are -@@ -76,6 +101,9 @@ void RenameTab(); - void EqualWidthTabs(bool equal_tabs); - #endif - int nextpageno; -+#if defined(__WXGTK3__) && GTK_CHECK_VERSION(3,20,0) -+ ResizeTimer* m_timer; -+#endif - private: - DECLARE_EVENT_TABLE() - }; diff --git a/4Pane-7.0-wx3.2.patch b/4Pane-7.0-wx3.2.patch deleted file mode 100644 index 52dcce8..0000000 --- a/4Pane-7.0-wx3.2.patch +++ /dev/null @@ -1,140 +0,0 @@ -From 66ae9a6f2ac526d80559967cda428cd48e5859ee Mon Sep 17 00:00:00 2001 -From: dghart -Date: Sat, 12 Feb 2022 15:45:54 +0000 -Subject: [PATCH] Compilation fixes for wxWidgets 3.1.6 - -Workarounds for the addition of wxBitmapBundle. ---- - Devices.cpp | 4 ++++ - MyDirs.cpp | 9 +++++++++ - MyTreeCtrl.cpp | 49 ++++++++++++++++++++++++++++++++++++++----------- - 3 files changed, 51 insertions(+), 11 deletions(-) - -diff --git a/Devices.cpp b/Devices.cpp -index 5b8cfe9..dc77cdc 100644 ---- a/Devices.cpp -+++ b/Devices.cpp -@@ -210,7 +210,11 @@ wxString bitmap; config->Read(Rootname+subgrp+wxT("/Bitmap"), &bitmap); - wxString tooltip; config->Read(Rootname+subgrp+wxT("/Tooltip"), &tooltip); - - bitmap = BITMAPSDIR + bitmap; -+#if wxVERSION_NUMBER > 3105 -+Create(MyFrame::mainframe->panelette, -1, wxBitmapBundle::FromBitmap(bitmap), wxDefaultPosition, wxDefaultSize, wxNO_BORDER); -+#else - Create(MyFrame::mainframe->panelette, -1, bitmap, wxDefaultPosition, wxDefaultSize, wxNO_BORDER); -+#endif - SetToolTip(tooltip); - } - -diff --git a/MyDirs.cpp b/MyDirs.cpp -index 68f41a8..f370d5b 100644 ---- a/MyDirs.cpp -+++ b/MyDirs.cpp -@@ -522,10 +522,19 @@ for (size_t n=0; n < count; ++n) - array->Item(n)->tooltip, wxITEM_NORMAL); - else - { if (array->Item(n)->bitmaplocation.AfterLast(('/')) == wxT("MyDocuments.xpm")) // If Documents and the label is empty, supply a default -+#if wxVERSION_NUMBER > 3105 -+ toolBar->AddTool(IDM_TOOLBAR_bmfirst+n, label.empty() ? wxString(_("Documents")) : label,wxBitmapBundle::FromBitmap(array->Item(n)->bitmaplocation), -+ array->Item(n)->tooltip, wxITEM_NORMAL); -+ else -+ toolBar->AddTool(IDM_TOOLBAR_bmfirst + n, label, wxBitmapBundle::FromBitmap(array->Item(n)->bitmaplocation), array->Item(n)->tooltip, wxITEM_NORMAL); -+ -+#else - toolBar->AddTool(IDM_TOOLBAR_bmfirst+n, label.empty() ? wxString(_("Documents")) : label, array->Item(n)->bitmaplocation, -+ - array->Item(n)->tooltip, wxITEM_NORMAL); - else - toolBar->AddTool(IDM_TOOLBAR_bmfirst + n, label, array->Item(n)->bitmaplocation, array->Item(n)->tooltip, wxITEM_NORMAL); -+#endif //wxVERSION_NUMBER > 3105 - } - } - -diff --git a/MyTreeCtrl.cpp b/MyTreeCtrl.cpp -index bc1b607..735b6cf 100644 ---- a/MyTreeCtrl.cpp -+++ b/MyTreeCtrl.cpp -@@ -1336,7 +1336,27 @@ void MyTreeCtrl::PaintLevel(wxGenericTreeItem *item, wxDC &dc, int level, int &y - dc.DrawLine(3, y_mid, x - 5, y_mid); - dc.DrawLine(x + 5, y_mid, x + m_spacing, y_mid); - } -+#if wxVERSION_NUMBER > 3105 -+ if ( m_imagesButtons.HasImages() ) -+ { -+ // draw the image button here -+ int image_h = 0, image_w = 0; -+ int image = item->IsExpanded() ? wxTreeItemIcon_Expanded -+ : wxTreeItemIcon_Normal; -+ if ( item->IsSelected() ) -+ image += wxTreeItemIcon_Selected - wxTreeItemIcon_Normal; -+ -+ wxImageList* const -+ imageListButtons = m_imagesButtons.GetImageList(); -+ imageListButtons->GetSize(image, image_w, image_h); -+ int xx = x - image_w/2; -+ int yy = y_mid - image_h/2; - -+ wxDCClipper clip(dc, xx, yy, image_w, image_h); -+ imageListButtons->Draw(image, dc, xx, yy, -+ wxIMAGELIST_DRAW_TRANSPARENT); -+ } -+#else // !wxVERSION_NUMBER > 3105 - if (m_imageListButtons != NULL) - { - // draw the image button here -@@ -1352,9 +1372,10 @@ void MyTreeCtrl::PaintLevel(wxGenericTreeItem *item, wxDC &dc, int level, int &y - wxIMAGELIST_DRAW_TRANSPARENT); - dc.DestroyClippingRegion(); - } -- -+#endif - } - } -+ - else // no custom buttons - { - static const int wImage = 9; -@@ -1495,15 +1516,17 @@ if (headerwindow->IsHidden(i)) continue; // // - image = NO_IMAGE; // //item->GetImage(i); - } - -- if(image != NO_IMAGE) -- { -- if(m_imageListNormal) { -- m_imageListNormal->GetSize(image, image_w, image_h); -- image_w += 4; -- } -- else { -- image = NO_IMAGE; -- } -+ if (image != NO_IMAGE) -+ { -+#if wxVERSION_NUMBER > 3105 -+ if (GetImageList()) { -+ GetImageList()->GetSize(image, image_w, image_h); -+#else -+ if (m_imageListNormal) { -+ m_imageListNormal->GetSize(image, image_w, image_h); -+#endif // wxVERSION_NUMBER > 3105 -+ image_w += 4; -+ } else { image = NO_IMAGE; } - } - - // honor text alignment -@@ -1581,8 +1604,12 @@ if (headerwindow->IsHidden(i)) continue; // // - item->GetY() + extraH, clip_width, - total_h); - -- if(image != NO_IMAGE) { -+ if (image != NO_IMAGE) { -+#if wxVERSION_NUMBER > 3105 -+ GetImageList()->Draw(image, dc, image_x, -+#else - m_imageListNormal->Draw(image, dc, image_x, -+#endif - item->GetY() +((total_h > image_h)? - ((total_h-image_h)/2):0), - wxIMAGELIST_DRAW_TRANSPARENT); --- -2.37.1 - diff --git a/4Pane.spec b/4Pane.spec index be409ab..c979e6d 100644 --- a/4Pane.spec +++ b/4Pane.spec @@ -19,8 +19,6 @@ Summary: Multi-pane, detailed-list file manager License: GPL-3.0-only AND LGPL-2.0-or-later AND CC0-1.0 URL: http://www.4pane.co.uk/ Source0: http://downloads.sourceforge.net/fourpane/4pane-%{version}.tar.gz -# https://sourceforge.net/p/fourpane/git4pane/ci/66ae9a6f2ac526d80559967cda428cd48e5859ee/ -Patch0: 4Pane-7.0-wx3.2.patch BuildRequires: gcc-c++ BuildRequires: bzip2-devel From f5e770168dd65fe59440c0f1fd4f6987871a977b Mon Sep 17 00:00:00 2001 From: Mamoru TASAKA Date: Fri, 10 Jan 2025 11:24:52 +0900 Subject: [PATCH 08/12] Upstream fix to make files under /tmp unpredictable --- 4Pane-d8b74e4-tmp-file-name.patch | 36 +++++++++++++++++++++++++++++++ 4Pane.spec | 10 ++++++++- 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 4Pane-d8b74e4-tmp-file-name.patch diff --git a/4Pane-d8b74e4-tmp-file-name.patch b/4Pane-d8b74e4-tmp-file-name.patch new file mode 100644 index 0000000..2a6d152 --- /dev/null +++ b/4Pane-d8b74e4-tmp-file-name.patch @@ -0,0 +1,36 @@ +commit d8b74e4df86fb526ee9caad284b9eb3efe528ac5 +Author: dghart +Date: Thu Jan 9 14:14:10 2025 +0000 + + When previewing an svg file, make the string name unguessable; see https://sourceforge.net/p/fourpane/bugs/22/ + + Previewing an svg called foo.svg was creating (briefly) in /tmp a file predictably called foo.png. This might have allowed an attacker to overwrite genuine files. Prevent this by prepending a random string to each name. + +diff --git a/MyTreeCtrl.cpp b/MyTreeCtrl.cpp +index fd19465..d82cfc8 100644 +--- a/MyTreeCtrl.cpp ++++ b/MyTreeCtrl.cpp +@@ -1890,15 +1890,20 @@ void PreviewPopup::DisplayImage(const wxString& fpath) + { + wxLogNull NoErrorMessages; + wxString filepath(fpath); +-wxString pngfilepath; ++wxString pngfilepath, rndstr; + wxImage image; + + if (filepath.Right(4) == ".svg") + { void* handle = wxGetApp().GetRsvgHandle(); + if (!handle) return; // Presumably librsvg is not available at present + +- wxFileName fn(filepath); // Create a filepath in /tmp/ to store the .png +- pngfilepath = "/tmp/" + fn.GetName() + ".png"; ++ // Create a filepath in /tmp/ to store the .png ++ rndstr = ""; srand(time(NULL)); ++ wxString allowedchars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; ++ for (size_t n=0; n < 9; ++n) // Make the string name unguessable; see https://sourceforge.net/p/fourpane/bugs/22/ ++ rndstr << wxString::Format("%c", allowedchars[(char)(rand() % 52)]); ++ wxFileName fn(filepath); ++ pngfilepath = "/tmp/" + rndstr + fn.GetName() + ".png"; + if (SvgToPng(filepath, pngfilepath, handle)) + image = wxImage(pngfilepath); + wxRemoveFile(pngfilepath); diff --git a/4Pane.spec b/4Pane.spec index c979e6d..3bd7fe3 100644 --- a/4Pane.spec +++ b/4Pane.spec @@ -8,7 +8,7 @@ Name: 4Pane Version: 8.0 -Release: 9%{?dist} +Release: 10%{?dist} Summary: Multi-pane, detailed-list file manager # Overall GPL-3.0-only @@ -19,6 +19,10 @@ Summary: Multi-pane, detailed-list file manager License: GPL-3.0-only AND LGPL-2.0-or-later AND CC0-1.0 URL: http://www.4pane.co.uk/ Source0: http://downloads.sourceforge.net/fourpane/4pane-%{version}.tar.gz +# https://sourceforge.net/p/fourpane/bugs/22/ +# https://sourceforge.net/p/fourpane/git4pane/ci/d8b74e4df86fb526ee9caad284b9eb3efe528ac5/ +# Make files under /tmp unpredictable +Patch0: 4Pane-d8b74e4-tmp-file-name.patch BuildRequires: gcc-c++ BuildRequires: bzip2-devel @@ -42,6 +46,7 @@ tools. %prep %setup -q -n 4pane-%{version} +%patch -P0 -p1 -b .tmpfile %if 0 cat > .gitignore < - 8.0-10 +- Upstream fix to make files under /tmp unpredictable + * Wed Jul 17 2024 Fedora Release Engineering - 8.0-9 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild From 1dc97c37ec7351bd13c22ae60069dc1ebc5ca6ad Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 16 Jan 2025 08:20:42 +0000 Subject: [PATCH 09/12] Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild --- 4Pane.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/4Pane.spec b/4Pane.spec index 3bd7fe3..a487c3c 100644 --- a/4Pane.spec +++ b/4Pane.spec @@ -8,7 +8,7 @@ Name: 4Pane Version: 8.0 -Release: 10%{?dist} +Release: 11%{?dist} Summary: Multi-pane, detailed-list file manager # Overall GPL-3.0-only @@ -119,6 +119,9 @@ appstream-util validate-relax --nonet \ %{_datadir}/icons/hicolor/*/apps/%{name}* %changelog +* Thu Jan 16 2025 Fedora Release Engineering - 8.0-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + * Fri Jan 10 2025 Mamoru TASAKA - 8.0-10 - Upstream fix to make files under /tmp unpredictable From d0f4bd1b2f2b3a35c520976b7dec754637002e4d Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Mon, 20 Jan 2025 07:17:01 +0000 Subject: [PATCH 10/12] Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild --- 4Pane.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/4Pane.spec b/4Pane.spec index a487c3c..7868431 100644 --- a/4Pane.spec +++ b/4Pane.spec @@ -8,7 +8,7 @@ Name: 4Pane Version: 8.0 -Release: 11%{?dist} +Release: 12%{?dist} Summary: Multi-pane, detailed-list file manager # Overall GPL-3.0-only @@ -119,6 +119,9 @@ appstream-util validate-relax --nonet \ %{_datadir}/icons/hicolor/*/apps/%{name}* %changelog +* Mon Jan 20 2025 Fedora Release Engineering - 8.0-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + * Thu Jan 16 2025 Fedora Release Engineering - 8.0-11 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild From 6a919081474754b692651318e1f07d3d635fb8f7 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 23 Jul 2025 15:39:34 +0000 Subject: [PATCH 11/12] Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild --- 4Pane.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/4Pane.spec b/4Pane.spec index 7868431..304d9db 100644 --- a/4Pane.spec +++ b/4Pane.spec @@ -8,7 +8,7 @@ Name: 4Pane Version: 8.0 -Release: 12%{?dist} +Release: 13%{?dist} Summary: Multi-pane, detailed-list file manager # Overall GPL-3.0-only @@ -119,6 +119,9 @@ appstream-util validate-relax --nonet \ %{_datadir}/icons/hicolor/*/apps/%{name}* %changelog +* Wed Jul 23 2025 Fedora Release Engineering - 8.0-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + * Mon Jan 20 2025 Fedora Release Engineering - 8.0-12 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild From 957374a57a476a6d4ffce77c3ba798b0c8953a23 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 16 Jan 2026 02:25:53 +0000 Subject: [PATCH 12/12] Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild --- 4Pane.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/4Pane.spec b/4Pane.spec index 304d9db..0d951c8 100644 --- a/4Pane.spec +++ b/4Pane.spec @@ -8,7 +8,7 @@ Name: 4Pane Version: 8.0 -Release: 13%{?dist} +Release: 14%{?dist} Summary: Multi-pane, detailed-list file manager # Overall GPL-3.0-only @@ -119,6 +119,9 @@ appstream-util validate-relax --nonet \ %{_datadir}/icons/hicolor/*/apps/%{name}* %changelog +* Fri Jan 16 2026 Fedora Release Engineering - 8.0-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild + * Wed Jul 23 2025 Fedora Release Engineering - 8.0-13 - Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild