Обсуждение: SVN Commit by dpage: r4744 - in trunk/pgadmin3/src: ctl include/ctl
Author: dpage
Date: 2005-11-16 21:57:28 +0000 (Wed, 16 Nov 2005)
New Revision: 4744
Modified:
trunk/pgadmin3/src/ctl/ctlSQLBox.cpp
trunk/pgadmin3/src/include/ctl/ctlSQLBox.h
Log:
Swap between Find/Replace dialogues correctly on non-windows platforms properly. Looks like we might have to live with
slightlyodd behaviour on Windows due to the design of wx :-(
Modified: trunk/pgadmin3/src/ctl/ctlSQLBox.cpp
===================================================================
--- trunk/pgadmin3/src/ctl/ctlSQLBox.cpp 2005-11-12 19:28:35 UTC (rev 4743)
+++ trunk/pgadmin3/src/ctl/ctlSQLBox.cpp 2005-11-16 21:57:28 UTC (rev 4744)
@@ -295,13 +295,18 @@
ctlSQLBox::ctlSQLBox()
{
m_dlgFind=0;
+#ifndef __WXMSW__
+ findDlgLast = false;
+#endif
}
ctlSQLBox::ctlSQLBox(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style)
{
m_dlgFind=0;
-
+#ifndef __WXMSW__
+ findDlgLast = false;
+#endif
Create(parent, id, pos, size, style);
}
@@ -369,11 +374,21 @@
void ctlSQLBox::OnFind(wxCommandEvent& ev)
{
+#ifndef __WXMSW__
+ if (m_dlgFind && !findDlgLast)
+ {
+ m_dlgFind->Destroy();
+ m_dlgFind = NULL;
+ }
+#endif
+
if (!m_dlgFind)
{
m_dlgFind = new wxFindReplaceDialog(this, &m_findData, _("Find text"), 0);
-
m_dlgFind->Show(true);
+#ifndef __WXMSW__
+ findDlgLast = true;
+#endif
}
else
m_dlgFind->SetFocus();
@@ -382,11 +397,21 @@
void ctlSQLBox::OnReplace(wxCommandEvent& ev)
{
+#ifndef __WXMSW__
+ if (m_dlgFind && findDlgLast)
+ {
+ m_dlgFind->Destroy();
+ m_dlgFind = NULL;
+ }
+#endif
+
if (!m_dlgFind)
{
m_dlgFind = new wxFindReplaceDialog(this, &m_findData, _("Find text"), wxFR_REPLACEDIALOG);
-
m_dlgFind->Show(true);
+#ifndef __WXMSW__
+ findDlgLast = false;
+#endif
}
else
m_dlgFind->SetFocus();
Modified: trunk/pgadmin3/src/include/ctl/ctlSQLBox.h
===================================================================
--- trunk/pgadmin3/src/include/ctl/ctlSQLBox.h 2005-11-12 19:28:35 UTC (rev 4743)
+++ trunk/pgadmin3/src/include/ctl/ctlSQLBox.h 2005-11-16 21:57:28 UTC (rev 4744)
@@ -29,8 +29,6 @@
~ctlSQLBox();
void Create(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, const wxSize& size =
wxDefaultSize,long style = 0);
- wxFindReplaceData m_findData;
- wxFindReplaceDialog* m_dlgFind;
void OnKeyDown(wxKeyEvent& event);
void OnFind(wxCommandEvent& event);
@@ -39,6 +37,14 @@
DECLARE_DYNAMIC_CLASS(ctlSQLBox)
DECLARE_EVENT_TABLE()
+
+private:
+ wxFindReplaceData m_findData;
+ wxFindReplaceDialog* m_dlgFind;
+#ifndef __WXMSW__
+ bool findDlgLast;
+#endif
+
};
svn@pgadmin.org wrote: >Author: dpage >Date: 2005-11-16 21:57:28 +0000 (Wed, 16 Nov 2005) >New Revision: 4744 > >Modified: > trunk/pgadmin3/src/ctl/ctlSQLBox.cpp > trunk/pgadmin3/src/include/ctl/ctlSQLBox.h >Log: >Swap between Find/Replace dialogues correctly on non-windows platforms properly. Looks like we might have to live with slightlyodd behaviour on Windows due to the design of wx :-( > > Hu, slightly odd? Isn't this crashing for you? It did for me, since apparently there are messages stuck in the msg queue that aren't removable even by Yield. Regards, Andreas
On 16/11/05 10:13 pm, "Andreas Pflug" <pgadmin@pse-consulting.de> wrote: > svn@pgadmin.org wrote: > >> Author: dpage >> Date: 2005-11-16 21:57:28 +0000 (Wed, 16 Nov 2005) >> New Revision: 4744 >> >> Modified: >> trunk/pgadmin3/src/ctl/ctlSQLBox.cpp >> trunk/pgadmin3/src/include/ctl/ctlSQLBox.h >> Log: >> Swap between Find/Replace dialogues correctly on non-windows platforms >> properly. Looks like we might have to live with slightly odd behaviour on >> Windows due to the design of wx :-( >> >> > > Hu, slightly odd? Isn't this crashing for you? It did for me, since > apparently there are messages stuck in the msg queue that aren't > removable even by Yield. It shouldn't crash on Windows (can't test ATM) because the changes are all #ifndef __WXMSW__. On Unix, wx derives the find/replace dialgue from wxWindows so it can be easily destroyed and recreated in the other form. On Windows that's not the case, and basically you can't fully kill off a dialogue except by pressing a button on it :-( Regards, Dave
Dave Page wrote: > >On 16/11/05 10:13 pm, "Andreas Pflug" <pgadmin@pse-consulting.de> wrote: > > > >>svn@pgadmin.org wrote: >> >> >> >>>Author: dpage >>>Date: 2005-11-16 21:57:28 +0000 (Wed, 16 Nov 2005) >>>New Revision: 4744 >>> >>>Modified: >>> trunk/pgadmin3/src/ctl/ctlSQLBox.cpp >>> trunk/pgadmin3/src/include/ctl/ctlSQLBox.h >>>Log: >>>Swap between Find/Replace dialogues correctly on non-windows platforms >>>properly. Looks like we might have to live with slightly odd behaviour on >>>Windows due to the design of wx :-( >>> >>> >>> >>> >>Hu, slightly odd? Isn't this crashing for you? It did for me, since >>apparently there are messages stuck in the msg queue that aren't >>removable even by Yield. >> >> > >It shouldn't crash on Windows (can't test ATM) because the changes are all >#ifndef __WXMSW__. > 'k, missed that. Regards, Andreas