Kaydet (Commit) d59b9b4a authored tarafından Samuel Mehrbrodt's avatar Samuel Mehrbrodt

fdo#67627 fdo#85791 Allow to show/hide sidebar decks with the same command

This also reintroduces the code to switch the decks asynchronously (removed unintentionally before)

Change-Id: I825b4d7c5777097e9d3b3d82adbe1f646510dc9d
üst ff1aae46
......@@ -1343,7 +1343,7 @@ SfxUInt16Item DeleteStyle SID_STYLE_DELETE
]
SfxBoolItem DesignerDialog SID_STYLE_DESIGNER
SfxVoidItem DesignerDialog SID_STYLE_DESIGNER
[
/* flags: */
......
......@@ -40,6 +40,13 @@ AsynchronousCall::~AsynchronousCall (void)
CancelRequest();
}
void AsynchronousCall::RequestCall (const Action& rAction)
{
CancelRequest();
maAction = rAction;
RequestCall();
}
void AsynchronousCall::RequestCall (void)
{
if (mnCallId == 0)
......
......@@ -38,6 +38,7 @@ public:
AsynchronousCall (const Action& rAction);
~AsynchronousCall (void);
void RequestCall (const Action& rAction);
void RequestCall (void);
void CancelRequest (void);
......
......@@ -40,10 +40,11 @@ void Sidebar::ShowPanel (
// All that is not necessary for the current use cases so lets
// keep it simple for the time being.
pController->OpenThenSwitchToDeck(pPanelDescriptor->msDeckId);
pController->RequestSwitchToDeck(pPanelDescriptor->msDeckId);
}
}
} } // end of namespace sfx2::sidebar
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
......@@ -504,14 +504,27 @@ void SidebarController::UpdateConfigurations (void)
}
void SidebarController::RequestSwitchToDeck (
const ::rtl::OUString& rsDeckId)
{
maContextChangeUpdate.CancelRequest();
maAsynchronousDeckSwitch.RequestCall(
::boost::bind(&SidebarController::OpenThenSwitchToDeck, this, rsDeckId));
}
void SidebarController::OpenThenSwitchToDeck (
const ::rtl::OUString& rsDeckId)
{
// fdo#67627 Clicking a second time on a Deck icon will close the Deck
if (IsDeckVisible(rsDeckId))
{
RequestCloseDeck();
return;
}
RequestOpenDeck();
SwitchToDeck(rsDeckId);
mpTabBar->Invalidate();
mpTabBar->HighlightDeck(rsDeckId);
}
void SidebarController::SwitchToDeck (
......@@ -996,7 +1009,10 @@ void SidebarController::RequestOpenDeck (void)
UpdateDeckOpenState();
}
bool SidebarController::IsDeckVisible(const OUString& rsDeckId)
{
return mbIsDeckOpen && mbIsDeckOpen.get() && msCurrentDeckId == rsDeckId;
}
void SidebarController::UpdateDeckOpenState (void)
......
......@@ -122,6 +122,9 @@ public:
const static sal_Int32 SwitchFlag_ForceNewDeck = 0x02;
const static sal_Int32 SwitchFlag_ForceNewPanels = 0x02;
void RequestSwitchToDeck (
const ::rtl::OUString& rsDeckId);
void OpenThenSwitchToDeck (
const ::rtl::OUString& rsDeckId);
......@@ -133,6 +136,10 @@ public:
*/
void RequestOpenDeck (void);
/** Returns true when the given deck is the currently visible deck
*/
bool IsDeckVisible (const ::rtl::OUString& rsDeckId);
FocusManager& GetFocusManager (void) { return maFocusManager;}
private:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment