X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/61fef19b852d426f5b00b60de083539b9ba0f76c..ebe47451544561fbe6e57808d604641d24109359:/src/univ/themes/win32.cpp?ds=sidebyside diff --git a/src/univ/themes/win32.cpp b/src/univ/themes/win32.cpp index 0b8499f906..cb69172cc5 100644 --- a/src/univ/themes/win32.cpp +++ b/src/univ/themes/win32.cpp @@ -38,6 +38,7 @@ #include "wx/scrolbar.h" #include "wx/slider.h" #include "wx/textctrl.h" + #include "wx/listbox.h" #include "wx/toolbar.h" #ifdef __WXMSW__ @@ -658,7 +659,7 @@ protected: // wxWin32Theme // ---------------------------------------------------------------------------- -WX_DEFINE_ARRAY_NO_PTR(wxInputHandler *, wxArrayHandlers); +WX_DEFINE_ARRAY_PTR(wxInputHandler *, wxArrayHandlers); class wxWin32Theme : public wxTheme { @@ -1330,21 +1331,32 @@ wxColour wxWin32ColourScheme::GetBackground(wxWindow *win) const col = win->GetBackgroundColour(); } - if ( win->IsContainerWindow() ) + if ( !win->ShouldInheritColours() ) { wxTextCtrl *text = wxDynamicCast(win, wxTextCtrl); - if ( text ) +#if wxUSE_LISTBOX + wxListBox* listBox = wxDynamicCast(win, wxListBox); +#endif + if ( text +#if wxUSE_LISTBOX + || listBox +#endif + ) { - if ( !text->IsEnabled() ) // not IsEditable() + if ( !win->IsEnabled() ) // not IsEditable() col = Get(CONTROL); - //else: execute code below - } - - if ( !col.Ok() ) - { - // doesn't depend on the state - col = Get(WINDOW); + else + { + if ( !col.Ok() ) + { + // doesn't depend on the state + col = Get(WINDOW); + } + } } + + if (!col.Ok()) + col = Get(CONTROL); // Most controls should be this colour, not WINDOW } else { @@ -3598,7 +3610,6 @@ void wxWin32Renderer::DrawFrameTitleBar(wxDC& dc, DrawFrameButton(dc, x, y, wxTOPLEVEL_BUTTON_HELP, (specialButton == wxTOPLEVEL_BUTTON_HELP) ? specialButtonFlags : 0); - x -= FRAME_BUTTON_WIDTH; } } } @@ -4532,7 +4543,9 @@ private: wxWin32FrameInputHandler *m_inputHnd; wxTopLevelWindow *m_wnd; +#if wxUSE_ACCEL wxAcceleratorTable m_oldAccelTable; +#endif }; wxWin32SystemMenuEvtHandler::wxWin32SystemMenuEvtHandler( @@ -4549,6 +4562,7 @@ void wxWin32SystemMenuEvtHandler::Attach(wxInputConsumer *consumer) m_wnd = wxStaticCast(consumer->GetInputWindow(), wxTopLevelWindow); m_wnd->PushEventHandler(this); +#if wxUSE_ACCEL // VS: This code relies on using generic implementation of // wxAcceleratorTable in wxUniv! wxAcceleratorTable table = *m_wnd->GetAcceleratorTable(); @@ -4556,13 +4570,16 @@ void wxWin32SystemMenuEvtHandler::Attach(wxInputConsumer *consumer) table.Add(wxAcceleratorEntry(wxACCEL_ALT, WXK_SPACE, wxID_SYSTEM_MENU)); table.Add(wxAcceleratorEntry(wxACCEL_ALT, WXK_F4, wxID_CLOSE_FRAME)); m_wnd->SetAcceleratorTable(table); +#endif } void wxWin32SystemMenuEvtHandler::Detach() { if ( m_wnd ) { +#if wxUSE_ACCEL m_wnd->SetAcceleratorTable(m_oldAccelTable); +#endif m_wnd->RemoveEventHandler(this); m_wnd = NULL; } @@ -4584,10 +4601,16 @@ void wxWin32SystemMenuEvtHandler::OnSystemMenu(wxCommandEvent &WXUNUSED(event)) pt.x = -pt.x + border; pt.y = -pt.y + border + FRAME_TITLEBAR_HEIGHT; +#if wxUSE_ACCEL wxAcceleratorTable table = *m_wnd->GetAcceleratorTable(); m_wnd->SetAcceleratorTable(wxNullAcceleratorTable); +#endif + m_inputHnd->PopupSystemMenu(m_wnd, pt); + +#if wxUSE_ACCEL m_wnd->SetAcceleratorTable(table); +#endif } void wxWin32SystemMenuEvtHandler::OnCloseFrame(wxCommandEvent &WXUNUSED(event))