summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fpicker/source/office/RemoteFilesDialog.cxx2
-rw-r--r--fpicker/source/office/iodlgimp.cxx2
-rw-r--r--include/vcl/menubtn.hxx12
-rw-r--r--sfx2/source/dialog/backingwindow.cxx4
-rw-r--r--vcl/source/control/menubtn.cxx6
5 files changed, 15 insertions, 11 deletions
diff --git a/fpicker/source/office/RemoteFilesDialog.cxx b/fpicker/source/office/RemoteFilesDialog.cxx
index 49b576dcfa31..ef5ca8c3c49d 100644
--- a/fpicker/source/office/RemoteFilesDialog.cxx
+++ b/fpicker/source/office/RemoteFilesDialog.cxx
@@ -279,7 +279,7 @@ RemoteFilesDialog::RemoteFilesDialog( vcl::Window* pParent, PickerFlags nBits )
m_pName_ed->SetGetFocusHdl( LINK( this, RemoteFilesDialog, FileNameGetFocusHdl ) );
m_pName_ed->SetModifyHdl( LINK( this, RemoteFilesDialog, FileNameModifyHdl ) );
- m_pAddService_btn->SetMenuMode( MENUBUTTON_MENUMODE_TIMED );
+ m_pAddService_btn->SetDelayMenu( true );
m_pAddMenu = m_pAddService_btn->GetPopupMenu();
m_pAddService_btn->SetClickHdl( LINK( this, RemoteFilesDialog, AddServiceHdl ) );
m_pAddService_btn->SetSelectHdl( LINK( this, RemoteFilesDialog, EditServiceMenuHdl ) );
diff --git a/fpicker/source/office/iodlgimp.cxx b/fpicker/source/office/iodlgimp.cxx
index cd4542c13612..0f3623fd22d2 100644
--- a/fpicker/source/office/iodlgimp.cxx
+++ b/fpicker/source/office/iodlgimp.cxx
@@ -95,7 +95,7 @@ SvtFileDialogURLSelector::SvtFileDialogURLSelector( vcl::Window* _pParent, SvtFi
{
SetStyle( GetStyle() | WB_NOPOINTERFOCUS | WB_RECTSTYLE | WB_SMALLSTYLE );
SetModeImage( _pDlg->GetButtonImage( _nButtonId ) );
- SetMenuMode( MENUBUTTON_MENUMODE_TIMED );
+ SetDelayMenu( true );
SetDropDown( PushButtonDropdownStyle::Toolbox );
}
diff --git a/include/vcl/menubtn.hxx b/include/vcl/menubtn.hxx
index 6063c5a61f78..f5056c1a5f9c 100644
--- a/include/vcl/menubtn.hxx
+++ b/include/vcl/menubtn.hxx
@@ -28,8 +28,6 @@ class PopupMenu;
class VclBuilder;
class VclSimpleEvent;
-#define MENUBUTTON_MENUMODE_TIMED ((sal_uInt16)0x0001)
-
class VCL_DLLPUBLIC MenuButton : public PushButton
{
private:
@@ -38,7 +36,7 @@ private:
Timer* mpMenuTimer;
VclPtr<PopupMenu> mpMenu;
sal_uInt16 mnCurItemId;
- sal_uInt16 mnMenuMode;
+ bool mbDelayMenu;
Link<MenuButton*,void> maActivateHdl;
Link<MenuButton*,void> maSelectHdl;
@@ -65,7 +63,13 @@ public:
void ExecuteMenu();
- void SetMenuMode(sal_uInt16 nMode) { mnMenuMode = nMode; }
+ //if false then the whole button launches the menu
+ //if true, then the button has a separator
+ //where the right portion launches the menu immediately
+ //where the left portion activates the underlying Button handlers
+ //before launching the menu in an idle, allowing it to be cancelled
+ //before being shown
+ void SetDelayMenu(bool bDelay) { mbDelayMenu = bDelay; }
void SetPopupMenu( PopupMenu* pNewMenu );
PopupMenu* GetPopupMenu() const { return mpMenu; }
diff --git a/sfx2/source/dialog/backingwindow.cxx b/sfx2/source/dialog/backingwindow.cxx
index 67738f454499..5ba36412e997 100644
--- a/sfx2/source/dialog/backingwindow.cxx
+++ b/sfx2/source/dialog/backingwindow.cxx
@@ -262,8 +262,8 @@ void BackingWindow::initControls()
mpLocalView->SetStyle( mpLocalView->GetStyle() | WB_VSCROLL);
mpLocalView->Hide();
- mpTemplateButton->SetMenuMode( MENUBUTTON_MENUMODE_TIMED );
- mpRecentButton->SetMenuMode( MENUBUTTON_MENUMODE_TIMED );
+ mpTemplateButton->SetDelayMenu(true);
+ mpRecentButton->SetDelayMenu(true);
//set handlers
mpLocalView->setCreateContextMenuHdl(LINK(this, BackingWindow, CreateContextMenuHdl));
diff --git a/vcl/source/control/menubtn.cxx b/vcl/source/control/menubtn.cxx
index c2c099cf80b9..26241a25e4a3 100644
--- a/vcl/source/control/menubtn.cxx
+++ b/vcl/source/control/menubtn.cxx
@@ -33,7 +33,7 @@ void MenuButton::ImplInitMenuButtonData()
mpMenuTimer = nullptr;
mpMenu = nullptr;
mnCurItemId = 0;
- mnMenuMode = 0;
+ mbDelayMenu = false;
}
void MenuButton::ImplInit( vcl::Window* pParent, WinBits nStyle )
@@ -105,7 +105,7 @@ IMPL_LINK_NOARG(MenuButton, ImplMenuTimeoutHdl, Timer *, void)
void MenuButton::MouseButtonDown( const MouseEvent& rMEvt )
{
bool bExecute = true;
- if ( mnMenuMode & MENUBUTTON_MENUMODE_TIMED )
+ if (mbDelayMenu)
{
// If the separated dropdown symbol is not hit, delay the popup execution
if( mnDDStyle != PushButtonDropdownStyle::MenuButton || // no separator at all
@@ -141,7 +141,7 @@ void MenuButton::KeyInput( const KeyEvent& rKEvt )
sal_uInt16 nCode = aKeyCode.GetCode();
if ( (nCode == KEY_DOWN) && aKeyCode.IsMod2() )
ExecuteMenu();
- else if ( !(mnMenuMode & MENUBUTTON_MENUMODE_TIMED) &&
+ else if ( !mbDelayMenu &&
!aKeyCode.GetModifier() &&
((nCode == KEY_RETURN) || (nCode == KEY_SPACE)) )
ExecuteMenu();