#ifndef WX_PRECOMP
#include "wx/settings.h"
#include "wx/dcclient.h"
+ #include "wx/toplevel.h"
#endif
#ifdef __WXGTK20__
#include <gtk/gtk.h>
- #include "wx/gtk/win_gtk.h"
#endif
// we only have to do it here when we use wxStatusBarGeneric in addition to the
SetFont(*wxSMALL_FONT);
#endif
- // Set the height according to the font and the border size
- wxClientDC dc(this);
- dc.SetFont(GetFont());
-
wxCoord y;
- dc.GetTextExtent(_T("X"), NULL, &y );
+ {
+ // Set the height according to the font and the border size
+ wxClientDC dc(this);
+ dc.SetFont(GetFont());
+ dc.GetTextExtent(_T("X"), NULL, &y );
+ }
int height = (int)( (11*y)/10 + 2*GetBorderY());
SetSize(wxDefaultCoord, wxDefaultCoord, wxDefaultCoord, height);
wxStatusBarBase::SetStatusWidths(n, widths_field);
}
+bool wxStatusBarGeneric::ShowsSizeGrip() const
+{
+ if ( !HasFlag(wxST_SIZEGRIP) )
+ return false;
+
+ wxTopLevelWindow * const
+ tlw = wxDynamicCast(wxGetTopLevelParent(GetParent()), wxTopLevelWindow);
+ return tlw && !tlw->IsMaximized() && tlw->HasFlag(wxRESIZE_BORDER);
+}
+
void wxStatusBarGeneric::OnPaint(wxPaintEvent& WXUNUSED(event) )
{
wxPaintDC dc(this);
#ifdef __WXGTK20__
// Draw grip first
- if (HasFlag( wxST_SIZEGRIP ))
+ if ( ShowsSizeGrip() )
{
int width, height;
GetClientSize(&width, &height);
-
+
if (GetLayoutDirection() == wxLayout_RightToLeft)
{
gtk_paint_resize_grip( m_widget->style,
- GTK_PIZZA(m_wxwindow)->bin_window,
+ GTKGetDrawingWindow(),
(GtkStateType) GTK_WIDGET_STATE (m_widget),
NULL,
m_widget,
else
{
gtk_paint_resize_grip( m_widget->style,
- GTK_PIZZA(m_wxwindow)->bin_window,
+ GTKGetDrawingWindow(),
(GtkStateType) GTK_WIDGET_STATE (m_widget),
NULL,
m_widget,
width-height-2, 2, height-2, height-4 );
}
}
-#endif
+#endif // __WXGTK20__
if (GetFont().Ok())
dc.SetFont(GetFont());
- dc.SetBackgroundMode(wxTRANSPARENT);
-
-#ifdef __WXPM__
- wxColour vColor;
-
- vColor = wxSystemSettings::GetColour(wxSYS_COLOUR_MENUBAR);
- ::WinFillRect(dc.m_hPS, &dc.m_vRclPaint, vColor.GetPixel());
-#endif
+ dc.SetBackgroundMode(wxBRUSHSTYLE_TRANSPARENT);
for (int i = 0; i < m_nFields; i ++)
DrawField(dc, i);
wxString text(GetStatusText(i));
- long x = 0, y = 0;
+ wxCoord x = 0, y = 0;
dc.GetTextExtent(text, &x, &y);
// Initialize colours
void wxStatusBarGeneric::InitColours()
{
- // Shadow colours
-#if defined(__WXMSW__) || defined(__WXMAC__)
- wxColour mediumShadowColour(wxSystemSettings::GetColour(wxSYS_COLOUR_3DSHADOW));
- m_mediumShadowPen = wxPen(mediumShadowColour, 1, wxSOLID);
-
- wxColour hilightColour(wxSystemSettings::GetColour(wxSYS_COLOUR_3DHILIGHT));
- m_hilightPen = wxPen(hilightColour, 1, wxSOLID);
-#elif defined(__WXPM__)
+#if defined(__WXPM__)
m_mediumShadowPen = wxPen(wxColour(127, 127, 127), 1, wxSOLID);
m_hilightPen = *wxWHITE_PEN;
SetBackgroundColour(*wxLIGHT_GREY);
SetForegroundColour(*wxBLACK);
-#else
- m_mediumShadowPen = *wxGREY_PEN;
- m_hilightPen = *wxWHITE_PEN;
-#endif
+#else // !__WXPM__
+ m_mediumShadowPen = wxPen(wxSystemSettings::GetColour(wxSYS_COLOUR_3DSHADOW));
+ m_hilightPen = wxPen(wxSystemSettings::GetColour(wxSYS_COLOUR_3DHILIGHT));
+#endif // __WXPM__/!__WXPM__
}
// Responds to colour changes, and passes event on to children.
int width, height;
GetClientSize(&width, &height);
- if (HasFlag( wxST_SIZEGRIP ) && (event.GetX() > width-height))
+ if ( ShowsSizeGrip() && (event.GetX() > width-height) )
{
GtkWidget *ancestor = gtk_widget_get_toplevel( m_widget );
if (!GTK_IS_WINDOW (ancestor))
return;
- GdkWindow *source = GTK_PIZZA(m_wxwindow)->bin_window;
+ GdkWindow *source = GTKGetDrawingWindow();
int org_x = 0;
int org_y = 0;
int width, height;
GetClientSize(&width, &height);
- if (HasFlag( wxST_SIZEGRIP ) && (event.GetX() > width-height))
+ if ( ShowsSizeGrip() && (event.GetX() > width-height) )
{
GtkWidget *ancestor = gtk_widget_get_toplevel( m_widget );
if (!GTK_IS_WINDOW (ancestor))
return;
- GdkWindow *source = GTK_PIZZA(m_wxwindow)->bin_window;
+ GdkWindow *source = GTKGetDrawingWindow();
int org_x = 0;
int org_y = 0;