]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/window.cpp
wxExecute() fixes and doc updates: the return value for sync exec case is now
[wxWidgets.git] / src / msw / window.cpp
index 569dec2dd6c5bcca35163decf16e4cf9cb1f9cab..8b970ba6960d03663b16d8ddde0bda47bb8e8bb2 100644 (file)
 
 #include "wx/menuitem.h"
 #include "wx/log.h"
 
 #include "wx/menuitem.h"
 #include "wx/log.h"
+
+#if wxUSE_TOOLTIPS
 #include "wx/tooltip.h"
 #include "wx/tooltip.h"
+#endif
+
+#include "wx/intl.h"
+#include "wx/log.h"
 
 #include "wx/msw/private.h"
 
 
 #include "wx/msw/private.h"
 
@@ -764,13 +770,14 @@ void wxWindow::AdjustForParentClientOrigin(int& x, int& y, int sizeFlags)
 
 bool wxWindow::Show(bool show)
 {
 
 bool wxWindow::Show(bool show)
 {
+    m_isShown = show;
     HWND hWnd = (HWND) GetHWND();
     int cshow;
     if (show)
         cshow = SW_SHOW;
     else
         cshow = SW_HIDE;
     HWND hWnd = (HWND) GetHWND();
     int cshow;
     if (show)
         cshow = SW_SHOW;
     else
         cshow = SW_HIDE;
-    ShowWindow(hWnd, (BOOL)cshow);
+    ShowWindow(hWnd, cshow);
     if (show)
     {
         BringWindowToTop(hWnd);
     if (show)
     {
         BringWindowToTop(hWnd);
@@ -782,7 +789,11 @@ bool wxWindow::Show(bool show)
 
 bool wxWindow::IsShown(void) const
 {
 
 bool wxWindow::IsShown(void) const
 {
-    return (::IsWindowVisible((HWND) GetHWND()) != 0);
+    // Can't rely on IsWindowVisible, since it will return FALSE
+    // if the parent is not visible.
+    return m_isShown;
+//    int ret = ::IsWindowVisible((HWND) GetHWND()) ;
+//    return (ret != 0);
 }
 
 int wxWindow::GetCharHeight(void) const
 }
 
 int wxWindow::GetCharHeight(void) const
@@ -1223,10 +1234,19 @@ long wxWindow::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
         }
 
     case WM_KEYDOWN:
         }
 
     case WM_KEYDOWN:
-        MSWOnKeyDown((WORD) wParam, lParam);
-        // we consider these message "not interesting"
+    {
+        // If this has been processed by an event handler,
+        // return 0 now (we've handled it).
+        if (MSWOnKeyDown((WORD) wParam, lParam))
+        {
+            return 0;
+        }
+
+        // we consider these message "not interesting" to OnChar
         if ( wParam == VK_SHIFT || wParam == VK_CONTROL )
         if ( wParam == VK_SHIFT || wParam == VK_CONTROL )
+        {
             return Default();
             return Default();
+        }
 
         // Avoid duplicate messages to OnChar for these special keys
         switch ( wParam )
 
         // Avoid duplicate messages to OnChar for these special keys
         switch ( wParam )
@@ -1240,27 +1260,36 @@ long wxWindow::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
             case VK_RIGHT:
             case VK_DOWN:
             case VK_UP:
             case VK_RIGHT:
             case VK_DOWN:
             case VK_UP:
-                if ( ::GetKeyState(VK_CONTROL) & 0x100 )
-                    MSWOnChar((WORD)wParam, lParam);
+/*
+//            if ( ::GetKeyState(VK_CONTROL) & 0x100 ) // Don't understand purpose of this test
+                if (!MSWOnChar((WORD)wParam, lParam))
+                    return Default();
                 break;
                 break;
-
+*/
             default:
             default:
-                MSWOnChar((WORD)wParam, lParam);
+                if (!MSWOnChar((WORD)wParam, lParam))
+                {
+                    return Default();
+                }
+/*
                 if ( ::GetKeyState(VK_CONTROL) & 0x100 )
                     return Default();
                 if ( ::GetKeyState(VK_CONTROL) & 0x100 )
                     return Default();
+*/
                 break;
         }
 
         break;
                 break;
         }
 
         break;
-
+    }
     case WM_KEYUP:
     {
     case WM_KEYUP:
     {
-        MSWOnKeyUp((WORD) wParam, lParam);
+        if (!MSWOnKeyUp((WORD) wParam, lParam))
+            return Default();
         break;
     }
     case WM_CHAR: // Always an ASCII character
         {
         break;
     }
     case WM_CHAR: // Always an ASCII character
         {
-            MSWOnChar((WORD)wParam, lParam, TRUE);
+            if (!MSWOnChar((WORD)wParam, lParam, TRUE))
+                return Default();
             break;
         }
 
             break;
         }
 
@@ -2017,7 +2046,7 @@ bool wxWindow::MSWProcessMessage(WXMSG* pMsg)
                             // it
                             return FALSE;
                         }
                             // it
                             return FALSE;
                         }
