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 ...@@ -1343,7 +1343,7 @@ SfxUInt16Item DeleteStyle SID_STYLE_DELETE
] ]
SfxBoolItem DesignerDialog SID_STYLE_DESIGNER SfxVoidItem DesignerDialog SID_STYLE_DESIGNER
[ [
/* flags: */ /* flags: */
......
...@@ -40,6 +40,13 @@ AsynchronousCall::~AsynchronousCall (void) ...@@ -40,6 +40,13 @@ AsynchronousCall::~AsynchronousCall (void)
CancelRequest(); CancelRequest();
} }
void AsynchronousCall::RequestCall (const Action& rAction)
{
CancelRequest();
maAction = rAction;
RequestCall();
}
void AsynchronousCall::RequestCall (void) void AsynchronousCall::RequestCall (void)
{ {
if (mnCallId == 0) if (mnCallId == 0)
......
...@@ -38,6 +38,7 @@ public: ...@@ -38,6 +38,7 @@ public:
AsynchronousCall (const Action& rAction); AsynchronousCall (const Action& rAction);
~AsynchronousCall (void); ~AsynchronousCall (void);
void RequestCall (const Action& rAction);
void RequestCall (void); void RequestCall (void);
void CancelRequest (void); void CancelRequest (void);
......
...@@ -40,10 +40,11 @@ void Sidebar::ShowPanel ( ...@@ -40,10 +40,11 @@ void Sidebar::ShowPanel (
// All that is not necessary for the current use cases so lets // All that is not necessary for the current use cases so lets
// keep it simple for the time being. // keep it simple for the time being.
pController->OpenThenSwitchToDeck(pPanelDescriptor->msDeckId); pController->RequestSwitchToDeck(pPanelDescriptor->msDeckId);
} }
} }
} } // end of namespace sfx2::sidebar } } // end of namespace sfx2::sidebar
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
...@@ -504,14 +504,27 @@ void SidebarController::UpdateConfigurations (void) ...@@ -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 ( void SidebarController::OpenThenSwitchToDeck (
const ::rtl::OUString& rsDeckId) const ::rtl::OUString& rsDeckId)
{ {
// fdo#67627 Clicking a second time on a Deck icon will close the Deck
if (IsDeckVisible(rsDeckId))
{
RequestCloseDeck();
return;
}
RequestOpenDeck(); RequestOpenDeck();
SwitchToDeck(rsDeckId); SwitchToDeck(rsDeckId);
mpTabBar->Invalidate(); mpTabBar->Invalidate();
mpTabBar->HighlightDeck(rsDeckId);
} }
void SidebarController::SwitchToDeck ( void SidebarController::SwitchToDeck (
...@@ -996,7 +1009,10 @@ void SidebarController::RequestOpenDeck (void) ...@@ -996,7 +1009,10 @@ void SidebarController::RequestOpenDeck (void)
UpdateDeckOpenState(); UpdateDeckOpenState();
} }
bool SidebarController::IsDeckVisible(const OUString& rsDeckId)
{
return mbIsDeckOpen && mbIsDeckOpen.get() && msCurrentDeckId == rsDeckId;
}
void SidebarController::UpdateDeckOpenState (void) void SidebarController::UpdateDeckOpenState (void)
......
...@@ -122,6 +122,9 @@ public: ...@@ -122,6 +122,9 @@ public:
const static sal_Int32 SwitchFlag_ForceNewDeck = 0x02; const static sal_Int32 SwitchFlag_ForceNewDeck = 0x02;
const static sal_Int32 SwitchFlag_ForceNewPanels = 0x02; const static sal_Int32 SwitchFlag_ForceNewPanels = 0x02;
void RequestSwitchToDeck (
const ::rtl::OUString& rsDeckId);
void OpenThenSwitchToDeck ( void OpenThenSwitchToDeck (
const ::rtl::OUString& rsDeckId); const ::rtl::OUString& rsDeckId);
...@@ -133,6 +136,10 @@ public: ...@@ -133,6 +136,10 @@ public:
*/ */
void RequestOpenDeck (void); 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;} FocusManager& GetFocusManager (void) { return maFocusManager;}
private: 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