+void wxStatusBarGeneric::SetMinHeight(int height)
+{
+ // check that this min height is not less than minimal height for the
+ // current font
+ wxClientDC dc(this);
+ wxCoord y;
+ dc.GetTextExtent( wxT("X"), NULL, &y );
+
+ if ( height > (11*y)/10 )
+ {
+ SetSize(wxDefaultCoord, wxDefaultCoord, wxDefaultCoord, height + 2*m_borderY);
+ }
+}
+
+void wxStatusBarGeneric::OnLeftDown(wxMouseEvent& event)
+{
+#ifdef __WXGTK20__
+ int width, height;
+ GetClientSize(&width, &height);
+
+ if (HasFlag( wxST_SIZEGRIP ) && (event.GetX() > width-height))
+ {
+ GtkWidget *ancestor = gtk_widget_get_toplevel( m_widget );
+
+ if (!GTK_IS_WINDOW (ancestor))
+ return;
+
+ GdkWindow *source = GTKGetDrawingWindow();
+
+ int org_x = 0;
+ int org_y = 0;
+ gdk_window_get_origin( source, &org_x, &org_y );
+
+ if (GetLayoutDirection() == wxLayout_RightToLeft)
+ {
+ gtk_window_begin_resize_drag (GTK_WINDOW (ancestor),
+ GDK_WINDOW_EDGE_SOUTH_WEST,
+ 1,
+ org_x - event.GetX() + GetSize().x ,
+ org_y + event.GetY(),
+ 0);
+ }
+ else
+ {
+ gtk_window_begin_resize_drag (GTK_WINDOW (ancestor),
+ GDK_WINDOW_EDGE_SOUTH_EAST,
+ 1,
+ org_x + event.GetX(),
+ org_y + event.GetY(),
+ 0);
+ }
+ }
+ else
+ {
+ event.Skip( true );
+ }
+#else
+ event.Skip( true );
+#endif
+}
+
+void wxStatusBarGeneric::OnRightDown(wxMouseEvent& event)
+{
+#ifdef __WXGTK20__
+ int width, height;
+ GetClientSize(&width, &height);
+
+ if (HasFlag( wxST_SIZEGRIP ) && (event.GetX() > width-height))
+ {
+ GtkWidget *ancestor = gtk_widget_get_toplevel( m_widget );
+
+ if (!GTK_IS_WINDOW (ancestor))
+ return;
+
+ GdkWindow *source = GTKGetDrawingWindow();
+
+ int org_x = 0;
+ int org_y = 0;
+ gdk_window_get_origin( source, &org_x, &org_y );
+
+ gtk_window_begin_move_drag (GTK_WINDOW (ancestor),
+ 2,
+ org_x + event.GetX(),
+ org_y + event.GetY(),
+ 0);
+ }
+ else
+ {
+ event.Skip( true );
+ }
+#else
+ event.Skip( true );
+#endif
+}
+
+#endif // wxUSE_STATUSBAR