]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/window.cpp
pc 2 mac conversion for file operations
[wxWidgets.git] / src / msw / window.cpp
index f20368679056a6bbd50b932ec4a046b0ae4abf64..21a1c344cd22b2feec545c9e84c18c30899f602d 100644 (file)
@@ -176,25 +176,16 @@ static bool gs_hasStdCmap = FALSE;
 // ---------------------------------------------------------------------------
 
 // the window proc for all our windows
-#ifdef __DIGITALMARS__
-extern "C" LRESULT WXDLLEXPORT APIENTRY _EXPORT wxWndProc(HWND hWnd, UINT message,
-                                   WPARAM wParam, LPARAM lParam);
-#else
 LRESULT WXDLLEXPORT APIENTRY _EXPORT wxWndProc(HWND hWnd, UINT message,
                                    WPARAM wParam, LPARAM lParam);
-#endif
-                                   
+
 
 #ifdef  __WXDEBUG__
     const char *wxGetMessageName(int message);
 #endif  //__WXDEBUG__
 
 void wxRemoveHandleAssociation(wxWindowMSW *win);
-#ifdef __DIGITALMARS__
-extern "C" void wxAssociateWinWithHandle(HWND hWnd, wxWindowMSW *win);
-#else
 extern void wxAssociateWinWithHandle(HWND hWnd, wxWindowMSW *win);
-#endif
 wxWindow *wxFindWinFromHandle(WXHWND hWnd);
 
 // this magical function is used to translate VK_APPS key presses to right
@@ -483,8 +474,6 @@ void wxWindowMSW::SetFocus()
 
 void wxWindowMSW::SetFocusFromKbd()
 {
-    wxWindowBase::SetFocusFromKbd();
-
     // when the focus is given to the control with DLGC_HASSETSEL style from
     // keyboard its contents should be entirely selected: this is what
     // ::IsDialogMessage() does and so we should do it as well to provide the
@@ -493,6 +482,11 @@ void wxWindowMSW::SetFocusFromKbd()
     {
         ::SendMessage(GetHwnd(), EM_SETSEL, 0, -1);
     }
+
+    // do this after (maybe) setting the selection as like this when
+    // wxEVT_SET_FOCUS handler is called, the selection would have been already
+    // set correctly -- this may be important
+    wxWindowBase::SetFocusFromKbd();
 }
 
 // Get the window with the focus
@@ -581,7 +575,7 @@ bool wxWindowMSW::Show(bool show)
     int cshow = show ? SW_SHOW : SW_HIDE;
     ::ShowWindow(hWnd, cshow);
 
-    if ( show )
+    if ( show && IsTopLevel() )
     {
         wxBringWindowToTop(hWnd);
     }
@@ -1035,25 +1029,24 @@ WXDWORD wxWindowMSW::MSWGetStyle(long flags, WXDWORD *exstyle) const
         style |= WS_HSCROLL;
 
     wxBorder border = (wxBorder)(flags & wxBORDER_MASK);
-    
+
     // Check if we want to automatically give it a sunken style.
     // Note than because 'sunken' actually maps to WS_EX_CLIENTEDGE, which
     // is a more neutral term, we don't necessarily get a sunken effect in
     // Windows XP. Instead we get the appropriate style for the theme.
 
-    if (border == wxBORDER_DEFAULT && wxTheApp->GetAuto3D() && 
+    if (border == wxBORDER_DEFAULT &&
         IsKindOf(CLASSINFO(wxControl)) &&
-        GetParent() && (GetParent()->IsKindOf(CLASSINFO(wxPanel)) ||
-                        GetParent()->IsKindOf(CLASSINFO(wxDialog))) &&
+        GetParent() &&
         ((GetParent()->GetWindowStyleFlag() & wxUSER_COLOURS) != wxUSER_COLOURS))
     {
         border = (wxBorder)((flags & wxBORDER_MASK) | wxBORDER_SUNKEN);
-    }   
-    
+    }
+
     // Only give it WS_BORDER for wxBORDER_SIMPLE
     if (border & wxBORDER_SIMPLE)
         style |= WS_BORDER;
