tdf#125525 Allow shortcut keys from sidebar docking window
Fix for tdf#115434 prevents key presses being passed through to document
window from the sidebar docking window. This patch only prevents left,
right, down, up, page down/up, home, end, backspace, delete, insert and
return keys from being passed.
Change-Id: I97ab60a214cb9910f526a475f3134784728b7d9a
Reviewed-on: https://gerrit.libreoffice.org/73073
Tested-by: Jenkins
Reviewed-by: Jim Raykowski <raykowj@gmail.com>
diff --git a/sfx2/source/sidebar/SidebarDockingWindow.cxx b/sfx2/source/sidebar/SidebarDockingWindow.cxx
index 7e4d98e..1784180 100644
--- a/sfx2/source/sidebar/SidebarDockingWindow.cxx
+++ b/sfx2/source/sidebar/SidebarDockingWindow.cxx
@@ -126,25 +126,39 @@ bool SidebarDockingWindow::EventNotify(NotifyEvent& rEvent)
if (MouseNotifyEvent::KEYINPUT == nType)
{
const vcl::KeyCode& rKeyCode = rEvent.GetKeyEvent()->GetKeyCode();
if (!(rKeyCode.GetCode() == KEY_F10 && rKeyCode.GetModifier() &&
rKeyCode.IsShift() && rKeyCode.IsMod1()))
switch (rKeyCode.GetCode())
{
if (!mpAccel)
case KEY_UP:
case KEY_DOWN:
case KEY_PAGEUP:
case KEY_PAGEDOWN:
case KEY_HOME:
case KEY_END:
case KEY_LEFT:
case KEY_RIGHT:
case KEY_BACKSPACE:
case KEY_DELETE:
case KEY_INSERT:
case KEY_RETURN:
{
mpAccel = svt::AcceleratorExecute::createAcceleratorHelper();
mpAccel->init(comphelper::getProcessComponentContext(), mpSidebarController->getXFrame());
return true;
}
const OUString aCommand(mpAccel->findCommand(svt::AcceleratorExecute::st_VCLKey2AWTKey(rKeyCode)));
if (".uno:DesignerDialog" == aCommand)
{
std::shared_ptr<PanelDescriptor> xPanelDescriptor =
default:
break;
}
if (!mpAccel)
{
mpAccel = svt::AcceleratorExecute::createAcceleratorHelper();
mpAccel->init(comphelper::getProcessComponentContext(), mpSidebarController->getXFrame());
}
const OUString aCommand(mpAccel->findCommand(svt::AcceleratorExecute::st_VCLKey2AWTKey(rKeyCode)));
if (".uno:DesignerDialog" == aCommand)
{
std::shared_ptr<PanelDescriptor> xPanelDescriptor =
mpSidebarController->GetResourceManager()->GetPanelDescriptor( "StyleListPanel" );
if ( xPanelDescriptor && mpSidebarController->IsDeckVisible( xPanelDescriptor->msDeckId ) )
Close();
return true;
}
if (".uno:Sidebar" != aCommand)
return true;
if ( xPanelDescriptor && mpSidebarController->IsDeckVisible( xPanelDescriptor->msDeckId ) )
Close();
return true;
}
}
else if (MouseNotifyEvent::MOUSEBUTTONDOWN == nType)