no real change: put event handlers together at the end of the file
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58707 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -106,16 +106,16 @@ bool wxStatusBarGeneric::Create(wxWindow *parent,
|
|||||||
wxSize wxStatusBarGeneric::DoGetBestSize() const
|
wxSize wxStatusBarGeneric::DoGetBestSize() const
|
||||||
{
|
{
|
||||||
int width, height;
|
int width, height;
|
||||||
|
wxCoord y;
|
||||||
|
|
||||||
// best width is the width of the parent
|
// best width is the width of the parent
|
||||||
GetParent()->GetClientSize(&width, NULL);
|
GetParent()->GetClientSize(&width, NULL);
|
||||||
|
|
||||||
// best height is as calculated above in Create
|
// best height is as calculated above in Create()
|
||||||
wxClientDC dc((wxWindow*)this);
|
wxClientDC dc((wxWindow*)this);
|
||||||
dc.SetFont(GetFont());
|
dc.SetFont(GetFont());
|
||||||
wxCoord y;
|
dc.GetTextExtent(_T("X"), NULL, &y);
|
||||||
dc.GetTextExtent(_T("X"), NULL, &y );
|
height = (int)((11*y)/10 + 2*GetBorderY());
|
||||||
height = (int)( (11*y)/10 + 2*GetBorderY());
|
|
||||||
|
|
||||||
return wxSize(width, height);
|
return wxSize(width, height);
|
||||||
}
|
}
|
||||||
@@ -192,6 +192,156 @@ bool wxStatusBarGeneric::ShowsSizeGrip() const
|
|||||||
return tlw && !tlw->IsMaximized() && tlw->HasFlag(wxRESIZE_BORDER);
|
return tlw && !tlw->IsMaximized() && tlw->HasFlag(wxRESIZE_BORDER);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wxStatusBarGeneric::DrawFieldText(wxDC& dc, int i)
|
||||||
|
{
|
||||||
|
int leftMargin = 2;
|
||||||
|
|
||||||
|
wxRect rect;
|
||||||
|
GetFieldRect(i, rect);
|
||||||
|
|
||||||
|
wxString text(GetStatusText(i));
|
||||||
|
|
||||||
|
wxCoord x = 0, y = 0;
|
||||||
|
dc.GetTextExtent(text, &x, &y);
|
||||||
|
|
||||||
|
int xpos = rect.x + leftMargin;
|
||||||
|
int ypos = (int) (((rect.height - y) / 2 ) + rect.y + 0.5);
|
||||||
|
|
||||||
|
#if defined( __WXGTK__ ) || defined(__WXMAC__)
|
||||||
|
xpos++;
|
||||||
|
ypos++;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
dc.SetClippingRegion(rect.x, rect.y, rect.width, rect.height);
|
||||||
|
|
||||||
|
dc.DrawText(text, xpos, ypos);
|
||||||
|
|
||||||
|
dc.DestroyClippingRegion();
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxStatusBarGeneric::DrawField(wxDC& dc, int i)
|
||||||
|
{
|
||||||
|
wxRect rect;
|
||||||
|
GetFieldRect(i, rect);
|
||||||
|
|
||||||
|
int style = m_panes[i].nStyle;
|
||||||
|
if (style != wxSB_FLAT)
|
||||||
|
{
|
||||||
|
// Draw border
|
||||||
|
// For wxSB_NORMAL:
|
||||||
|
// Have grey background, plus 3-d border -
|
||||||
|
// One black rectangle.
|
||||||
|
// Inside this, left and top sides - dark grey. Bottom and right -
|
||||||
|
// white.
|
||||||
|
// Reverse it for wxSB_RAISED
|
||||||
|
|
||||||
|
dc.SetPen((style == wxSB_RAISED) ? m_mediumShadowPen : m_hilightPen);
|
||||||
|
|
||||||
|
#ifndef __WXPM__
|
||||||
|
|
||||||
|
// Right and bottom lines
|
||||||
|
dc.DrawLine(rect.x + rect.width, rect.y,
|
||||||
|
rect.x + rect.width, rect.y + rect.height);
|
||||||
|
dc.DrawLine(rect.x + rect.width, rect.y + rect.height,
|
||||||
|
rect.x, rect.y + rect.height);
|
||||||
|
|
||||||
|
dc.SetPen((style == wxSB_RAISED) ? m_hilightPen : m_mediumShadowPen);
|
||||||
|
|
||||||
|
// Left and top lines
|
||||||
|
dc.DrawLine(rect.x, rect.y + rect.height,
|
||||||
|
rect.x, rect.y);
|
||||||
|
dc.DrawLine(rect.x, rect.y,
|
||||||
|
rect.x + rect.width, rect.y);
|
||||||
|
#else
|
||||||
|
|
||||||
|
dc.DrawLine(rect.x + rect.width, rect.height + 2,
|
||||||
|
rect.x, rect.height + 2);
|
||||||
|
dc.DrawLine(rect.x + rect.width, rect.y,
|
||||||
|
rect.x + rect.width, rect.y + rect.height);
|
||||||
|
|
||||||
|
dc.SetPen((style == wxSB_RAISED) ? m_hilightPen : m_mediumShadowPen);
|
||||||
|
dc.DrawLine(rect.x, rect.y,
|
||||||
|
rect.x + rect.width, rect.y);
|
||||||
|
dc.DrawLine(rect.x, rect.y + rect.height,
|
||||||
|
rect.x, rect.y);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
DrawFieldText(dc, i);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the position and size of the field's internal bounding rectangle
|
||||||
|
bool wxStatusBarGeneric::GetFieldRect(int n, wxRect& rect) const
|
||||||
|
{
|
||||||
|
wxCHECK_MSG( (n >= 0) && ((size_t)n < m_panes.GetCount()), false,
|
||||||
|
_T("invalid status bar field index") );
|
||||||
|
|
||||||
|
// FIXME: workarounds for OS/2 bugs have nothing to do here (VZ)
|
||||||
|
int width, height;
|
||||||
|
#ifdef __WXPM__
|
||||||
|
GetSize(&width, &height);
|
||||||
|
#else
|
||||||
|
GetClientSize(&width, &height);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// we cache m_widthsAbs between calls and recompute it if client
|
||||||
|
// width has changed (or when it is initially empty)
|
||||||
|
if ( m_widthsAbs.IsEmpty() || m_lastClientWidth != width )
|
||||||
|
{
|
||||||
|
wxConstCast(this, wxStatusBarGeneric)->m_widthsAbs = CalculateAbsWidths(width);
|
||||||
|
|
||||||
|
// remember last width for which we have recomputed the widths in pixels
|
||||||
|
wxConstCast(this, wxStatusBarGeneric)->m_lastClientWidth = width;
|
||||||
|
}
|
||||||
|
|
||||||
|
rect.x = 0;
|
||||||
|
for ( int i = 0; i < n; i++ )
|
||||||
|
rect.x += m_widthsAbs[i];
|
||||||
|
|
||||||
|
rect.x += m_borderX;
|
||||||
|
rect.y = m_borderY;
|
||||||
|
|
||||||
|
rect.width = m_widthsAbs[n] - 2*m_borderX;
|
||||||
|
rect.height = height - 2*m_borderY;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Initialize colours
|
||||||
|
void wxStatusBarGeneric::InitColours()
|
||||||
|
{
|
||||||
|
#if defined(__WXPM__)
|
||||||
|
m_mediumShadowPen = wxPen(wxColour(127, 127, 127), 1, wxSOLID);
|
||||||
|
m_hilightPen = *wxWHITE_PEN;
|
||||||
|
|
||||||
|
SetBackgroundColour(*wxLIGHT_GREY);
|
||||||
|
SetForegroundColour(*wxBLACK);
|
||||||
|
#else // !__WXPM__
|
||||||
|
m_mediumShadowPen = wxPen(wxSystemSettings::GetColour(wxSYS_COLOUR_3DSHADOW));
|
||||||
|
m_hilightPen = wxPen(wxSystemSettings::GetColour(wxSYS_COLOUR_3DHILIGHT));
|
||||||
|
#endif // __WXPM__/!__WXPM__
|
||||||
|
}
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// wxStatusBarGeneric - event handlers
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
void wxStatusBarGeneric::OnPaint(wxPaintEvent& WXUNUSED(event) )
|
void wxStatusBarGeneric::OnPaint(wxPaintEvent& WXUNUSED(event) )
|
||||||
{
|
{
|
||||||
wxPaintDC dc(this);
|
wxPaintDC dc(this);
|
||||||
@@ -228,7 +378,7 @@ void wxStatusBarGeneric::OnPaint(wxPaintEvent& WXUNUSED(event) )
|
|||||||
}
|
}
|
||||||
#endif // __WXGTK20__
|
#endif // __WXGTK20__
|
||||||
|
|
||||||
if (GetFont().Ok())
|
if (GetFont().IsOk())
|
||||||
dc.SetFont(GetFont());
|
dc.SetFont(GetFont());
|
||||||
|
|
||||||
dc.SetBackgroundMode(wxBRUSHSTYLE_TRANSPARENT);
|
dc.SetBackgroundMode(wxBRUSHSTYLE_TRANSPARENT);
|
||||||
@@ -237,141 +387,6 @@ void wxStatusBarGeneric::OnPaint(wxPaintEvent& WXUNUSED(event) )
|
|||||||
DrawField(dc, i);
|
DrawField(dc, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxStatusBarGeneric::DrawFieldText(wxDC& dc, int i)
|
|
||||||
{
|
|
||||||
int leftMargin = 2;
|
|
||||||
|
|
||||||
wxRect rect;
|
|
||||||
GetFieldRect(i, rect);
|
|
||||||
|
|
||||||
wxString text(GetStatusText(i));
|
|
||||||
|
|
||||||
wxCoord x = 0, y = 0;
|
|
||||||
|
|
||||||
dc.GetTextExtent(text, &x, &y);
|
|
||||||
|
|
||||||
int xpos = rect.x + leftMargin;
|
|
||||||
int ypos = (int) (((rect.height - y) / 2 ) + rect.y + 0.5) ;
|
|
||||||
|
|
||||||
#if defined( __WXGTK__ ) || defined(__WXMAC__)
|
|
||||||
xpos++;
|
|
||||||
ypos++;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
dc.SetClippingRegion(rect.x, rect.y, rect.width, rect.height);
|
|
||||||
|
|
||||||
dc.DrawText(text, xpos, ypos);
|
|
||||||
|
|
||||||
dc.DestroyClippingRegion();
|
|
||||||
}
|
|
||||||
|
|
||||||
void wxStatusBarGeneric::DrawField(wxDC& dc, int i)
|
|
||||||
{
|
|
||||||
wxRect rect;
|
|
||||||
GetFieldRect(i, rect);
|
|
||||||
|
|
||||||
int style = m_panes[i].nStyle;
|
|
||||||
if (style != wxSB_FLAT)
|
|
||||||
{
|
|
||||||
// Draw border
|
|
||||||
// For wxSB_NORMAL:
|
|
||||||
// Have grey background, plus 3-d border -
|
|
||||||
// One black rectangle.
|
|
||||||
// Inside this, left and top sides - dark grey. Bottom and right -
|
|
||||||
// white.
|
|
||||||
// Reverse it for wxSB_RAISED
|
|
||||||
|
|
||||||
dc.SetPen((style == wxSB_RAISED) ? m_mediumShadowPen : m_hilightPen);
|
|
||||||
|
|
||||||
#ifndef __WXPM__
|
|
||||||
|
|
||||||
// Right and bottom lines
|
|
||||||
dc.DrawLine(rect.x + rect.width, rect.y,
|
|
||||||
rect.x + rect.width, rect.y + rect.height);
|
|
||||||
dc.DrawLine(rect.x + rect.width, rect.y + rect.height,
|
|
||||||
rect.x, rect.y + rect.height);
|
|
||||||
|
|
||||||
dc.SetPen((style == wxSB_RAISED) ? m_hilightPen : m_mediumShadowPen);
|
|
||||||
|
|
||||||
// Left and top lines
|
|
||||||
dc.DrawLine(rect.x, rect.y + rect.height,
|
|
||||||
rect.x, rect.y);
|
|
||||||
dc.DrawLine(rect.x, rect.y,
|
|
||||||
rect.x + rect.width, rect.y);
|
|
||||||
#else
|
|
||||||
|
|
||||||
dc.DrawLine(rect.x + rect.width, rect.height + 2,
|
|
||||||
rect.x, rect.height + 2);
|
|
||||||
dc.DrawLine(rect.x + rect.width, rect.y,
|
|
||||||
rect.x + rect.width, rect.y + rect.height);
|
|
||||||
|
|
||||||
dc.SetPen((style == wxSB_RAISED) ? m_hilightPen : m_mediumShadowPen);
|
|
||||||
dc.DrawLine(rect.x, rect.y,
|
|
||||||
rect.x + rect.width, rect.y);
|
|
||||||
dc.DrawLine(rect.x, rect.y + rect.height,
|
|
||||||
rect.x, rect.y);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
DrawFieldText(dc, i);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get the position and size of the field's internal bounding rectangle
|
|
||||||
bool wxStatusBarGeneric::GetFieldRect(int n, wxRect& rect) const
|
|
||||||
{
|
|
||||||
wxCHECK_MSG( (n >= 0) && ((size_t)n < m_panes.GetCount()), false,
|
|
||||||
_T("invalid status bar field index") );
|
|
||||||
|
|
||||||
// FIXME: workarounds for OS/2 bugs have nothing to do here (VZ)
|
|
||||||
int width, height;
|
|
||||||
#ifdef __WXPM__
|
|
||||||
GetSize(&width, &height);
|
|
||||||
#else
|
|
||||||
GetClientSize(&width, &height);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// we cache m_widthsAbs between calls and recompute it if client
|
|
||||||
// width has changed (or when it is initially empty)
|
|
||||||
if ( m_widthsAbs.IsEmpty() || (m_lastClientWidth != width) )
|
|
||||||
{
|
|
||||||
wxConstCast(this, wxStatusBarGeneric)->
|
|
||||||
m_widthsAbs = CalculateAbsWidths(width);
|
|
||||||
// remember last width for which we have recomputed the widths in pixels
|
|
||||||
wxConstCast(this, wxStatusBarGeneric)->
|
|
||||||
m_lastClientWidth = width;
|
|
||||||
}
|
|
||||||
|
|
||||||
rect.x = 0;
|
|
||||||
for ( int i = 0; i < n; i++ )
|
|
||||||
{
|
|
||||||
rect.x += m_widthsAbs[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
rect.x += m_borderX;
|
|
||||||
rect.y = m_borderY;
|
|
||||||
|
|
||||||
rect.width = m_widthsAbs[n] - 2*m_borderX;
|
|
||||||
rect.height = height - 2*m_borderY;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Initialize colours
|
|
||||||
void wxStatusBarGeneric::InitColours()
|
|
||||||
{
|
|
||||||
#if defined(__WXPM__)
|
|
||||||
m_mediumShadowPen = wxPen(wxColour(127, 127, 127), 1, wxSOLID);
|
|
||||||
m_hilightPen = *wxWHITE_PEN;
|
|
||||||
|
|
||||||
SetBackgroundColour(*wxLIGHT_GREY);
|
|
||||||
SetForegroundColour(*wxBLACK);
|
|
||||||
#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.
|
// Responds to colour changes, and passes event on to children.
|
||||||
void wxStatusBarGeneric::OnSysColourChanged(wxSysColourChangedEvent& event)
|
void wxStatusBarGeneric::OnSysColourChanged(wxSysColourChangedEvent& event)
|
||||||
{
|
{
|
||||||
@@ -381,20 +396,6 @@ void wxStatusBarGeneric::OnSysColourChanged(wxSysColourChangedEvent& event)
|
|||||||
wxWindow::OnSysColourChanged(event);
|
wxWindow::OnSysColourChanged(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
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)
|
void wxStatusBarGeneric::OnLeftDown(wxMouseEvent& event)
|
||||||
{
|
{
|
||||||
#ifdef __WXGTK20__
|
#ifdef __WXGTK20__
|
||||||
|
Reference in New Issue
Block a user