wxSize wxStatusBarGeneric::DoGetBestSize() const
{
int width, height;
+ wxCoord y;
// best width is the width of the parent
GetParent()->GetClientSize(&width, NULL);
- // best height is as calculated above in Create
+ // best height is as calculated above in Create()
wxClientDC dc((wxWindow*)this);
dc.SetFont(GetFont());
- wxCoord y;
- dc.GetTextExtent(_T("X"), NULL, &y );
- height = (int)( (11*y)/10 + 2*GetBorderY());
+ dc.GetTextExtent(_T("X"), NULL, &y);
+ height = (int)((11*y)/10 + 2*GetBorderY());
return wxSize(width, height);
}
return tlw && !tlw->IsMaximized() && tlw->HasFlag(wxRESIZE_BORDER);
}
-void wxStatusBarGeneric::OnPaint(wxPaintEvent& WXUNUSED(event) )
-{
- wxPaintDC dc(this);
-
-#ifdef __WXGTK20__
- // Draw grip first
- if ( ShowsSizeGrip() )
- {
- int width, height;
- GetClientSize(&width, &height);
-
- if (GetLayoutDirection() == wxLayout_RightToLeft)
- {
- gtk_paint_resize_grip( m_widget->style,
- GTKGetDrawingWindow(),
- (GtkStateType) GTK_WIDGET_STATE (m_widget),
- NULL,
- m_widget,
- "statusbar",
- GDK_WINDOW_EDGE_SOUTH_WEST,
- 2, 2, height-2, height-4 );
- }
- else
- {
- gtk_paint_resize_grip( m_widget->style,
- GTKGetDrawingWindow(),
- (GtkStateType) GTK_WIDGET_STATE (m_widget),
- NULL,
- m_widget,
- "statusbar",
- GDK_WINDOW_EDGE_SOUTH_EAST,
- width-height-2, 2, height-2, height-4 );
- }
- }
-#endif // __WXGTK20__
-
- if (GetFont().Ok())
- dc.SetFont(GetFont());
-
- dc.SetBackgroundMode(wxBRUSHSTYLE_TRANSPARENT);
-
- for (size_t i = 0; i < m_panes.GetCount(); i ++)
- DrawField(dc, i);
-}
-
void wxStatusBarGeneric::DrawFieldText(wxDC& dc, int i)
{
int leftMargin = 2;
wxString text(GetStatusText(i));
wxCoord x = 0, y = 0;
-
dc.GetTextExtent(text, &x, &y);
int xpos = rect.x + leftMargin;
- int ypos = (int) (((rect.height - y) / 2 ) + rect.y + 0.5) ;
+ int ypos = (int) (((rect.height - y) / 2 ) + rect.y + 0.5);
#if defined( __WXGTK__ ) || defined(__WXMAC__)
xpos++;
dc.SetPen((style == wxSB_RAISED) ? m_mediumShadowPen : m_hilightPen);
- #ifndef __WXPM__
+#ifndef __WXPM__
// Right and bottom lines
dc.DrawLine(rect.x + rect.width, rect.y,
rect.x, rect.y);
dc.DrawLine(rect.x, rect.y,
rect.x + rect.width, rect.y);
- #else
+#else
dc.DrawLine(rect.x + rect.width, rect.height + 2,
rect.x, rect.height + 2);
DrawFieldText(dc, i);
}
- // Get the position and size of the field's internal bounding rectangle
+// Get the position and size of the field's internal bounding rectangle
bool wxStatusBarGeneric::GetFieldRect(int n, wxRect& rect) const
{
wxCHECK_MSG( (n >= 0) && ((size_t)n < m_panes.GetCount()), false,
// we cache m_widthsAbs between calls and recompute it if client
// width has changed (or when it is initially empty)
- if ( m_widthsAbs.IsEmpty() || (m_lastClientWidth != width) )
+ if ( m_widthsAbs.IsEmpty() || m_lastClientWidth != width )
{
- wxConstCast(this, wxStatusBarGeneric)->
- m_widthsAbs = CalculateAbsWidths(width);
+ wxConstCast(this, wxStatusBarGeneric)->m_widthsAbs = CalculateAbsWidths(width);
+
// remember last width for which we have recomputed the widths in pixels
- wxConstCast(this, wxStatusBarGeneric)->
- m_lastClientWidth = width;
+ wxConstCast(this, wxStatusBarGeneric)->m_lastClientWidth = width;
}
rect.x = 0;
for ( int i = 0; i < n; i++ )
- {
rect.x += m_widthsAbs[i];
- }
rect.x += m_borderX;
rect.y = m_borderY;
#endif // __WXPM__/!__WXPM__
}
-// Responds to colour changes, and passes event on to children.
-void wxStatusBarGeneric::OnSysColourChanged(wxSysColourChangedEvent& event)
-{
- InitColours();
-
- // Propagate the event to the non-top-level children
- wxWindow::OnSysColourChanged(event);
-}
-
void wxStatusBarGeneric::SetMinHeight(int height)
{
// check that this min height is not less than minimal height for the
}
}
+
+// ----------------------------------------------------------------------------
+// wxStatusBarGeneric - event handlers
+// ----------------------------------------------------------------------------
+
+void wxStatusBarGeneric::OnPaint(wxPaintEvent& WXUNUSED(event) )
+{
+ wxPaintDC dc(this);
+
+#ifdef __WXGTK20__
+ // Draw grip first
+ if ( ShowsSizeGrip() )
+ {
+ int width, height;
+ GetClientSize(&width, &height);
+
+ if (GetLayoutDirection() == wxLayout_RightToLeft)
+ {
+ gtk_paint_resize_grip( m_widget->style,
+ GTKGetDrawingWindow(),
+ (GtkStateType) GTK_WIDGET_STATE (m_widget),
+ NULL,
+ m_widget,
+ "statusbar",
+ GDK_WINDOW_EDGE_SOUTH_WEST,
+ 2, 2, height-2, height-4 );
+ }
+ else
+ {
+ gtk_paint_resize_grip( m_widget->style,
+ GTKGetDrawingWindow(),
+ (GtkStateType) GTK_WIDGET_STATE (m_widget),
+ NULL,
+ m_widget,
+ "statusbar",
+ GDK_WINDOW_EDGE_SOUTH_EAST,
+ width-height-2, 2, height-2, height-4 );
+ }
+ }
+#endif // __WXGTK20__
+
+ if (GetFont().IsOk())
+ dc.SetFont(GetFont());
+
+ dc.SetBackgroundMode(wxBRUSHSTYLE_TRANSPARENT);
+
+ for (size_t i = 0; i < m_panes.GetCount(); i ++)
+ DrawField(dc, i);
+}
+
+// Responds to colour changes, and passes event on to children.
+void wxStatusBarGeneric::OnSysColourChanged(wxSysColourChangedEvent& event)
+{
+ InitColours();
+
+ // Propagate the event to the non-top-level children
+ wxWindow::OnSysColourChanged(event);
+}
+
void wxStatusBarGeneric::OnLeftDown(wxMouseEvent& event)
{
#ifdef __WXGTK20__