Respect AUI toolbar buttons sticky state in native MSW theme

Indicate that the items are sticky by always drawing them in a
hover-like state, as otherwise stickiness wasn't visible at all.

Closes #18496.
This commit is contained in:
Paul Kulchenko
2019-09-14 20:18:39 +02:00
committed by Vadim Zeitlin
parent 93815ad2d2
commit 9d704706cb
2 changed files with 3 additions and 2 deletions

View File

@@ -846,6 +846,7 @@ MyFrame::MyFrame(wxWindow* parent,
wxBitmap tb4_bmp1 = wxArtProvider::GetBitmap(wxART_NORMAL_FILE, wxART_OTHER, FromDIP(wxSize(16,16))); wxBitmap tb4_bmp1 = wxArtProvider::GetBitmap(wxART_NORMAL_FILE, wxART_OTHER, FromDIP(wxSize(16,16)));
tb4->AddTool(ID_DropDownToolbarItem, "Item 1", tb4_bmp1); tb4->AddTool(ID_DropDownToolbarItem, "Item 1", tb4_bmp1);
tb4->AddTool(ID_SampleItem+23, "Item 2", tb4_bmp1); tb4->AddTool(ID_SampleItem+23, "Item 2", tb4_bmp1);
tb4->SetToolSticky(ID_SampleItem+23, true);
tb4->AddTool(ID_SampleItem+24, "Item 3", tb4_bmp1); tb4->AddTool(ID_SampleItem+24, "Item 3", tb4_bmp1);
tb4->AddTool(ID_SampleItem+25, "Item 4", tb4_bmp1); tb4->AddTool(ID_SampleItem+25, "Item 4", tb4_bmp1);
tb4->AddSeparator(); tb4->AddSeparator();

View File

@@ -134,7 +134,7 @@ void wxAuiMSWToolBarArt::DrawButton(
btnState = TS_HOTCHECKED; btnState = TS_HOTCHECKED;
else if ( item.GetState() & wxAUI_BUTTON_STATE_CHECKED ) else if ( item.GetState() & wxAUI_BUTTON_STATE_CHECKED )
btnState = TS_CHECKED; btnState = TS_CHECKED;
else if ( item.GetState() & wxAUI_BUTTON_STATE_HOVER ) else if ( (item.GetState() & wxAUI_BUTTON_STATE_HOVER) || item.IsSticky() )
btnState = TS_HOT; btnState = TS_HOT;
else else
btnState = TS_NORMAL; btnState = TS_NORMAL;
@@ -259,7 +259,7 @@ void wxAuiMSWToolBarArt::DrawDropDownButton(
btnState = TS_DISABLED; btnState = TS_DISABLED;
else if ( item.GetState() & wxAUI_BUTTON_STATE_PRESSED ) else if ( item.GetState() & wxAUI_BUTTON_STATE_PRESSED )
btnState = TS_PRESSED; btnState = TS_PRESSED;
else if ( item.GetState() & wxAUI_BUTTON_STATE_HOVER ) else if ( (item.GetState() & wxAUI_BUTTON_STATE_HOVER) || item.IsSticky() )
btnState = TS_HOT; btnState = TS_HOT;
else else
btnState = TS_NORMAL; btnState = TS_NORMAL;