Disallow drop downs on AUI check buttons.

This doesn't make much sense and disallowing it makes check items consistent
with radio ones as previously you could set up a dropdown for the former but
not for the latter.

Also update the documentation of the relevant methods.

Closes #14795.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72944 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2012-11-10 12:40:47 +00:00
parent 75b2220eba
commit 72ae0b5169
3 changed files with 56 additions and 38 deletions

View File

@ -211,7 +211,14 @@ public:
void SetActive(bool b) { m_active = b; }
bool IsActive() const { return m_active; }
void SetHasDropDown(bool b) { m_dropDown = b; }
void SetHasDropDown(bool b)
{
wxCHECK_RET( !b || m_kind == wxITEM_NORMAL,
wxS("Only normal tools can have drop downs") );
m_dropDown = b;
}
bool HasDropDown() const { return m_dropDown; }
void SetSticky(bool b) { m_sticky = b; }

View File

@ -341,11 +341,13 @@ public:
bool IsActive() const;
/**
Set whether this tool has a drop down button.
This is only valid for wxITEM_NORMAL tools.
*/
void SetHasDropDown(bool b);
/**
Returns whether the toolbar item has an associated drop down button.
*/
bool HasDropDown() const;
@ -704,7 +706,21 @@ public:
void EnableTool(int tool_id, bool state);
bool GetToolEnabled(int tool_id) const;
/**
Set whether the specified toolbar item has a drop down button.
This is only valid for wxITEM_NORMAL tools.
@see wxAuiToolBarItem::SetHasDropDown()
*/
void SetToolDropDown(int tool_id, bool dropdown);
/**
Returns whether the specified toolbar item has an associated drop down
button.
@see wxAuiToolBarItem::HasDropDown()
*/
bool GetToolDropDown(int tool_id) const;
void SetToolBorderPadding(int padding);

View File

@ -1261,16 +1261,16 @@ void wxAuiToolBar::SetToolDropDown(int tool_id, bool dropdown)
if (!item)
return;
item->m_dropDown = dropdown;
item->SetHasDropDown(dropdown);
}
bool wxAuiToolBar::GetToolDropDown(int tool_id) const
{
wxAuiToolBarItem* item = FindTool(tool_id);
if (!item)
return 0;
return false;
return item->m_dropDown;
return item->HasDropDown();
}
void wxAuiToolBar::SetToolSticky(int tool_id, bool sticky)
@ -2411,41 +2411,36 @@ void wxAuiToolBar::OnPaint(wxPaintEvent& WXUNUSED(evt))
break;
}
if (item.m_kind == wxITEM_SEPARATOR)
switch ( item.m_kind )
{
// draw a separator
m_art->DrawSeparator(dc, this, item_rect);
}
else if (item.m_kind == wxITEM_LABEL)
{
// draw a text label only
m_art->DrawLabel(dc, this, item, item_rect);
}
else if (item.m_kind == wxITEM_NORMAL)
{
// draw a regular button or dropdown button
if (!item.m_dropDown)
case wxITEM_NORMAL:
// draw a regular or dropdown button
if (!item.m_dropDown)
m_art->DrawButton(dc, this, item, item_rect);
else
m_art->DrawDropDownButton(dc, this, item, item_rect);
break;
case wxITEM_CHECK:
case wxITEM_RADIO:
// draw a toggle button
m_art->DrawButton(dc, this, item, item_rect);
else
m_art->DrawDropDownButton(dc, this, item, item_rect);
}
else if (item.m_kind == wxITEM_CHECK)
{
// draw either a regular or dropdown toggle button
if (!item.m_dropDown)
m_art->DrawButton(dc, this, item, item_rect);
else
m_art->DrawDropDownButton(dc, this, item, item_rect);
}
else if (item.m_kind == wxITEM_RADIO)
{
// draw a toggle button
m_art->DrawButton(dc, this, item, item_rect);
}
else if (item.m_kind == wxITEM_CONTROL)
{
// draw the control's label
m_art->DrawControlLabel(dc, this, item, item_rect);
break;
case wxITEM_SEPARATOR:
// draw a separator
m_art->DrawSeparator(dc, this, item_rect);
break;
case wxITEM_LABEL:
// draw a text label only
m_art->DrawLabel(dc, this, item, item_rect);
break;
case wxITEM_CONTROL:
// draw the control's label
m_art->DrawControlLabel(dc, this, item, item_rect);
break;
}
// fire a signal to see if the item wants to be custom-rendered