wxFont m_titlebarFont;
+ // the checked and unchecked bitmaps for DrawCheckItem()
+ wxBitmap m_bmpCheckBitmaps[IndicatorStatus_Max];
+
+ // the bitmaps returned by GetIndicator()
+ wxBitmap m_bmpIndicators[IndicatorType_Max]
+ [IndicatorState_Max]
+ [IndicatorStatus_Max];
+
// titlebar icons:
wxBitmap m_bmpFrameButtons[FrameButton_Max];
};
static const char **
- bmpIndicators[IndicatorType_Max][IndicatorState_Max][IndicatorStatus_Max] =
+ xpmIndicators[IndicatorType_Max][IndicatorState_Max][IndicatorStatus_Max] =
{
// checkboxes first
{
}
};
+static const char **xpmChecked[IndicatorStatus_Max] =
+{
+ checked_item_xpm,
+ unchecked_item_xpm
+};
+
// ============================================================================
// implementation
// ============================================================================
}
else // use default bitmap
{
- bmp = wxBitmap(flags & wxCONTROL_CHECKED ? checked_item_xpm
- : unchecked_item_xpm);
+ IndicatorStatus i = flags & wxCONTROL_CHECKED
+ ? IndicatorStatus_Checked
+ : IndicatorStatus_Unchecked;
+
+ if ( !m_bmpCheckBitmaps[i].Ok() )
+ {
+ m_bmpCheckBitmaps[i] = wxBitmap(xpmChecked[i]);
+ }
+
+ bmp = m_bmpCheckBitmaps[i];
}
dc.DrawBitmap(bmp, rect.x, rect.y + (rect.height - bmp.GetHeight()) / 2 - 1,
? IndicatorStatus_Checked
: IndicatorStatus_Unchecked;
- const char **xpm = bmpIndicators[indType][indState][indStatus];
- if (xpm)
+ wxBitmap bmp = m_bmpIndicators[indType][indState][indStatus];
+ if ( !bmp.Ok() )
{
- wxBitmap bmp(xpm);
- return bmp;
+ const char **xpm = xpmIndicators[indType][indState][indStatus];
+ if ( xpm )
+ {
+ // create and cache it
+ bmp = wxBitmap(xpm);
+ m_bmpIndicators[indType][indState][indStatus] = bmp;
+ }
}
- else
- return wxNullBitmap;
+
+ return bmp;
}
void wxWin32Renderer::DrawCheckOrRadioButton(wxDC& dc,
if ( event.ButtonDown() )
{
wxWindow *win = control->GetInputWindow();
+
if ( wxWindow::FindFocus() != control->GetInputWindow() )
{
win->SetFocus();
bool wxWin32StatusBarInputHandler::IsOnGrip(wxWindow *statbar,
const wxPoint& pt) const
{
+ wxTopLevelWindow *parentTLW = wxDynamicCast(statbar->GetParent(), wxTopLevelWindow);
+
if ( statbar->HasFlag(wxST_SIZEGRIP) &&
- statbar->GetParent()->HasFlag(wxRESIZE_BORDER) )
+ statbar->GetParent()->HasFlag(wxRESIZE_BORDER) &&
+ parentTLW && !parentTLW->IsMaximized() )
{
wxSize sizeSbar = statbar->GetSize();