+void wxStatusBarGeneric::SetMinHeight(int height)
+{
+ // check that this min height is not less than minimal height for the
+ // current font (min height is as calculated above in Create() except for border)
+ int minHeight = (int)((11*GetCharHeight())/10);
+
+ if ( height > minHeight )
+ SetSize(wxDefaultCoord, wxDefaultCoord, wxDefaultCoord, height + 2*m_borderY);
+}
+
+wxRect wxStatusBarGeneric::GetSizeGripRect() const
+{
+ int width, height;
+ wxWindow::DoGetClientSize(&width, &height);
+
+ if (GetLayoutDirection() == wxLayout_RightToLeft)
+ return wxRect(2, 2, height-2, height-4);
+ else
+ return wxRect(width-height-2, 2, height-2, height-4);
+}
+
+// ----------------------------------------------------------------------------
+// wxStatusBarGeneric - event handlers
+// ----------------------------------------------------------------------------
+
+void wxStatusBarGeneric::OnPaint(wxPaintEvent& WXUNUSED(event) )
+{
+ wxPaintDC dc(this);
+
+#ifdef __WXGTK20__
+ // Draw grip first
+ if ( ShowsSizeGrip() )
+ {
+ const wxRect& rc = GetSizeGripRect();
+ GdkWindowEdge edge =
+ GetLayoutDirection() == wxLayout_RightToLeft ? GDK_WINDOW_EDGE_SOUTH_WEST :
+ GDK_WINDOW_EDGE_SOUTH_EAST;
+ gtk_paint_resize_grip( m_widget->style,
+ GTKGetDrawingWindow(),
+ (GtkStateType) GTK_WIDGET_STATE (m_widget),
+ NULL,
+ m_widget,
+ "statusbar",
+ edge,
+ rc.x, rc.y, rc.width, rc.height );
+ }
+#endif // __WXGTK20__
+
+ if (GetFont().IsOk())
+ dc.SetFont(GetFont());
+
+ // compute char height only once for all panes:
+ int textHeight = dc.GetCharHeight();
+
+ dc.SetBackgroundMode(wxBRUSHSTYLE_TRANSPARENT);
+ for (size_t i = 0; i < m_panes.GetCount(); i ++)
+ DrawField(dc, i, textHeight);