-    
+
     // now deal with ext style if the caller wants it
     if ( exstyle )
     {
@@ -1740,11 +1733,7 @@ bool wxWindowMSW::DoPopupMenu(wxMenu *menu, int x, int y)
 long wxWindowMSW::MSWDefWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
 {
     if ( m_oldWndProc )
-#ifdef __DIGITALMARS__
-        return ::CallWindowProc( (FARPROC) m_oldWndProc, GetHwnd(), (UINT) nMsg, (WPARAM) wParam, (LPARAM) lParam);
-#else
         return ::CallWindowProc(CASTWNDPROC m_oldWndProc, GetHwnd(), (UINT) nMsg, (WPARAM) wParam, (LPARAM) lParam);
-#endif
     else
         return ::DefWindowProc(GetHwnd(), nMsg, wParam, lParam);
 }
@@ -3270,7 +3259,7 @@ bool wxWindowMSW::HandleInitDialog(WXHWND WXUNUSED(hWndFocus))
 
 bool wxWindowMSW::HandleDropFiles(WXWPARAM wParam)
 {
-#if defined (__WXMICROWIN__) 
+#if defined (__WXMICROWIN__)
     return FALSE;
 #else // __WXMICROWIN__
     HDROP hFilesInfo = (HDROP) wParam;
@@ -3310,9 +3299,6 @@ bool wxWindowMSW::HandleDropFiles(WXWPARAM wParam)
 #endif
 }
 
-#ifdef __DIGITALMARS__
-extern "C" HCURSOR wxGetCurrentBusyCursor();
-#endif
 
 bool wxWindowMSW::HandleSetCursor(WXHWND WXUNUSED(hWnd),
                                   short nHitTest,
@@ -3441,11 +3427,14 @@ bool wxWindowMSW::MSWOnDrawItem(int id, WXDRAWITEMSTRUCT *itemStruct)
 
 #if wxUSE_CONTROLS
 
-    wxWindow *item = FindItem(id);
 #if wxUSE_OWNER_DRAWN
+    wxWindow *item = FindItem(id);
     if ( item && item->IsKindOf(CLASSINFO(wxControl)) )
         return ((wxControl *)item)->MSWOnDraw(itemStruct);
-#else
+#elif !defined(__WXUNIVERSAL__)
+    // we may still have owner-drawn buttons internally because we have to make
+    // them owner-drawn to support colour change
+    wxWindow *item = FindItem(id);
     if ( item && item->IsKindOf(CLASSINFO(wxButton)) )
         return ((wxButton *)item)->MSWOnDraw(itemStruct);
 #endif // USE_OWNER_DRAWN
@@ -3746,7 +3735,7 @@ bool wxWindowMSW::HandlePaint()
 {
 //    if (GetExtraStyle() & wxWS_EX_THEMED_BACKGROUND)
 //        return FALSE;
-    
+
 #ifdef __WIN32__
     HRGN hRegion = ::CreateRectRgn(0, 0, 0, 0); // Dummy call to get a handle
     if ( !hRegion )
@@ -3821,7 +3810,7 @@ bool wxWindowMSW::HandleEraseBkgnd(WXHDC hdc)
         }
     }
 #endif
-    
+
     wxDCTemp dc(hdc);
 
     dc.SetHDC(hdc);
@@ -3893,7 +3882,7 @@ bool wxWindowMSW::HandleMoving(wxRect& rect)
 {
     wxMoveEvent event(rect, m_windowId);
     event.SetEventObject(this);
-    
+
     bool rc = GetEventHandler()->ProcessEvent(event);
     if (rc)
         rect = event.GetRect();
@@ -3916,7 +3905,7 @@ bool wxWindowMSW::HandleSizing(wxRect& rect)
 {
     wxSizeEvent event(rect, m_windowId);
     event.SetEventObject(this);
-    
+
     bool rc = GetEventHandler()->ProcessEvent(event);
     if (rc)
         rect = event.GetRect();