Thread: SVN Commit by dpage: r4744 - in trunk/pgadmin3/src: ctl include/ctl

SVN Commit by dpage: r4744 - in trunk/pgadmin3/src: ctl include/ctl

From
svn@pgadmin.org
Date:
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
+
 };




Re: SVN Commit by dpage: r4744 - in trunk/pgadmin3/src:

From
Andreas Pflug
Date:
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


Re: SVN Commit by dpage: r4744 - in

From
Dave Page
Date:


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



Re: SVN Commit by dpage: r4744 - in trunk/pgadmin3/src:

From
Andreas Pflug
Date:
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