-
+#ifndef __WIN16__
                         wxButton *btnDefault = GetDefaultItem();
                         if ( btnDefault && !bCtrlDown )
                         {
                         wxButton *btnDefault = GetDefaultItem();
                         if ( btnDefault && !bCtrlDown )
                         {
@@ -2030,6 +2059,7 @@ bool wxWindow::MSWProcessMessage(WXMSG* pMsg)
                         // else: but if there is not it makes sense to make it
                         //       work like a TAB - and that's what we do.
                         //       Note that Ctrl-Enter always works this way.
                         // else: but if there is not it makes sense to make it
                         //       work like a TAB - and that's what we do.
                         //       Note that Ctrl-Enter always works this way.
+#endif
                     }
                     break;
 
                     }
                     break;
 
@@ -2456,7 +2486,7 @@ void wxWindow::MSWOnMouseLeave(int x, int y, WXUINT flags)
     GetEventHandler()->ProcessEvent(event);
 }
 
     GetEventHandler()->ProcessEvent(event);
 }
 
-void wxWindow::MSWOnChar(WXWORD wParam, WXLPARAM lParam, bool isASCII)
+bool wxWindow::MSWOnChar(WXWORD wParam, WXLPARAM lParam, bool isASCII)
 {
     int id;
     bool tempControlDown = FALSE;
 {
     int id;
     bool tempControlDown = FALSE;
@@ -2518,12 +2548,16 @@ void wxWindow::MSWOnChar(WXWORD wParam, WXLPARAM lParam, bool isASCII)
 
         event.m_x = pt.x; event.m_y = pt.y;
 
 
         event.m_x = pt.x; event.m_y = pt.y;
 
-        if (!GetEventHandler()->ProcessEvent(event))
-            Default();
+        if (GetEventHandler()->ProcessEvent(event))
+            return TRUE;
+        else
+            return FALSE;
     }
     }
+    else
+        return FALSE;
 }
 
 }
 
-void wxWindow::MSWOnKeyDown(WXWORD wParam, WXLPARAM lParam, bool isASCII)
+bool wxWindow::MSWOnKeyDown(WXWORD wParam, WXLPARAM lParam, bool isASCII)
 {
     int id;
 
 {
     int id;
 
@@ -2552,12 +2586,19 @@ void wxWindow::MSWOnKeyDown(WXWORD wParam, WXLPARAM lParam, bool isASCII)
 
         event.m_x = pt.x; event.m_y = pt.y;
 
 
         event.m_x = pt.x; event.m_y = pt.y;
 
-        if (!GetEventHandler()->ProcessEvent(event))
-            Default();
+        if (GetEventHandler()->ProcessEvent(event))
+        {
+            return TRUE;
+        }
+        else return FALSE;
+    }
+    else
+    {
+        return FALSE;
     }
 }
 
     }
 }
 
-void wxWindow::MSWOnKeyUp(WXWORD wParam, WXLPARAM lParam, bool isASCII)
+bool wxWindow::MSWOnKeyUp(WXWORD wParam, WXLPARAM lParam, bool isASCII)
 {
     int id;
 
 {
     int id;
 
@@ -2586,9 +2627,13 @@ void wxWindow::MSWOnKeyUp(WXWORD wParam, WXLPARAM lParam, bool isASCII)
 
         event.m_x = pt.x; event.m_y = pt.y;
 
 
         event.m_x = pt.x; event.m_y = pt.y;
 
-        if (!GetEventHandler()->ProcessEvent(event))
-            Default();
+        if (GetEventHandler()->ProcessEvent(event))
+            return TRUE;
+        else
+            return FALSE;
     }
     }
+    else
+        return FALSE;
 }
 
 void wxWindow::MSWOnJoyDown(int joystick, int x, int y, WXUINT flags)
 }
 
 void wxWindow::MSWOnJoyDown(int joystick, int x, int y, WXUINT flags)
@@ -3666,10 +3711,25 @@ void wxWindow::OnChar(wxKeyEvent& event)
     if ( id == -1 )
         id= m_lastWParam;
 
     if ( id == -1 )
         id= m_lastWParam;
 
-    if ( !event.ControlDown() )
+    if ( !event.ControlDown() ) // Why this test?
         (void) MSWDefWindowProc(m_lastMsg, (WPARAM) id, m_lastLParam);
 }
 
         (void) MSWDefWindowProc(m_lastMsg, (WPARAM) id, m_lastLParam);
 }
 
+void wxWindow::OnKeyDown(wxKeyEvent& event)
+{
+    Default();
+}
+
+void wxWindow::OnKeyUp(wxKeyEvent& event)
+{
+    Default();
+}
+
+void wxWindow::OnPaint(wxPaintEvent& event)
+{
+    Default();
+}
+
 bool wxWindow::IsEnabled(void) const
 {
     return (::IsWindowEnabled((HWND) GetHWND()) != 0);
 bool wxWindow::IsEnabled(void) const
 {
     return (::IsWindowEnabled((HWND) GetHWND()) != 0);