source: trunk/dports/www/FileZilla/files/patch-wxWidgets-2.9.diff @ 110262

Last change on this file since 110262 was 110262, checked in by mojca@…, 7 years ago

FileZilla: upgrade to version 3.7.3, adapt to use new wxWidgets ports, conditionally (un)usable with wxWidgets 2.9 (#38375, #35655)

File size: 33.3 KB
Line 
1http://trac.filezilla-project.org/ticket/8272
2--- configure.orig
3+++ configure
4@@ -692,6 +692,9 @@ PACKAGE_VERSION_MAJOR
5 WINDRESFLAGS
6 WINDRES
7 WX_CONFIG_WITH_ARGS
8+WX_VERSION_MICRO
9+WX_VERSION_MINOR
10+WX_VERSION_MAJOR
11 WX_RESCOMP
12 WX_VERSION
13 WX_LIBS_STATIC
14@@ -15987,7 +15990,7 @@ $as_echo_n "checking for wxWidgets version >= $min_wx_version... " >&6; }
15 $as_echo_n "checking for wxWidgets version >= $min_wx_version (--unicode=yes --universal=no)... " >&6; }
16     fi
17 
18-    WX_CONFIG_WITH_ARGS="$WX_CONFIG_PATH $wx_config_args --unicode=yes --universal=no aui,xrc,adv,core,xml,net,base"
19+            WX_CONFIG_WITH_ARGS="$WX_CONFIG_PATH $wx_config_args --unicode=yes --universal=no"
20 
21     WX_VERSION=`$WX_CONFIG_WITH_ARGS --version 2>/dev/null`
22     wx_config_major_version=`echo $WX_VERSION | \
23@@ -16026,14 +16029,13 @@ $as_echo_n "checking for wxWidgets version >= $min_wx_version (--unicode=yes --u
24 
25 
26     if test -n "$wx_ver_ok"; then
27-
28       { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (version $WX_VERSION)" >&5
29 $as_echo "yes (version $WX_VERSION)" >&6; }
30-      WX_LIBS=`$WX_CONFIG_WITH_ARGS --libs`
31+      WX_LIBS=`$WX_CONFIG_WITH_ARGS --libs aui,html,xrc,adv,core,xml,net,base`
32 
33                               { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wxWidgets static library" >&5
34 $as_echo_n "checking for wxWidgets static library... " >&6; }
35-      WX_LIBS_STATIC=`$WX_CONFIG_WITH_ARGS --static --libs 2>/dev/null`
36+      WX_LIBS_STATIC=`$WX_CONFIG_WITH_ARGS --static --libs aui,html,xrc,adv,core,xml,net,base 2>/dev/null`
37       if test "x$WX_LIBS_STATIC" = "x"; then
38         { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
39 $as_echo "no" >&6; }
40@@ -16076,16 +16078,16 @@ $as_echo "yes" >&6; }
41       fi
42 
43       if test "x$wx_has_cppflags" = x ; then
44-                  WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags`
45+                  WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags aui,html,xrc,adv,core,xml,net,base`
46          WX_CPPFLAGS=$WX_CFLAGS
47          WX_CXXFLAGS=$WX_CFLAGS
48 
49          WX_CFLAGS_ONLY=$WX_CFLAGS
50          WX_CXXFLAGS_ONLY=$WX_CFLAGS
51       else
52-                  WX_CPPFLAGS=`$WX_CONFIG_WITH_ARGS --cppflags`
53-         WX_CXXFLAGS=`$WX_CONFIG_WITH_ARGS --cxxflags`
54-         WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags`
55+                  WX_CPPFLAGS=`$WX_CONFIG_WITH_ARGS --cppflags aui,html,xrc,adv,core,xml,net,base`
56+         WX_CXXFLAGS=`$WX_CONFIG_WITH_ARGS --cxxflags aui,html,xrc,adv,core,xml,net,base`
57+         WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags aui,html,xrc,adv,core,xml,net,base`
58 
59          WX_CFLAGS_ONLY=`echo $WX_CFLAGS | sed "s@^$WX_CPPFLAGS *@@"`
60          WX_CXXFLAGS_ONLY=`echo $WX_CXXFLAGS | sed "s@^$WX_CFLAGS *@@"`
61@@ -16109,7 +16111,32 @@ $as_echo "no (version $WX_VERSION is not new enough)" >&6; }
62        WX_LIBS=""
63        WX_LIBS_STATIC=""
64        WX_RESCOMP=""
65-       :
66+
67+       if test ! -z "--unicode=yes --universal=no"; then
68+
69+          wx_error_message="
70+    The configuration you asked for $PACKAGE_NAME requires a wxWidgets
71+    build with the following settings:
72+        --unicode=yes --universal=no
73+    but such build is not available.
74+
75+    To see the wxWidgets builds available on this system, please use
76+    'wx-config --list' command. To use the default build, returned by
77+    'wx-config --selected-config', use the options with their 'auto'
78+    default values."
79+
80+       fi
81+
82+       wx_error_message="
83+    The requested wxWidgets build couldn't be found.
84+    $wx_error_message
85+
86+    If you still get this error, then check that 'wx-config' is
87+    in path, the directory where wxWidgets libraries are installed
88+    (returned by 'wx-config --libs' command) is in LD_LIBRARY_PATH
89+    or equivalent variable and wxWidgets version is $MIN_WX_VERSION or above."
90+
91+       as_fn_error $? "$wx_error_message" "$LINENO" 5
92 
93     fi
94   else
95@@ -16135,6 +16162,13 @@ $as_echo "no (version $WX_VERSION is not new enough)" >&6; }
96 
97 
98 
99+      WX_VERSION_MAJOR="$wx_config_major_version"
100+  WX_VERSION_MINOR="$wx_config_minor_version"
101+  WX_VERSION_MICRO="$wx_config_micro_version"
102+
103+
104+
105+
106   if test "$wxWin" != 1; then
107     as_fn_error $? "
108         wxWidgets must be installed on your system
109@@ -16150,8 +16184,8 @@ $as_echo "no (version $WX_VERSION is not new enough)" >&6; }
110         equivalent variable and wxWidgets version is $MIN_WX_VERSION or above.
111     " "$LINENO" 5
112   fi
113-  if test "$wx_config_major_version" -gt "2" || test "$wx_config_minor_version" -gt "8"; then
114-    as_fn_error $? "You need to use wxWidgets 2.8.x to compile this program." "$LINENO" 5
115+  if test "$wx_config_major_version" -gt "2" || test "$wx_config_minor_version" -gt "9"; then
116+    as_fn_error $? "You need to use wxWidgets 2.9.x to compile this program." "$LINENO" 5
117   fi
118 
119   # --universal=no doesn't work correctly, it still accepts universal builds. Reject it manually here.
120--- src/engine/local_path.cpp.orig
121+++ src/engine/local_path.cpp
122@@ -48,6 +48,7 @@ bool CLocalPath::SetPath(const wxString& path, wxString* file /*=0*/)
123 
124        wxChar* out;
125        wxChar* start;
126+       wxStringBuffer* buffer = 0;
127        if (*in == '\\')
128        {
129                // possibly UNC
130@@ -59,7 +60,8 @@ bool CLocalPath::SetPath(const wxString& path, wxString* file /*=0*/)
131                        return false;
132                }
133 
134-               start = m_path.GetWriteBuf(path.Len() + 2);
135+               buffer = new wxStringBuffer(m_path, path.Len() + 2);
136+               start = *buffer;
137                out = start;
138                *out++ = '\\';
139                *out++ = '\\';
140@@ -77,7 +79,7 @@ bool CLocalPath::SetPath(const wxString& path, wxString* file /*=0*/)
141                {
142                        // not a valid UNC path
143                        *start = 0;
144-                       m_path.UngetWriteBuf( 0 );
145+                       delete buffer;
146                        return false;
147                }
148 
149@@ -87,21 +89,22 @@ bool CLocalPath::SetPath(const wxString& path, wxString* file /*=0*/)
150        {
151                // Regular path
152 
153-               start = m_path.GetWriteBuf(path.Len() + 2);
154+               buffer = new wxStringBuffer(m_path, path.Len() + 2);
155+               start = *buffer;
156                out = start;
157                *out++ = *in++;
158 
159                if (*in++ != ':')
160                {
161                        *start = 0;
162-                       m_path.UngetWriteBuf( 0 );
163+                       delete buffer;
164                        return false;
165                }
166                *out++ = ':';
167                if (*in != '/' && *in != '\\' && *in)
168                {
169                        *start = 0;
170-                       m_path.UngetWriteBuf( 0 );
171+                       delete buffer;
172                        return false;
173                }
174                *out++ = path_separator;
175@@ -120,8 +123,13 @@ bool CLocalPath::SetPath(const wxString& path, wxString* file /*=0*/)
176                return false;
177        }
178 
179+#if wxCHECK_VERSION(2, 9, 0)
180+       wxStringBuffer* buffer = new wxStringBuffer(m_path, path.Len() + 2);
181+       wxChar* out = *buffer;
182+#else
183        wxChar* start = m_path.GetWriteBuf(path.Len() + 2);
184        wxChar* out = start;
185+#endif
186 
187        *out++ = '/';
188        segments.push_back(out);
189@@ -210,9 +218,13 @@ bool CLocalPath::SetPath(const wxString& path, wxString* file /*=0*/)
190        }
191 
192        *out = 0;
193-
194+#if !wxCHECK_VERSION(2, 9, 0)
195        m_path.UngetWriteBuf( out - start );
196-
197+#else
198+       if (buffer != 0) {
199+               delete buffer;
200+       }
201+#endif
202        ::Coalesce(m_path);
203 
204        return true;
205--- src/engine/logging.cpp.orig
206+++ src/engine/logging.cpp
207@@ -51,6 +51,38 @@ CLogging::~CLogging()
208        }
209 }
210 
211+#if wxCHECK_VERSION(2, 9, 0)
212+void CLogging::LogMessage(MessageType nMessageType, const wxChar *msgFormat, int value1) const
213+{
214+        LogMessage(nMessageType, msgFormat, (const char*)(wxString() << value1).c_str());
215+}
216+
217+void CLogging::LogMessage(MessageType nMessageType, const wxChar *msgFormat, int value1, wxCStrData value2) const
218+{
219+        LogMessage(nMessageType, msgFormat, (const char*)(wxString() << value1).c_str(), value2.AsWChar());
220+}
221+
222+void CLogging::LogMessage(MessageType nMessageType, const wxChar *msgFormat, int value1, wxCStrData value2, wxCStrData value3) const
223+{
224+        LogMessage(nMessageType, msgFormat, (const char*)(wxString() << value1).c_str(), value2.AsWChar(), value3.AsWChar());
225+}
226+
227+void CLogging::LogMessage(MessageType nMessageType, const wxChar *msgFormat, wxCStrData value1) const
228+{
229+        LogMessage(nMessageType, msgFormat, value1.AsWChar());
230+}
231+
232+void CLogging::LogMessage(MessageType nMessageType, const wxChar *msgFormat, wxCStrData value1, wxCStrData value2) const
233+{
234+        LogMessage(nMessageType, msgFormat, value1.AsWChar(), value2.AsWChar());
235+}
236+
237+void CLogging::LogMessage(MessageType nMessageType, const wxChar *msgFormat, wxCStrData value1, wxCStrData value2, wxCStrData value3, wxCStrData value4) const
238+{
239+        LogMessage(nMessageType, msgFormat, value1.AsWChar(), value2.AsWChar(), value3.AsWChar(), value4.AsWChar());
240+}
241+#endif
242+
243 void CLogging::LogMessage(MessageType nMessageType, const wxChar *msgFormat, ...) const
244 {
245        InitLogFile();
246--- src/engine/logging_private.h.orig
247+++ src/engine/logging_private.h
248@@ -6,6 +6,15 @@ class CLogging
249 public:
250        CLogging(CFileZillaEnginePrivate *pEngine);
251        virtual ~CLogging();
252+       
253+#if wxCHECK_VERSION(2, 9, 0)
254+       void LogMessage(MessageType nMessageType, const wxChar *msgFormat, int value1) const;
255+       void LogMessage(MessageType nMessageType, const wxChar *msgFormat, int value1, wxCStrData value2) const;
256+       void LogMessage(MessageType nMessageType, const wxChar *msgFormat, int value1, wxCStrData value2, wxCStrData value3) const;
257+       void LogMessage(MessageType nMessageType, const wxChar *msgFormat, wxCStrData value1) const;
258+       void LogMessage(MessageType nMessageType, const wxChar *msgFormat, wxCStrData value1, wxCStrData value2) const;
259+       void LogMessage(MessageType nMessageType, const wxChar *msgFormat, wxCStrData value1, wxCStrData value2, wxCStrData value3, wxCStrData value4) const;
260+#endif
261 
262        void LogMessage(MessageType nMessageType, const wxChar *msgFormat, ...) const;
263        void LogMessageRaw(MessageType nMessageType, const wxChar *msg) const;
264--- src/engine/misc.cpp.orig
265+++ src/engine/misc.cpp
266@@ -365,9 +365,19 @@ void MakeLowerAscii(wxString& str)
267 {
268        for (size_t i = 0; i < str.Len(); i++)
269        {
270+#if wxCHECK_VERSION(2, 9, 0)
271+               char c;
272+               str.GetChar(i).GetAsChar(&c);
273+               if (c >= 'A' && c <= 'Z')
274+               {
275+                       c += 32;
276+                       str.SetChar(i, wxUniChar(c));
277+               }
278+#else
279                wxChar& c = str[i];
280                if (c >= 'A' && c <= 'Z')
281                        c += 32;
282+#endif
283        }
284 }
285 
286--- src/engine/server.cpp.orig
287+++ src/engine/server.cpp
288@@ -12,13 +12,13 @@ struct t_protocolInfo
289 };
290 
291 static const t_protocolInfo protocolInfos[] = {
292-       { FTP,          _T("ftp"),    false, 21,  true,  wxTRANSLATE("FTP - File Transfer Protocol with optional encryption"),                 true  },
293+       { FTP,          _T("ftp"),    false, 21,  true,  _T("FTP - File Transfer Protocol with optional encryption"),                 true  },
294        { SFTP,         _T("sftp"),   true,  22,  false, _T("SFTP - SSH File Transfer Protocol"),                              false },
295        { HTTP,         _T("http"),   true,  80,  false, _T("HTTP - Hypertext Transfer Protocol"),                             true  },
296-       { HTTPS,        _T("https"),  true, 443,  true,  wxTRANSLATE("HTTPS - HTTP over TLS"),                                 true  },
297-       { FTPS,         _T("ftps"),   true, 990,  true,  wxTRANSLATE("FTPS - FTP over implicit TLS/SSL"),                      true  },
298-       { FTPES,        _T("ftpes"),  true,  21,  true,  wxTRANSLATE("FTPES - FTP over explicit TLS/SSL"),                     true  },
299-       { INSECURE_FTP, _T("ftp"),    false, 21,  true,  wxTRANSLATE("FTP - Insecure File Transfer Protocol"), true  },
300+       { HTTPS,        _T("https"),  true, 443,  true,  _T("HTTPS - HTTP over TLS"),                                 true  },
301+       { FTPS,         _T("ftps"),   true, 990,  true,  _T("FTPS - FTP over implicit TLS/SSL"),                      true  },
302+       { FTPES,        _T("ftpes"),  true,  21,  true,  _T("FTPES - FTP over explicit TLS/SSL"),                     true  },
303+       { INSECURE_FTP, _T("ftp"),    false, 21,  true,  _T("FTP - Insecure File Transfer Protocol"), true  },
304        { UNKNOWN,      _T(""),       false, 21,  false, _T("") }
305 };
306 
307--- src/engine/serverpath.cpp.orig
308+++ src/engine/serverpath.cpp
309@@ -276,8 +276,13 @@ wxString CServerPath::GetSafePath() const
310                len += iter->Length() + 2 + INTLENGTH;
311 
312        wxString safepath;
313+#if wxCHECK_VERSION(2, 9, 0)
314+       wxStringBuffer* buffer = new wxStringBuffer(safepath, len);
315+       wxChar* t = *buffer;
316+#else
317        wxChar* start = safepath.GetWriteBuf(len);
318        wxChar* t = start;
319+#endif
320 
321        t = fast_sprint_number(t, m_type);
322        *(t++) = ' ';
323@@ -299,8 +304,11 @@ wxString CServerPath::GetSafePath() const
324                t += iter->size();
325        }
326        *t = 0;
327-
328+#if !wxCHECK_VERSION(2, 9, 0)
329        safepath.UngetWriteBuf( t - start );
330+#else
331+       delete buffer;
332+#endif
333        safepath.Shrink();
334 
335        return safepath;
336--- src/engine/socket.cpp.orig
337+++ src/engine/socket.cpp
338@@ -1273,7 +1273,7 @@ void CSocket::SetEventHandler(CSocketEventHandler* pEvtHandler)
339        }
340 }
341 
342-#define ERRORDECL(c, desc) { c, _T(#c), wxTRANSLATE(desc) },
343+#define ERRORDECL(c, desc) { c, _T(#c), _T(desc) },
344 
345 struct Error_table
346 {
347--- src/engine/string_coalescer.cpp.orig
348+++ src/engine/string_coalescer.cpp
349@@ -66,7 +66,11 @@ struct fast_equal
350        {
351                // wxString is CoW, yet it doesn't even do this fast pointer
352                // comparison in it's less and/or equal operator(s).
353+#if wxCHECK_VERSION(2, 9, 0)
354+               return lhs == rhs;
355+#else
356                return lhs.c_str() == rhs.c_str() || lhs == rhs;
357+#endif
358        }
359 };
360 
361--- src/include/libfilezilla.h.orig
362+++ src/include/libfilezilla.h
363@@ -21,6 +21,10 @@
364 #include <wx/datetime.h>
365 #include <wx/event.h>
366 #include <wx/string.h>
367+#if wxCHECK_VERSION(2, 9, 0)
368+#include <wx/translation.h>
369+#include <wx/dcclient.h>
370+#endif
371 
372 #include <list>
373 #include <vector>
374--- src/interface/FileZilla.cpp.orig
375+++ src/interface/FileZilla.cpp
376@@ -267,7 +267,7 @@
377 #else
378                if (!pInfo || !SetLocale(pInfo->Language))
379                {
380-                       if (pInfo && pInfo->Description)
381+                       if (pInfo && !pInfo->Description.IsEmpty())
382                                wxMessageBox(wxString::Format(_("Failed to set language to %s (%s), using default system language"), pInfo->Description.c_str(), language.c_str()), _("Failed to change language"), wxICON_EXCLAMATION);
383                        else
384                                wxMessageBox(wxString::Format(_("Failed to set language to %s, using default system language"), language.c_str()), _("Failed to change language"), wxICON_EXCLAMATION);
385@@ -803,7 +803,7 @@ void CFileZillaApp::CheckExistsFzsftp()
386        if (!found)
387        {
388                wxMessageBox(wxString::Format(_("%s could not be found. Without this component of FileZilla, SFTP will not work.\n\nPossible solutions:\n- Make sure %s is in a directory listed in your PATH environment variable.\n- Set the full path to %s in the FZ_FZSFTP environment variable."), program.c_str(), program.c_str(), program.c_str()),
389-                       _("File not found"), wxICON_ERROR);
390+                       _("File not found"), wxICON_ERROR | wxOK);
391                executable.clear();
392        }
393 #endif
394--- src/interface/Mainfrm.cpp.orig
395+++ src/interface/Mainfrm.cpp
396@@ -754,14 +754,19 @@ void CMainFrame::OnMenuHandler(wxCommandEvent &event)
397                        // Do a crude approach: Drop everything unexpected...
398                        for (unsigned int i = 0; i < version.Len(); i++)
399                        {
400+#if wxCHECK_VERSION(2, 9, 0)
401+                               char c;
402+                               version.GetChar(i).GetAsChar(&c);
403+#else
404                                wxChar& c = version[i];
405+#endif
406                                if ((version[i] >= '0' && version[i] <= '9') ||
407                                        (version[i] >= 'a' && version[i] <= 'z') ||
408                                        (version[i] >= 'A' && version[i] <= 'Z') ||
409                                        version[i] == '-' || version[i] == '.' ||
410                                        version[i] == '_')
411                                {
412-                                       url += c;
413+                                       url.Append(c);
414                                }
415                        }
416                }
417@@ -779,7 +784,11 @@ void CMainFrame::OnMenuHandler(wxCommandEvent &event)
418                        {
419                                pStatusBar->Show(show);
420                                wxSizeEvent evt;
421+#if wxCHECK_VERSION(2, 9, 0)
422+                               controls->pLocalListViewPanel->ProcessWindowEvent(evt);
423+#else
424                                controls->pLocalListViewPanel->ProcessEvent(evt);
425+#endif
426                        }
427                }
428                if (controls && controls->pRemoteListViewPanel)
429@@ -789,7 +798,11 @@ void CMainFrame::OnMenuHandler(wxCommandEvent &event)
430                        {
431                                pStatusBar->Show(show);
432                                wxSizeEvent evt;
433+#if wxCHECK_VERSION(2, 9, 0)
434+                               controls->pRemoteListViewPanel->ProcessWindowEvent(evt);
435+#else
436                                controls->pRemoteListViewPanel->ProcessEvent(evt);
437+#endif
438                        }
439                }
440        }
441--- src/interface/QueueView.cpp.orig
442+++ src/interface/QueueView.cpp
443@@ -3419,9 +3419,13 @@ wxString CQueueView::ReplaceInvalidCharacters(const wxString& filename)
444        const wxChar replace = COptions::Get()->GetOption(OPTION_INVALID_CHAR_REPLACE)[0];
445 
446        wxString result;
447-
448+#if wxCHECK_VERSION(2, 9, 0)
449+       wxStringBuffer* buffer = new wxStringBuffer(result, filename.Len() + 1);
450+       wxChar* buf = *buffer;
451+#else
452        wxChar* start = result.GetWriteBuf(filename.Len() + 1);
453        wxChar* buf = start;
454+#endif
455 
456        const wxChar* p = filename.c_str();
457        while (*p)
458@@ -3456,9 +3460,11 @@ wxString CQueueView::ReplaceInvalidCharacters(const wxString& filename)
459                p++;
460        }
461        *buf = 0;
462-
463+#if wxCHECK_VERSION(2, 9, 0)
464+       delete buffer;
465+#else
466        result.UngetWriteBuf( buf - start );
467-
468+#endif
469        return result;
470 }
471 
472--- src/interface/RemoteTreeView.cpp.orig
473+++ src/interface/RemoteTreeView.cpp
474@@ -350,7 +350,7 @@ void CRemoteTreeView::SetDirectoryListing(const CSharedPointer<const CDirectoryL
475        SetItemImages(parent, false);
476 
477 #ifndef __WXMSW__
478-       m_freezeCount--;
479+       Thaw();
480 #endif
481        if (!modified)
482                SafeSelectItem(parent);
483--- src/interface/StatusView.cpp.orig
484+++ src/interface/StatusView.cpp
485@@ -58,7 +58,7 @@ public:
486        {
487                wxWindow* parent = GetParent();
488                event.SetEventObject(parent);
489-               parent->ProcessEvent(event);
490+               parent->GetEventHandler()->ProcessEvent(event);
491        }
492 #else
493        void OnKeyDown(wxKeyEvent& event)
494@@ -76,7 +76,7 @@ public:
495                navEvent.SetDirection(!event.ShiftDown());
496                navEvent.SetFromTab(true);
497                navEvent.ResumePropagation(1);
498-               parent->ProcessEvent(navEvent);
499+               parent->GetEventHandler()->ProcessEvent(navEvent);
500        }
501 #endif
502 };
503--- src/interface/aui_notebook_ex.cpp.orig
504+++ src/interface/aui_notebook_ex.cpp
505@@ -3,7 +3,16 @@
506 #include "aui_notebook_ex.h"
507 #include <wx/dcmirror.h>
508 
509+#if wxCHECK_VERSION(2, 9, 0)
510+wxColor wxAuiStepColour(const wxColor& c, int ialpha)
511+{     
512+       wxColor* result = new wxColor(c);
513+       result->ChangeLightness(ialpha);
514+       return *result;
515+}
516+#else
517 wxColor wxAuiStepColour(const wxColor& c, int ialpha);
518+#endif
519 
520 #ifdef __WXMSW__
521 #define TABCOLOUR wxSYS_COLOUR_3DFACE
522@@ -184,9 +193,6 @@ public:
523                }
524        }
525 
526-#ifdef __WXGTK__
527-       virtual GdkWindow* GetGDKWindow() const { return m_original_dc->GetGDKWindow(); }
528-#endif
529 protected:
530        int m_gradient_called;
531        int m_rectangle_called;
532@@ -215,9 +221,15 @@ public:
533        virtual wxAuiTabArt* Clone()
534        {
535                wxAuiTabArtEx *art = new wxAuiTabArtEx(m_pNotebook, m_bottom, m_data);
536+#if wxCHECK_VERSION(2, 9, 0)
537+               art->SetNormalFont(m_normalFont);
538+               art->SetSelectedFont(m_selectedFont);
539+               art->SetMeasuringFont(m_measuringFont);
540+#else
541                art->SetNormalFont(m_normal_font);
542                art->SetSelectedFont(m_selected_font);
543                art->SetMeasuringFont(m_measuring_font);
544+#endif
545                return art;
546        }
547 
548@@ -257,12 +269,21 @@ public:
549                                                 int* x_extent)
550        {
551 #ifndef __WXMAC__
552+#if wxCHECK_VERSION(2, 9, 0)
553+               m_baseColour = wxSystemSettings::GetColour(TABCOLOUR);
554+#else
555                m_base_colour = wxSystemSettings::GetColour(TABCOLOUR);
556 #endif
557+#endif
558                if (!pane.active)
559                {
560+#if wxCHECK_VERSION(2, 9, 0)
561+                       if (m_baseColour.Red() + m_baseColour.Green() + m_baseColour.Blue() >= 384)
562+                               m_baseColour = wxColour( m_baseColour.Red() * 0.95, m_baseColour.Green() * 0.95, m_baseColour.Blue() * 0.95 );
563+#else
564                        if (m_base_colour.Red() + m_base_colour.Green() + m_base_colour.Blue() >= 384)
565                                m_base_colour = wxColour( m_base_colour.Red() * 0.95, m_base_colour.Green() * 0.95, m_base_colour.Blue() * 0.95 );
566+#endif
567 
568                        dc.SetTextForeground(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT));
569                        if (m_pNotebook->Highlighted(m_pNotebook->GetPageIndex(pane.window)))
570@@ -270,27 +291,49 @@ public:
571                                if (!m_fonts_initialized)
572                                {
573                                        m_fonts_initialized = true;
574+#if wxCHECK_VERSION(2, 9, 0)
575+                                       m_original_normal_font = m_normalFont;
576+                                       m_highlighted_font = m_normalFont;
577+#else
578                                        m_original_normal_font = m_normal_font;
579                                        m_highlighted_font = m_normal_font;
580+#endif
581                                        m_highlighted_font.SetWeight(wxFONTWEIGHT_BOLD);
582                                        m_highlighted_font.SetStyle(wxFONTSTYLE_ITALIC);
583                                }
584+#if wxCHECK_VERSION(2, 9, 0)
585+                               m_normalFont = m_highlighted_font;
586+#else
587                                m_normal_font = m_highlighted_font;
588+#endif
589                        }
590                        else if (m_fonts_initialized)
591+#if wxCHECK_VERSION(2, 9, 0)
592+                               m_normalFont = m_original_normal_font;
593+#else
594                                m_normal_font = m_original_normal_font;
595+#endif
596                }
597-
598+#if wxCHECK_VERSION(2, 9, 0)
599+               CFilterDC filter_dc(dc, pane.active ? 1 : 0, (m_tabCtrlHeight % 2) != 0, m_bottom);
600+               wxAuiGenericTabArt::DrawTab(*((wxDC*)&filter_dc), wnd, pane, in_rect, close_button_state, out_tab_rect, out_button_rect, x_extent);
601+               m_baseColour = wxSystemSettings::GetColour(TABCOLOUR);
602+#else
603                CFilterDC filter_dc(dc, pane.active ? 1 : 0, (m_tab_ctrl_height % 2) != 0, m_bottom);
604                wxAuiDefaultTabArt::DrawTab(*((wxDC*)&filter_dc), wnd, pane, in_rect, close_button_state, out_tab_rect, out_button_rect, x_extent);
605-
606                m_base_colour = wxSystemSettings::GetColour(TABCOLOUR);
607+#endif
608        }
609 
610        virtual void DrawBackground(wxDC& dc, wxWindow* wnd, const wxRect& rect)
611        {
612+#if wxCHECK_VERSION(2, 9, 0)
613+               CFilterDC filter_dc(dc, 2, (m_tabCtrlHeight % 2) != 0, m_bottom);
614+               wxAuiGenericTabArt::DrawBackground(*((wxDC*)&filter_dc), wnd, rect);
615+#else
616                CFilterDC filter_dc(dc, 2, (m_tab_ctrl_height % 2) != 0, m_bottom);
617                wxAuiDefaultTabArt::DrawBackground(*((wxDC*)&filter_dc), wnd, rect);
618+#endif
619        }
620 protected:
621        wxAuiNotebookEx* m_pNotebook;
622--- src/interface/commandqueue.cpp.orig
623+++ src/interface/commandqueue.cpp
624@@ -289,7 +289,7 @@ void CCommandQueue::GrantExclusiveEngineRequest()
625 
626        wxCommandEvent evt(fzEVT_GRANTEXCLUSIVEENGINEACCESS);
627        evt.SetId(m_requestId);
628-       m_pMainFrame->GetQueue()->AddPendingEvent(evt);
629+       m_pMainFrame->GetQueue()->GetEventHandler()->AddPendingEvent(evt);
630 }
631 
632 CFileZillaEngine* CCommandQueue::GetEngineExclusive(int requestId)
633--- src/interface/filezilla.h.orig
634+++ src/interface/filezilla.h
635@@ -71,5 +71,6 @@
636 #include <wx/toolbar.h>
637 #include <wx/treectrl.h>
638 #include <wx/xrc/xmlres.h>
639+#include <wx/xml/xml.h>
640 
641 #endif
642--- src/interface/import.cpp.orig
643+++ src/interface/import.cpp
644@@ -146,7 +146,7 @@ wxString CImportDialog::DecodeLegacyPassword(wxString pass)
645                        return _T("");
646                int number = (pass[i] - '0') * 100 +
647                                                (pass[i + 1] - '0') * 10 +
648-                                               pass[i + 2] - '0';
649+                                               (pass[i + 2] - '0');
650                wxChar c = number ^ key[(i / 3 + pos) % strlen(key)];
651                output += c;
652        }
653--- src/interface/listctrlex.cpp.orig
654+++ src/interface/listctrlex.cpp
655@@ -73,7 +73,7 @@ wxListCtrlEx::~wxListCtrlEx()
656 #ifndef __WXMSW__
657 wxScrolledWindow* wxListCtrlEx::GetMainWindow() const
658 {
659-#ifdef __WXMAC__
660+#if defined(__WXMAC__) && !wxCHECK_VERSION(2, 9, 0)
661        return (wxScrolledWindow*)m_genericImpl->m_mainWin;
662 #else
663        return (wxScrolledWindow*)m_mainWin;
664--- src/interface/netconfwizard.cpp.orig
665+++ src/interface/netconfwizard.cpp
666@@ -777,7 +777,12 @@ void CNetConfWizard::SendNextCommand()
667                        wxString hexIP = ip;
668                        for (unsigned int i = 0; i < hexIP.Length(); i++)
669                        {
670+#if wxCHECK_VERSION(2, 9, 0)
671+                               char c;
672+                               hexIP.GetChar(i).GetAsChar(&c);
673+#else
674                                wxChar& c = hexIP[i];
675+#endif
676                                if (c == '.')
677                                        c = '-';
678                                else
679--- src/interface/queue.cpp.orig
680+++ src/interface/queue.cpp
681@@ -1310,7 +1310,7 @@ void CQueueViewBase::DisplayNumberQueuedFiles()
682        }
683        else
684        {
685-               if (m_folderScanCount)
686+               if (m_folderScanCount && m_fileCount > 0)
687                        str.Printf(m_title + _T(" (0+)"), m_fileCount);
688                else
689                        str = m_title;
690@@ -1442,7 +1442,11 @@ void CQueueViewBase::RefreshItem(const CQueueItem* pItem)
691 void CQueueViewBase::OnNavigationKey(wxNavigationKeyEvent& event)
692 {
693        event.SetEventObject(m_pQueue);
694+#if wxCHECK_VERSION(2, 9, 0)
695+       m_pQueue->ProcessWindowEvent(event);
696+#else
697        m_pQueue->ProcessEvent(event);
698+#endif
699 }
700 
701 void CQueueViewBase::OnChar(wxKeyEvent& event)
702--- src/interface/queue_storage.cpp.orig
703+++ src/interface/queue_storage.cpp
704@@ -135,7 +135,11 @@ struct fast_equal
705        {
706                // wxString is CoW, yet it doesn't even do this fast pointer
707                // comparison in it's less and/or equal operator(s).
708+#if wxCHECK_VERSION(2, 9, 0)
709+               return (const char*)lhs.c_str() == (const char*)rhs.c_str() || lhs == rhs;
710+#else
711                return lhs.c_str() == rhs.c_str() || lhs == rhs;
712+#endif
713        }
714 };
715 
716@@ -544,9 +548,11 @@ bool CQueueStorage::Impl::Bind(sqlite3_stmt* statement, int index, wxLongLong_t
717 extern "C" {
718 static void custom_free(void* v)
719 {
720-#ifdef __WXMSW__
721+#if defined(__WXMSW__)
722+#if !wxCHECK_VERSION(2, 9, 0)
723        wxStringData* data = reinterpret_cast<wxStringData*>(v) - 1;
724        data->Unlock();
725+#endif
726 #else
727        char* s = reinterpret_cast<char*>(v);
728        delete [] s;
729@@ -557,11 +563,16 @@ static void custom_free(void* v)
730 bool CQueueStorage::Impl::Bind(sqlite3_stmt* statement, int index, const wxString& value)
731 {
732 #ifdef __WXMSW__
733+#if wxCHECK_VERSION(2, 9, 0)
734+       char* data = value.char_str();
735+       return sqlite3_bind_text16(statement, index, data, value.length(), custom_free) == SQLITE_OK;
736+#else
737        // Increase string reference and pass the data to sqlite with a custom deallocator that
738        // reduces the reference once sqlite is done with it.
739        wxStringData* data = reinterpret_cast<wxStringData*>(const_cast<wxChar*>(value.c_str())) - 1;
740        data->Lock();
741        return sqlite3_bind_text16(statement, index, data + 1, data->nDataLength * 2, custom_free) == SQLITE_OK;
742+#endif
743 #else
744        char* out = new char[value.size() * 2];
745        size_t outlen = utf16_.FromWChar(out, value.size() * 2, value.c_str(), value.size());
746@@ -814,9 +825,18 @@ wxString CQueueStorage::Impl::GetColumnText(sqlite3_stmt* statement, int index,
747        int len = sqlite3_column_bytes16(statement, index);
748        if (text)
749        {
750+#if wxCHECK_VERSION(2, 9, 0)
751+               wxStringBuffer* buffer = new wxStringBuffer(ret, len);
752+               wxChar* out = *buffer;
753+#else
754                wxChar* out = ret.GetWriteBuf( len );
755+#endif
756                int outlen = utf16_.ToWChar( out, len, text, len );
757+#if wxCHECK_VERSION(2, 9, 0)
758+               delete buffer;
759+#else
760                ret.UngetWriteBuf( outlen );
761+#endif
762                if (shrink)
763                        ret.Shrink();
764        }
765--- src/interface/quickconnectbar.cpp.orig
766+++ src/interface/quickconnectbar.cpp
767@@ -222,12 +222,12 @@ void CQuickconnectBar::OnKeyboardNavigation(wxNavigationKeyEvent& event)
768        if (event.GetDirection() && event.GetEventObject() == XRCCTRL(*this, "ID_QUICKCONNECT_DROPDOWN", wxButton))
769        {
770                event.SetEventObject(this);
771-               GetParent()->ProcessEvent(event);
772+               GetParent()->GetEventHandler()->ProcessEvent(event);
773        }
774        else if (!event.GetDirection() && event.GetEventObject() == m_pHost)
775        {
776                event.SetEventObject(this);
777-               GetParent()->ProcessEvent(event);
778+               GetParent()->GetEventHandler()->ProcessEvent(event);
779        }
780        else
781                event.Skip();
782--- src/interface/resources/settings.xrc.orig
783+++ src/interface/resources/settings.xrc
784@@ -427,7 +427,7 @@
785               </object>
786               <cols>1</cols>
787               <vgap>3</vgap>
788-              <rows>2</rows>
789+              <rows>3</rows>
790             </object>
791             <flag>wxLEFT|wxRIGHT|wxBOTTOM</flag>
792             <border>4</border>
793@@ -632,9 +632,9 @@
794               <object class="sizeritem">
795                 <object class="wxListCtrl" name="ID_KEYS">
796                   <style>wxLC_REPORT|wxSUNKEN_BORDER</style>
797+                                                                       <size>400,-1</size>
798                 </object>
799-                <option>1</option>
800-                <flag>wxGROW</flag>
801+                <flag>wxSHAPED</flag>
802               </object>
803               <vgap>5</vgap>
804               <growablecols>0</growablecols>
805@@ -1363,7 +1363,7 @@
806           <object class="sizeritem">
807             <object class="wxFlexGridSizer">
808               <cols>2</cols>
809-              <rows>2</rows>
810+              <rows>3</rows>
811               <object class="sizeritem">
812                 <object class="wxStaticText">
813                   <label>&amp;Theme:</label>
814@@ -2076,7 +2076,6 @@
815                   </object>
816                   <growablecols>1</growablecols>
817                 </object>
818-                <flag>wxGROW</flag>
819                 <minsize>400,0</minsize>
820               </object>
821               <growablecols>0</growablecols>
822--- src/interface/settings/optionspage_dateformatting.cpp.orig
823+++ src/interface/settings/optionspage_dateformatting.cpp
824@@ -16,7 +16,7 @@ bool COptionsPageDateFormatting::LoadPage()
825        const wxString& dateFormat = m_pOptions->GetOption(OPTION_DATE_FORMAT);
826        if (dateFormat == _T("1"))
827                SetRCheck(XRCID("ID_DATEFORMAT_ISO"), true, failure);
828-       else if (dateFormat[0] == '2')
829+       else if (!dateFormat.IsEmpty() && dateFormat[0] == '2')
830        {
831                SetRCheck(XRCID("ID_DATEFORMAT_CUSTOM"), true, failure);
832                SetText(XRCID("ID_CUSTOM_DATEFORMAT"), dateFormat.Mid(1), failure);
833@@ -27,7 +27,7 @@ bool COptionsPageDateFormatting::LoadPage()
834        const wxString& timeFormat = m_pOptions->GetOption(OPTION_TIME_FORMAT);
835        if (timeFormat == _T("1"))
836                SetRCheck(XRCID("ID_TIMEFORMAT_ISO"), true, failure);
837-       else if (timeFormat[0] == '2')
838+       else if (!timeFormat.IsEmpty() && timeFormat[0] == '2')
839        {
840                SetRCheck(XRCID("ID_TIMEFORMAT_CUSTOM"), true, failure);
841                SetText(XRCID("ID_CUSTOM_TIMEFORMAT"), timeFormat.Mid(1), failure);
842--- src/interface/sitemanager.cpp.orig
843+++ src/interface/sitemanager.cpp
844@@ -516,6 +516,8 @@ CSiteManagerItemData_Site* CSiteManager::GetSiteByPath(wxString sitePath)
845 
846 bool CSiteManager::GetBookmarks(wxString sitePath, std::list<wxString> &bookmarks)
847 {
848+       if (sitePath.IsEmpty())
849+               return false;
850        wxChar c = sitePath[0];
851        if (c != '0' && c != '1')
852                return false;
853--- src/interface/statusbar.cpp.orig
854+++ src/interface/statusbar.cpp
855@@ -153,10 +153,10 @@ void wxStatusBarEx::OnSize(wxSizeEvent& event)
856 void wxStatusBarEx::SetStatusText(const wxString& text, int number /*=0*/)
857 {
858        // Basically identical to the wx one, but not calling Update
859-       wxString oldText = m_statusStrings[number];
860+       wxString oldText = GetStatusText(number);
861        if (oldText != text)
862        {
863-               m_statusStrings[number] = text;
864+               wxStatusBar::SetStatusText(text, number);
865 
866                wxRect rect;
867                GetFieldRect(number, rect);
868--- src/interface/timeformatting.cpp.orig
869+++ src/interface/timeformatting.cpp
870@@ -23,7 +23,7 @@ public:
871 
872                if (dateFormat == _T("1"))
873                        m_dateFormat = _T("%Y-%m-%d");
874-               else if (dateFormat[0] == '2')
875+               else if (!dateFormat.IsEmpty() && dateFormat[0] == '2')
876                        m_dateFormat = dateFormat.Mid(1);
877                else
878                        m_dateFormat = _T("%x");
879@@ -33,7 +33,7 @@ public:
880 
881                if (timeFormat == _T("1"))
882                        m_dateTimeFormat += _T("%H:%M");
883-               else if (timeFormat[0] == '2')
884+               else if (!timeFormat.IsEmpty() && timeFormat[0] == '2')
885                        m_dateTimeFormat += timeFormat.Mid(1);
886                else
887                        m_dateTimeFormat += _T("%X");
888--- src/interface/viewheader.cpp.orig
889+++ src/interface/viewheader.cpp
890@@ -24,7 +24,11 @@
891 {
892 public:
893        CComboBoxEx(CViewHeader* parent)
894-               : wxComboBox(parent, wxID_ANY, _T(""), wxDefaultPosition, wxDefaultSize, wxArrayString(), wxCB_DROPDOWN | wxTE_PROCESS_ENTER | wxCB_SORT)
895+               : wxComboBox(parent, wxID_ANY, _T(""), wxDefaultPosition, wxDefaultSize, wxArrayString(), wxCB_DROPDOWN | wxTE_PROCESS_ENTER
896+#if !defined(__WXMAC__) || !wxCHECK_VERSION(2, 9, 0)
897+            | wxCB_SORT
898+#endif
899+    )
900        {
901                m_parent = parent;
902        }
903@@ -67,7 +71,7 @@
904                navEvent.SetDirection(!event.ShiftDown());
905                navEvent.SetFromTab(true);
906                navEvent.ResumePropagation(1);
907-               m_parent->ProcessEvent(navEvent);
908+               m_parent->GetEventHandler()->ProcessEvent(navEvent);
909        }
910 
911        void OnChar(wxKeyEvent& event)
912--- src/interface/wrapengine.cpp.orig
913+++ src/interface/wrapengine.cpp
914@@ -234,24 +234,24 @@ bool CWrapEngine::WrapText(wxWindow* parent, wxString& text, unsigned long maxLe
915        bool containsURL = false;
916        for (int i = 0; i <= strLen; i++)
917        {
918-               if ((text[i] == ':' && text[i + 1] == '/' && text[i + 2] == '/') || // absolute
919-                       (text[i] == '/' && (!i || text[i - 1] == ' '))) // relative
920+               if ((i < strLen - 2 && text[i] == ':' && text[i + 1] == '/' && text[i + 2] == '/') || // absolute
921+                       (i < strLen && text[i] == '/' && (!i || text[i - 1] == ' '))) // relative
922                {
923                        url = true;
924                        containsURL = true;
925                }
926-               if (text[i] != ' ' && text[i] != 0)
927+               if (i < strLen && text[i] != ' ')
928                {
929                        // If url, wrap on slashes and ampersands, but not first slash of something://
930                        if (!url ||
931-                                ((text[i] != '/' || text[i + 1] == '/') && (text[i] != '&' || text[i + 1] == '&') && text[i] != '?'))
932+                                ((i < strLen - 1 && (text[i] != '/' || text[i + 1] == '/')) && (i < strLen - 1 && (text[i] != '&' || text[i + 1] == '&')) && text[i] != '?'))
933                        continue;
934                }
935 
936                wxString segment;
937                if (wrapAfter == -1)
938                {
939-                       if (text[i] == '/' || text[i] == '?' || text[i] == '&')
940+                       if (i < strLen && (text[i] == '/' || text[i] == '?' || text[i] == '&'))
941                                segment = text.Mid(start, i - start + 1);
942                        else
943                                segment = text.Mid(start, i - start);
944@@ -259,7 +259,7 @@ bool CWrapEngine::WrapText(wxWindow* parent, wxString& text, unsigned long maxLe
945                }
946                else
947                {
948-                       if (text[i] == '/' || text[i] == '?' || text[i] == '&')
949+                       if (i < strLen && (text[i] == '/' || text[i] == '?' || text[i] == '&'))
950                                segment = text.Mid(wrapAfter + 1, i - wrapAfter);
951                        else
952                                segment = text.Mid(wrapAfter + 1, i - wrapAfter - 1);
953@@ -274,7 +274,7 @@ bool CWrapEngine::WrapText(wxWindow* parent, wxString& text, unsigned long maxLe
954                        if (wrappedText != _T(""))
955                                wrappedText += _T("\n");
956                        wrappedText += text.Mid(start, wrapAfter - start);
957-                       if (text[wrapAfter] != ' ' && text[wrapAfter] != '\0')
958+                       if (wrapAfter < strLen && text[wrapAfter] != ' ' && text[wrapAfter] != '\0')
959                                wrappedText += text[wrapAfter];
960 
961                        if (width + spaceWidth >= (int)maxLength)
962@@ -304,7 +304,7 @@ bool CWrapEngine::WrapText(wxWindow* parent, wxString& text, unsigned long maxLe
963                        if (wrappedText != _T(""))
964                                wrappedText += _T("\n");
965                        wrappedText += text.Mid(start, i - start);
966-                       if (text[i] != ' ' && text[i] != '\0')
967+                       if (i < strLen && text[i] != ' ' && text[i] != '\0')
968                                wrappedText += text[i];
969                        start = i + 1;
970                        wrapAfter = -1;
971@@ -318,7 +318,7 @@ bool CWrapEngine::WrapText(wxWindow* parent, wxString& text, unsigned long maxLe
972                        wrapAfter = i;
973                }
974 
975-               if (text[i] == ' ')
976+               if (i < strLen && text[i] == ' ')
977                        url = false;
978        }
979        if (start < strLen)
Note: See TracBrowser for help on using the repository browser.