msflags |= TBSTYLE_FLAT | TBSTYLE_TRANSPARENT;
}
}
+ if (style & wxTB_NODIVIDER)
+ msflags |= CCS_NODIVIDER;
+ if (style & wxTB_NOALIGN)
+ msflags |= CCS_NOPARENTALIGN;
// MSW-specific initialisation
if ( !wxControl::MSWCreateControl(TOOLBARCLASSNAME, msflags) )
// default to be consistent with wxGTK and the menu
// radio items
button.fsState |= TBSTATE_CHECKED;
+
+ tool->Toggle(TRUE);
}
isRadio = TRUE;
bool toggled = tool->IsToggled();
- // OnLeftClick() can veto the button state change - for buttons which may
- // be toggled only, of couse
- if ( !OnLeftClick((int)id, toggled) && tool->CanBeToggled() )
+ // avoid sending the event when a radio button is released, this is not
+ // interesting
+ if ( !tool->CanBeToggled() || tool->GetKind() != wxITEM_RADIO || toggled )
{
- // revert back
- toggled = !toggled;
- tool->SetToggle(toggled);
+ // OnLeftClick() can veto the button state change - for buttons which
+ // may be toggled only, of couse
+ if ( !OnLeftClick((int)id, toggled) && tool->CanBeToggled() )
+ {
+ // revert back
+ toggled = !toggled;
+ tool->SetToggle(toggled);
- ::SendMessage(GetHwnd(), TB_CHECKBUTTON, id, MAKELONG(toggled, 0));
+ ::SendMessage(GetHwnd(), TB_CHECKBUTTON, id, MAKELONG(toggled, 0));
+ }
}
return TRUE;
void wxToolBar::OnMouseEvent(wxMouseEvent& event)
{
+ if (event.Leaving() && m_pInTool)
+ {
+ OnMouseEnter( -1 );
+ event.Skip();
+ return;
+ }
+
if (event.RightDown())
{
// For now, we don't have an id. Later we could
else
{
w = LOWORD(lParam);
- h = r.bottom - r.top;
+ if (HasFlag( wxTB_FLAT ))
+ h = r.bottom - r.top - 3;
+ else
+ h = r.bottom - r.top;
if ( m_maxRows )
{
// FIXME: 6 is hardcoded separator line height...
- h += 6;
+ //h += 6;
+ if (HasFlag(wxTB_NODIVIDER))
+ h += 3;
+ else
+ h += 6;
h *= m_maxRows;
}
}