/////////////////////////////////////////////////////////////////////////////
-// Name: generic/statusbr.cpp
+// Name: src/generic/statusbr.cpp
// Purpose: wxStatusBarGeneric class implementation
// Author: Julian Smart
// Modified by:
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-#pragma implementation "statusbr.h"
-#endif
-
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
-#pragma hdrstop
+ #pragma hdrstop
#endif
#if wxUSE_STATUSBAR
+#include "wx/statusbr.h"
+
#ifndef WX_PRECOMP
-#include "wx/setup.h"
-#include "wx/frame.h"
-#include "wx/settings.h"
-#include "wx/dcclient.h"
+ #include "wx/settings.h"
+ #include "wx/dcclient.h"
#endif
#ifdef __WXGTK20__
-#include "wx/gtk/private.h"
-#include "wx/gtk/win_gtk.h"
+ #include <gtk/gtk.h>
+ #include "wx/gtk/win_gtk.h"
#endif
-#include "wx/statusbr.h"
-
// we only have to do it here when we use wxStatusBarGeneric in addition to the
// standard wxStatusBar class, if wxStatusBarGeneric is the same as
// wxStatusBar, then the corresponding IMPLEMENT_DYNAMIC_CLASS is already in
long style,
const wxString& name)
{
+ style |= wxTAB_TRAVERSAL | wxFULL_REPAINT_ON_RESIZE;
if ( !wxWindow::Create(parent, id,
wxDefaultPosition, wxDefaultSize,
- style | wxTAB_TRAVERSAL, name) )
+ style, name) )
return false;
// The status bar should have a themed background
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 );
+ wxCoord 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);
wxRect rect;
GetFieldRect(number, rect);
- Refresh( true, &rect );
+ Refresh(true, &rect);
+
+ // it's common to show some text in the status bar before starting a
+ // relatively lengthy operation, ensure that the text is shown to the
+ // user immediately and not after the lengthy operation end
+ Update();
}
}
{
int width, height;
GetClientSize(&width, &height);
-
- gtk_paint_resize_grip( m_widget->style,
+
+ if (GetLayoutDirection() == wxLayout_RightToLeft)
+ {
+ gtk_paint_resize_grip( m_widget->style,
+ GTK_PIZZA(m_wxwindow)->bin_window,
+ (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,
GTK_PIZZA(m_wxwindow)->bin_window,
(GtkStateType) GTK_WIDGET_STATE (m_widget),
NULL,
m_widget,
"statusbar",
GDK_WINDOW_EDGE_SOUTH_EAST,
- width-height-2, 1, height-2, height-3 );
-
+ width-height-2, 2, height-2, height-4 );
+ }
}
#endif
wxString text(GetStatusText(i));
- long x, y;
+ long x = 0, y = 0;
dc.GetTextExtent(text, &x, &y);
void wxStatusBarGeneric::InitColours()
{
// Shadow colours
-#if defined(__WIN95__) || defined(__WXMAC__)
+#if defined(__WXMSW__) || defined(__WXMAC__)
wxColour mediumShadowColour(wxSystemSettings::GetColour(wxSYS_COLOUR_3DSHADOW));
m_mediumShadowPen = wxPen(mediumShadowColour, 1, wxSOLID);
m_hilightPen = wxPen(hilightColour, 1, wxSOLID);
#elif defined(__WXPM__)
m_mediumShadowPen = wxPen(wxColour(127, 127, 127), 1, wxSOLID);
- m_hilightPen = wxPen(_T("WHITE"), 1, wxSOLID);
-
- wxColour vColour;
+ m_hilightPen = *wxWHITE_PEN;
- vColour.Set(wxString(_T("LIGHT GREY")));
- SetBackgroundColour(vColour);
- vColour.Set(wxString(_T("BLACK")));
- SetForegroundColour(vColour);
+ SetBackgroundColour(*wxLIGHT_GREY);
+ SetForegroundColour(*wxBLACK);
#else
- m_mediumShadowPen = wxPen("GREY", 1, wxSOLID);
- m_hilightPen = wxPen("WHITE", 1, wxSOLID);
+ m_mediumShadowPen = *wxGREY_PEN;
+ m_hilightPen = *wxWHITE_PEN;
#endif
}
int org_y = 0;
gdk_window_get_origin( source, &org_x, &org_y );
- gtk_window_begin_resize_drag (GTK_WINDOW (ancestor),
+ 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
{