X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/77ffb5937e89927b621128789401db8921fe580f..feb8276801ff0a375d5a9221b40d6b45d4552656:/src/msw/window.cpp diff --git a/src/msw/window.cpp b/src/msw/window.cpp index b19c6320ec..51552987e4 100644 --- a/src/msw/window.cpp +++ b/src/msw/window.cpp @@ -6,7 +6,7 @@ // Created: 04/01/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart -// Licence: wxWidgets licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// // =========================================================================== @@ -1737,6 +1737,12 @@ bool wxWindowMSW::DoPopupMenu(wxMenu *menu, int x, int y) menu->SetInvokingWindow(this); menu->UpdateUI(); + if ( x == -1 && y == -1 ) + { + wxPoint mouse = ScreenToClient(wxGetMousePosition()); + x = mouse.x; y = mouse.y; + } + HWND hWnd = GetHwnd(); HMENU hMenu = GetHmenuOf(menu); POINT point; @@ -1905,8 +1911,8 @@ bool wxWindowMSW::MSWProcessMessage(WXMSG* pMsg) return true; } else // no default button - { #endif // wxUSE_BUTTON + { // this is a quick and dirty test for a text // control if ( !(lDlgCode & DLGC_HASSETSEL) ) @@ -2346,9 +2352,11 @@ WXLRESULT wxWindowMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM l #ifndef __WXWINCE__ case WM_PRINT: { +#if wxUSE_LISTCTRL // Don't call the wx handlers in this case if ( wxIsKindOf(this, wxListCtrl) ) break; +#endif if ( lParam & PRF_ERASEBKGND ) HandleEraseBkgnd((WXHDC)(HDC)wParam); @@ -3687,7 +3695,13 @@ wxWindowMSW::MSWOnDrawItem(int WXUNUSED_UNLESS_ODRAWN(id), #else // !wxUSE_OWNER_DRAWN // we may still have owner-drawn buttons internally because we have to make // them owner-drawn to support colour change - wxControl *item = wxDynamicCast(FindItem(id), wxButton); + wxControl *item = +# if wxUSE_BUTTON + wxDynamicCast(FindItem(id), wxButton) +# else + NULL +# endif + ; #endif // USE_OWNER_DRAWN if ( item ) @@ -3914,18 +3928,6 @@ void wxWindowMSW::OnSysColourChanged(wxSysColourChangedEvent& WXUNUSED(event)) node = node->GetNext(); } - - // update the colours we use if they were not set explicitly by the user: - // this must be done or OnCtlColor() would continue to use the old colours - if ( !m_hasFgCol || !m_hasBgCol ) - { - wxVisualAttributes attrs = GetDefaultAttributes(); - if ( !m_hasFgCol ) - m_foregroundColour = attrs.colFg; - - if ( !m_hasBgCol ) - m_backgroundColour = attrs.colBg; - } } extern wxCOLORMAP *wxGetStdColourMap() @@ -4091,10 +4093,11 @@ void wxWindowMSW::OnEraseBackground(wxEraseEvent& event) { RECT rect; ::GetClientRect(GetHwnd(), &rect); - - COLORREF ref = PALETTERGB(m_backgroundColour.Red(), - m_backgroundColour.Green(), - m_backgroundColour.Blue()); + + wxColour backgroundColour( GetBackgroundColour()); + COLORREF ref = PALETTERGB(backgroundColour.Red(), + backgroundColour.Green(), + backgroundColour.Blue()); HBRUSH hBrush = ::CreateSolidBrush(ref); if ( !hBrush ) wxLogLastError(wxT("CreateSolidBrush")); @@ -4701,6 +4704,9 @@ int wxWindowMSW::HandleMenuChar(int chAccel, WXLPARAM lParam) wxLogLastError(_T("GetMenuItemInfo")); } } +#else + wxUnusedVar(chAccel); + wxUnusedVar(lParam); #endif return wxNOT_FOUND; } @@ -4789,6 +4795,10 @@ bool wxWindowMSW::HandleJoystickEvent(WXUINT msg, int x, int y, WXUINT flags) return GetEventHandler()->ProcessEvent(event); #else + wxUnusedVar(msg); + wxUnusedVar(x); + wxUnusedVar(y); + wxUnusedVar(flags); return false; #endif } @@ -4877,22 +4887,21 @@ bool wxWindowMSW::MSWOnScroll(int orientation, WXWORD wParam, // global functions // =========================================================================== -void wxGetCharSize(WXHWND wnd, int *x, int *y, const wxFont *the_font) +void wxGetCharSize(WXHWND wnd, int *x, int *y, const wxFont& the_font) { TEXTMETRIC tm; HDC dc = ::GetDC((HWND) wnd); HFONT fnt =0; HFONT was = 0; - if ( the_font ) - { - // the_font->UseResource(); - // the_font->RealizeResource(); - fnt = (HFONT)((wxFont *)the_font)->GetResourceHandle(); // const_cast - if ( fnt ) - was = (HFONT) SelectObject(dc,fnt); - } + + // the_font.UseResource(); + // the_font.RealizeResource(); + fnt = (HFONT)the_font.GetResourceHandle(); // const_cast + if ( fnt ) + was = (HFONT) SelectObject(dc,fnt); + GetTextMetrics(dc, &tm); - if ( the_font && fnt && was ) + if ( fnt && was ) { SelectObject(dc,was); } @@ -4903,8 +4912,7 @@ void wxGetCharSize(WXHWND wnd, int *x, int *y, const wxFont *the_font) if ( y ) *y = tm.tmHeight + tm.tmExternalLeading; - // if ( the_font ) - // the_font->ReleaseResource(); + // the_font.ReleaseResource(); } // Returns 0 if was a normal ASCII value, not a special key. This indicates that @@ -5794,6 +5802,8 @@ bool wxWindowMSW::UnregisterHotKey(int hotkeyId) return true; } +#if wxUSE_ACCEL + bool wxWindowMSW::HandleHotKey(WXWPARAM wParam, WXLPARAM lParam) { int hotkeyId = wParam; @@ -5810,6 +5820,8 @@ bool wxWindowMSW::HandleHotKey(WXWPARAM wParam, WXLPARAM lParam) return GetEventHandler()->ProcessEvent(event); } +#endif // wxUSE_ACCEL + #endif // wxUSE_HOTKEY // Not tested under WinCE