// Modified by:
// Created: 01/02/97
// RCS-ID: $Id$
-// Copyright: (c) Julian Smart and Markus Holzem
-// Licence: wxWindows license
+// Copyright: (c) Julian Smart
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma implementation "statusbr.h"
#endif
SetSize(-1, -1, -1, height);
+ SetFieldsCount(1);
+
return TRUE;
}
+
+wxSize wxStatusBarGeneric::DoGetBestSize() const
+{
+ int width, height;
+
+ // best width is the width of the parent
+ GetParent()->GetClientSize(&width, NULL);
+
+ // 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());
+
+ return wxSize(width, height);
+}
+
void wxStatusBarGeneric::SetFieldsCount(int number, const int *widths)
{
wxASSERT_MSG( number >= 0, _T("negative number of fields in wxStatusBar?") );
wxCHECK_RET( (number >= 0) && (number < m_nFields),
_T("invalid status bar field index") );
- m_statusStrings[number] = text;
+ wxString oldText = m_statusStrings[number];
+ if (oldText != text)
+ {
+ m_statusStrings[number] = text;
- wxRect rect;
- GetFieldRect(number, rect);
+ wxRect rect;
+ GetFieldRect(number, rect);
- Refresh( TRUE, &rect );
+ Refresh( TRUE, &rect );
+ }
}
wxString wxStatusBarGeneric::GetStatusText(int n) const
{
int width, height;
GetClientSize(&width, &height);
-
+
gtk_paint_resize_grip( m_widget->style,
GTK_PIZZA(m_wxwindow)->bin_window,
(GtkStateType) GTK_WIDGET_STATE (m_widget),
"statusbar",
GDK_WINDOW_EDGE_SOUTH_EAST,
width-height-2, 1, height-2, height-3 );
-
+
}
#endif
if (GetFont().Ok())
dc.SetFont(GetFont());
-
+
dc.SetBackgroundMode(wxTRANSPARENT);
#ifdef __WXPM__
void wxStatusBarGeneric::InitColours()
{
// Shadow colours
-#if defined(__WIN95__)
+#if defined(__WIN95__) || defined(__WXMAC__)
wxColour mediumShadowColour(wxSystemSettings::GetColour(wxSYS_COLOUR_3DSHADOW));
m_mediumShadowPen = wxPen(mediumShadowColour, 1, wxSOLID);
#ifdef __WXGTK20__
int width, height;
GetClientSize(&width, &height);
-
+
if (HasFlag( wxST_SIZEGRIP ) && (event.GetX() > width-height))
{
GtkWidget *ancestor = gtk_widget_get_toplevel( m_widget );
gtk_window_begin_resize_drag (GTK_WINDOW (ancestor),
GDK_WINDOW_EDGE_SOUTH_EAST,
1,
- org_x + event.GetX(),
- org_y + event.GetY(),
+ org_x + event.GetX(),
+ org_y + event.GetY(),
0);
}
else
#ifdef __WXGTK20__
int width, height;
GetClientSize(&width, &height);
-
+
if (HasFlag( wxST_SIZEGRIP ) && (event.GetX() > width-height))
{
GtkWidget *ancestor = gtk_widget_get_toplevel( m_widget );
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(),
+ org_x + event.GetX(),
+ org_y + event.GetY(),
0);
}
else