X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/00e086a7f09c2a2e00a3ee0ca57e338ed608c88f..899c6fad2638bb9a0c7554f4a08c6d49ab6bbeb7:/src/univ/themes/win32.cpp diff --git a/src/univ/themes/win32.cpp b/src/univ/themes/win32.cpp index af2f0c4a28..0984602d12 100644 --- a/src/univ/themes/win32.cpp +++ b/src/univ/themes/win32.cpp @@ -33,6 +33,7 @@ #include "wx/dcmemory.h" #include "wx/button.h" + #include "wx/bmpbuttn.h" #include "wx/listbox.h" #include "wx/checklst.h" #include "wx/combobox.h" @@ -110,6 +111,7 @@ enum IndicatorStatus { IndicatorStatus_Checked, IndicatorStatus_Unchecked, + IndicatorStatus_Undeterminated, IndicatorStatus_Max }; @@ -1009,6 +1011,54 @@ static const char *unchecked_item_xpm[] = { "wwwwwwwwwwwww" }; +static const char *undetermined_xpm[] = { +/* columns rows colors chars-per-pixel */ +"13 13 5 1", +"A c #030303", +"B c #838383", +"C c #C3C3C3", +"D c #FBFBFB", +"E c #DBDBDB", +/* pixels */ +"BBBBBBBBBBBBD", +"BAAAAAAAAAAED", +"BACDCDCDCDCED", +"BADCDCDCDBDED", +"BACDCDCDBBCED", +"BADBDCEBBBDED", +"BACBBDBBBDCED", +"BADBBBBBDCDED", +"BACDBBBDCDCED", +"BADCDBDCDCDED", +"BACDCDCDCDCED", +"BEEEEEEEEEEED", +"DDDDDDDDDDDDD" +}; + +static const char *pressed_undetermined_xpm[] = { +/* columns rows colors chars-per-pixel */ +"13 13 5 1", +"A c #040404", +"B c #848484", +"C c #C4C4C4", +"D c #FCFCFC", +"E c #DCDCDC", +/* pixels */ +"BBBBBBBBBBBBD", +"BAAAAAAAAAAED", +"BACCCCCCCCCCD", +"BACCCCCCCACED", +"BACCCCCCAACED", +"BACACCCAAACED", +"BACAACAAACCED", +"BACAAAAACCCED", +"BACCAAACCCCCD", +"BACCCACCCCCED", +"BACCCCCCCCCED", +"BEEEEEEEEEEED", +"DDDDDDDDDDDDD" +}; + static const char *checked_radio_xpm[] = { /* columns rows colors chars-per-pixel */ "12 12 6 1", @@ -1135,40 +1185,40 @@ static const char ** // checkboxes first { // normal state - { checked_xpm, unchecked_xpm }, + { checked_xpm, unchecked_xpm, undetermined_xpm }, // pressed state - { pressed_checked_xpm, pressed_unchecked_xpm }, + { pressed_checked_xpm, pressed_unchecked_xpm, pressed_undetermined_xpm }, // disabled state - { pressed_disabled_checked_xpm, pressed_unchecked_xpm }, + { pressed_disabled_checked_xpm, pressed_unchecked_xpm, pressed_disabled_checked_xpm }, }, // radio { // normal state - { checked_radio_xpm, unchecked_radio_xpm }, + { checked_radio_xpm, unchecked_radio_xpm, NULL }, // pressed state - { pressed_checked_radio_xpm, pressed_unchecked_radio_xpm }, + { pressed_checked_radio_xpm, pressed_unchecked_radio_xpm, NULL }, // disabled state - { pressed_disabled_checked_radio_xpm, pressed_unchecked_radio_xpm }, + { pressed_disabled_checked_radio_xpm, pressed_unchecked_radio_xpm, NULL }, }, // menu { // normal state - { checked_menu_xpm, NULL }, + { checked_menu_xpm, NULL, NULL }, // selected state - { selected_checked_menu_xpm, NULL }, + { selected_checked_menu_xpm, NULL, NULL }, // disabled state - { disabled_checked_menu_xpm, NULL }, + { disabled_checked_menu_xpm, NULL, NULL }, // disabled selected state - { selected_disabled_checked_menu_xpm, NULL }, + { selected_disabled_checked_menu_xpm, NULL, NULL }, } }; @@ -2315,7 +2365,9 @@ wxBitmap wxWin32Renderer::GetIndicator(IndicatorType indType, int flags) IndicatorStatus indStatus = flags & wxCONTROL_CHECKED ? IndicatorStatus_Checked - : IndicatorStatus_Unchecked; + : ( flags & wxCONTROL_UNDETERMINED + ? IndicatorStatus_Undeterminated + : IndicatorStatus_Unchecked ); wxBitmap bmp = m_bmpIndicators[indType][indState][indStatus]; if ( !bmp.Ok() ) @@ -2503,9 +2555,8 @@ void wxWin32Renderer::DrawTab(wxDC& dc, const wxSize indent = GetTabIndent(); if ( flags & wxCONTROL_SELECTED ) { - rect.Inflate( isVertical ? 0 : indent.x, - isVertical ? indent.y : 0 - ); + rect.Inflate( SELECT_FOR_VERTICAL( indent.x , 0), + SELECT_FOR_VERTICAL( 0, indent.y )); switch ( dir ) { default: @@ -3881,7 +3932,7 @@ wxSize wxWin32Renderer::GetFrameTotalSize(const wxSize& clientSize, wxSize wxWin32Renderer::GetFrameMinSize(int flags) const { - wxSize s(0, 0); + wxSize s; if ( (flags & wxTOPLEVEL_BORDER) && !(flags & wxTOPLEVEL_MAXIMIZED) ) { @@ -4167,6 +4218,12 @@ void wxWin32Renderer::AdjustSize(wxSize *size, const wxWindow *window) } #endif // wxUSE_SCROLLBAR/!wxUSE_SCROLLBAR +#if wxUSE_BMPBUTTON + if ( wxDynamicCast(window, wxBitmapButton) ) + { + // do nothing + } else +#endif // wxUSE_BMPBUTTON #if wxUSE_BUTTON if ( wxDynamicCast(window, wxButton) ) {