]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/utilscmn.cpp
Added many WXUNUSED, untabified once again.
[wxWidgets.git] / src / common / utilscmn.cpp
index 3f62793a9eb1930cd8b1b42371f8619e1ff288ed..7a971cb5ac3e85c08e787005e42f5c99607031e3 100644 (file)
@@ -78,7 +78,7 @@
 #endif
 
 #ifdef __WXMSW__
-    #include "windows.h"
+    #include "wx/msw/private.h"
 #endif
 
 // ----------------------------------------------------------------------------
@@ -983,6 +983,17 @@ wxWindowDisabler::wxWindowDisabler(wxWindow *winToSkip)
     // remember all windows we're going to (temporarily) disable
     m_winDisabled = new wxWindowList;
 
+#ifdef __WXMSW__
+#ifdef __WIN32__
+    // and the top level window too
+    HWND hwndFG = ::GetForegroundWindow();
+    m_winTop = hwndFG ? wxFindWinFromHandle((WXHWND)hwndFG) : (wxWindow *)NULL;
+#else
+    HWND hwndFG = ::GetTopWindow();
+    m_winTop = hwndFG ? wxFindWinFromHandle((WXHWND)hwndFG) : (wxWindow *)NULL;
+#endif
+#endif // MSW
+
     wxWindowList::Node *node;
     for ( node = wxTopLevelWindows.GetFirst(); node; node = node->GetNext() )
     {
@@ -1013,6 +1024,29 @@ wxWindowDisabler::~wxWindowDisabler()
     }
 
     delete m_winDisabled;
+
+#ifdef __WXMSW__
+#ifdef __WIN32__
+    if ( m_winTop )
+    {
+        if ( !::SetForegroundWindow(GetHwndOf(m_winTop)) )
+        {
+            wxLogLastError("SetForegroundWindow");
+        }
+    }
+#else
+    if ( m_winTop )
+    {
+        // 16-bit SetForegroundWindow() replacement
+        RECT reWin;
+        GetWindowRect(m_winTop, &reWin);
+        SetWindowPos (m_winTop, HWND_TOP,
+                             reWin.left, reWin.top, 
+                             reWin.right - reWin.left, reWin.bottom, 
+                             SWP_SHOWWINDOW);
+    }
+#endif
+#endif // MSW
 }
 
 // Yield to other apps/messages and disable user input to all windows except
@@ -1188,7 +1222,7 @@ long wxExecute(const wxString& command, wxArrayString& output)
     {
         wxInputStream& is = *process->GetInputStream();
         wxTextInputStream tis(is);
-        while ( !is.Eof() )
+        while ( !is.Eof() && is.IsOk() )
         {
             wxString line = tis.ReadLine();
             if ( is.LastError() )