X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6e3e6c8efb7da8e096121af3b1dc67d46aad3c14..18caa1e963269d02499b327bb4e7cc2ac48fd67e:/src/msw/window.cpp?ds=sidebyside diff --git a/src/msw/window.cpp b/src/msw/window.cpp index 418d1eb848..53eefe26ed 100644 --- a/src/msw/window.cpp +++ b/src/msw/window.cpp @@ -725,9 +725,7 @@ wxWindowMSW::MSWShowWithEffect(bool show, static bool s_initDone = false; if ( !s_initDone ) { - wxLogNull noLog; - - wxDynamicLibrary dllUser32(_T("user32.dll"), wxDL_VERBATIM); + wxDynamicLibrary dllUser32(_T("user32.dll"), wxDL_VERBATIM | wxDL_QUIET); wxDL_INIT_FUNC(s_pfn, AnimateWindow, dllUser32); s_initDone = true; @@ -1572,7 +1570,7 @@ void wxWindowMSW::OnInternalIdle() } #endif // !HAVE_TRACKMOUSEEVENT - if (wxUpdateUIEvent::CanUpdate(this) && IsShown()) + if (wxUpdateUIEvent::CanUpdate(this) && IsShownOnScreen()) UpdateWindowUI(wxUPDATE_UI_FROMIDLE); } @@ -2130,19 +2128,19 @@ int wxWindowMSW::GetCharWidth() const void wxWindowMSW::GetTextExtent(const wxString& string, int *x, int *y, int *descent, int *externalLeading, - const wxFont *theFont) const + const wxFont *fontToUse) const { - wxASSERT_MSG( !theFont || theFont->Ok(), + wxASSERT_MSG( !fontToUse || fontToUse->Ok(), _T("invalid font in GetTextExtent()") ); - wxFont fontToUse; - if (theFont) - fontToUse = *theFont; + HFONT hfontToUse; + if ( fontToUse ) + hfontToUse = GetHfontOf(*fontToUse); else - fontToUse = GetFont(); + hfontToUse = GetHfontOf(GetFont()); WindowHDC hdc(GetHwnd()); - SelectInHDC selectFont(hdc, GetHfontOf(fontToUse)); + SelectInHDC selectFont(hdc, hfontToUse); SIZE sizeRect; TEXTMETRIC tm; @@ -3166,6 +3164,12 @@ WXLRESULT wxWindowMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM l break; #endif // wxUSE_HOTKEY + case WM_CUT: + case WM_COPY: + case WM_PASTE: + processed = HandleClipboardEvent(message); + break; + case WM_HSCROLL: case WM_VSCROLL: { @@ -3980,15 +3984,6 @@ bool wxWindowMSW::HandleSetFocus(WXHWND hwnd) } #endif // wxUSE_CARET -#if wxUSE_TEXTCTRL - // If it's a wxTextCtrl don't send the event as it will be done - // after the control gets to process it from EN_FOCUS handler - if ( wxDynamicCastThis(wxTextCtrl) ) - { - return false; - } -#endif // wxUSE_TEXTCTRL - wxFocusEvent event(wxEVT_SET_FOCUS, m_windowId); event.SetEventObject(this); @@ -4008,16 +4003,6 @@ bool wxWindowMSW::HandleKillFocus(WXHWND hwnd) } #endif // wxUSE_CARET -#if wxUSE_TEXTCTRL - // If it's a wxTextCtrl don't send the event as it will be done - // after the control gets to process it. - wxTextCtrl *ctrl = wxDynamicCastThis(wxTextCtrl); - if ( ctrl ) - { - return false; - } -#endif - // Don't send the event when in the process of being deleted. This can // only cause problems if the event handler tries to access the object. if ( m_isBeingDeleted ) @@ -6099,6 +6084,9 @@ WXWORD wxCharCodeWXToMSW(int wxk, bool *isVirtual) break; default: + // no VkKeyScan() under CE unfortunately, we need to test how does + // it handle OEM keys +#ifndef __WXWINCE__ // check to see if its one of the OEM key codes. BYTE vks = LOBYTE(VkKeyScan(wxk)); if ( vks != 0xff ) @@ -6106,6 +6094,7 @@ WXWORD wxCharCodeWXToMSW(int wxk, bool *isVirtual) vk = vks; } else +#endif // !__WXWINCE__ { if ( isVirtual ) *isVirtual = false; @@ -6116,22 +6105,23 @@ WXWORD wxCharCodeWXToMSW(int wxk, bool *isVirtual) return vk; } -#ifndef SM_SWAPBUTTON - #define SM_SWAPBUTTON 23 -#endif - // small helper for wxGetKeyState() and wxGetMouseState() static inline bool wxIsKeyDown(WXWORD vk) { - switch (vk) + // SM_SWAPBUTTON is not available under CE, so don't swap buttons there +#ifdef SM_SWAPBUTTON + if ( vk == VK_LBUTTON || vk == VK_RBUTTON ) { - case VK_LBUTTON: - if (GetSystemMetrics(SM_SWAPBUTTON)) vk = VK_RBUTTON; - break; - case VK_RBUTTON: - if (GetSystemMetrics(SM_SWAPBUTTON)) vk = VK_LBUTTON; - break; + if ( ::GetSystemMetrics(SM_SWAPBUTTON) ) + { + if ( vk == VK_LBUTTON ) + vk = VK_RBUTTON; + else // vk == VK_RBUTTON + vk = VK_LBUTTON; + } } +#endif // SM_SWAPBUTTON + // the low order bit indicates whether the key was pressed since the last // call and the high order one indicates whether it is down right now and // we only want that one