Applied patch [ 791573 ] New feature for FL toorbar buttons
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25125 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -74,6 +74,7 @@ protected:
|
||||
bool mDragStarted;
|
||||
bool mIsPressed;
|
||||
bool mIsInFocus;
|
||||
bool mIsToggled;
|
||||
|
||||
bool mHasFocusedBmp;
|
||||
|
||||
@@ -106,6 +107,10 @@ protected:
|
||||
// Returns TRUE if the given point is in the window.
|
||||
bool IsInWindow( int x, int y );
|
||||
|
||||
virtual void OnIdle(wxIdleEvent& event);
|
||||
// (EVT_UPDATE_UI handler)
|
||||
virtual void DoButtonUpdate();
|
||||
|
||||
public:
|
||||
|
||||
// Constructor.
|
||||
@@ -176,6 +181,9 @@ public:
|
||||
// Enables/disables button
|
||||
virtual bool Enable(bool enable);
|
||||
|
||||
// Depress button
|
||||
virtual bool Toggle(bool enable);
|
||||
|
||||
// Responds to a left mouse button down event.
|
||||
void OnLButtonDown( wxMouseEvent& event );
|
||||
|
||||
|
@@ -222,6 +222,8 @@ BEGIN_EVENT_TABLE( wxNewBitmapButton, wxPanel )
|
||||
|
||||
EVT_ERASE_BACKGROUND( wxNewBitmapButton::OnEraseBackground )
|
||||
|
||||
EVT_IDLE(wxNewBitmapButton::OnIdle)
|
||||
|
||||
END_EVENT_TABLE()
|
||||
|
||||
wxNewBitmapButton::wxNewBitmapButton( const wxBitmap& labelBitmap,
|
||||
@@ -251,7 +253,8 @@ wxNewBitmapButton::wxNewBitmapButton( const wxBitmap& labelBitmap,
|
||||
|
||||
mDragStarted ( FALSE ),
|
||||
mIsPressed ( FALSE ),
|
||||
mIsInFocus( FALSE ),
|
||||
mIsInFocus ( FALSE ),
|
||||
mIsToggled ( FALSE ),
|
||||
mHasFocusedBmp( FALSE ),
|
||||
mFiredEventType( firedEventType ),
|
||||
|
||||
@@ -295,6 +298,7 @@ wxNewBitmapButton::wxNewBitmapButton( const wxString& bitmapFileName,
|
||||
mDragStarted ( FALSE ),
|
||||
mIsPressed ( FALSE ),
|
||||
mIsInFocus ( FALSE ),
|
||||
mIsToggled ( FALSE ),
|
||||
mHasFocusedBmp( FALSE ),
|
||||
mFiredEventType( wxEVT_COMMAND_MENU_SELECTED ),
|
||||
|
||||
@@ -321,11 +325,11 @@ void wxNewBitmapButton::DrawShade( int outerLevel,
|
||||
{
|
||||
wxBitmap* pBmp = GetStateLabel();
|
||||
|
||||
int x = mMarginX - (outerLevel + 1);
|
||||
int y = mMarginY - (outerLevel + 1);
|
||||
int x = mMarginX - (outerLevel + 2);
|
||||
int y = mMarginY - (outerLevel + 2);
|
||||
|
||||
int height = pBmp->GetHeight() + (outerLevel + 1)*2 - 1;
|
||||
int width = pBmp->GetWidth() + (outerLevel + 1)*2 - 1;
|
||||
int height = pBmp->GetHeight() + (outerLevel + 2)*2 - 1;
|
||||
int width = pBmp->GetWidth() + (outerLevel + 2)*2 - 1;
|
||||
|
||||
dc.SetPen( upperLeftSidePen );
|
||||
dc.DrawLine( x,y, x + width, y );
|
||||
@@ -571,6 +575,19 @@ void wxNewBitmapButton::RenderLabelImages()
|
||||
}
|
||||
}
|
||||
|
||||
bool wxNewBitmapButton::Toggle(bool enable)
|
||||
{
|
||||
if ( mIsToggled == enable )
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
mIsToggled = enable;
|
||||
Refresh();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxNewBitmapButton::Enable(bool enable)
|
||||
{
|
||||
if ( enable != m_isEnabled )
|
||||
@@ -596,8 +613,11 @@ void wxNewBitmapButton::DrawDecorations( wxDC& dc )
|
||||
if ( mIsFlat )
|
||||
{
|
||||
DrawShade( 1, dc, mGrayPen, mGrayPen );
|
||||
|
||||
if ( mIsInFocus )
|
||||
if ( mIsToggled )
|
||||
{
|
||||
DrawShade( 0, dc, mDarkPen, mLightPen );
|
||||
}
|
||||
else if ( mIsInFocus )
|
||||
{
|
||||
if ( mIsPressed )
|
||||
DrawShade( 0, dc, mDarkPen, mLightPen );
|
||||
@@ -609,7 +629,7 @@ void wxNewBitmapButton::DrawDecorations( wxDC& dc )
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( mIsPressed )
|
||||
if ( mIsPressed || mIsToggled )
|
||||
{
|
||||
DrawShade( 0, dc, mDarkPen, mGrayPen );
|
||||
DrawShade( 1, dc, mBlackPen, mLightPen );
|
||||
@@ -799,3 +819,32 @@ void wxNewBitmapButton::OnKillFocus( wxFocusEvent& WXUNUSED(event) )
|
||||
wxMessageBox(wxT("kill-focus for button!"));
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// UI updates
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
void wxNewBitmapButton::OnIdle(wxIdleEvent& event)
|
||||
{
|
||||
DoButtonUpdate();
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
// Do the toolbar button updates (check for EVT_UPDATE_UI handlers)
|
||||
void wxNewBitmapButton::DoButtonUpdate()
|
||||
{
|
||||
wxUpdateUIEvent event(GetId());
|
||||
event.SetEventObject(this);
|
||||
|
||||
if ( GetParent()->ProcessEvent(event) )
|
||||
{
|
||||
if ( event.GetSetEnabled() )
|
||||
{
|
||||
bool enabled = event.GetEnabled();
|
||||
if ( enabled != IsEnabled() )
|
||||
Enable( enabled );
|
||||
}
|
||||
if ( event.GetSetChecked() )
|
||||
Toggle( event.GetChecked() );
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user