4242
4343namespace ads
4444{
45+ static const char * const LocationProperty = " Location" ;
46+
4547/* *
4648 * Private data class of CDockWidgetTab class (pimpl)
4749 */
@@ -83,6 +85,20 @@ struct AutoHideTabPrivate
8385 DockContainer->handleAutoHideWidgetEvent (event, _this);
8486 }
8587 }
88+
89+ /* *
90+ * Helper function to create and initialize the menu entries for
91+ * the "Auto Hide Group To..." menu
92+ */
93+ QAction* createAutoHideToAction (const QString& Title, SideBarLocation Location,
94+ QMenu* Menu)
95+ {
96+ auto Action = Menu->addAction (Title);
97+ Action->setProperty (" Location" , Location);
98+ QObject::connect (Action, &QAction::triggered, _this, &CAutoHideTab::onAutoHideToActionClicked);
99+ Action->setEnabled (Location != _this->sideBarLocation ());
100+ return Action;
101+ }
86102}; // struct DockWidgetTabPrivate
87103
88104
@@ -299,10 +315,10 @@ void CAutoHideTab::contextMenuEvent(QContextMenuEvent* ev)
299315
300316 auto menu = Menu.addMenu (tr (" Pin To..." ));
301317 menu->setEnabled (IsPinnable);
302- // d->createAutoHideToAction(tr("Top"), SideBarTop, menu);
303- // d->createAutoHideToAction(tr("Left"), SideBarLeft, menu);
304- // d->createAutoHideToAction(tr("Right"), SideBarRight, menu);
305- // d->createAutoHideToAction(tr("Bottom"), SideBarBottom, menu);
318+ d->createAutoHideToAction (tr (" Top" ), SideBarTop, menu);
319+ d->createAutoHideToAction (tr (" Left" ), SideBarLeft, menu);
320+ d->createAutoHideToAction (tr (" Right" ), SideBarRight, menu);
321+ d->createAutoHideToAction (tr (" Bottom" ), SideBarBottom, menu);
306322
307323 /* Menu.addSeparator();
308324 Action = Menu.addAction(tr("Close"), this, SIGNAL(closeRequested()));
@@ -316,21 +332,31 @@ void CAutoHideTab::contextMenuEvent(QContextMenuEvent* ev)
316332
317333
318334// ============================================================================
319- void CAutoHideTab::mouseDoubleClickEvent (QMouseEvent *event )
335+ void CAutoHideTab::setDockWidgetFloating ( )
320336{
321- if (event->button () == Qt::LeftButton)
337+ /* auto DockArea = dockWidget()->dockAreaWidget();
338+ auto AutoHideContainer = dockWidget()->autoHideDockContainer();
339+ auto OriginalSize = AutoHideContainer->originalDockWidgetSize();
340+ auto DockAreaSize = DockArea->size();
341+ if (ads::internal::isHorizontalSideBarLocation(sideBarLocation()))
322342 {
323- setDockWidgetFloating ( );
343+ DockAreaSize.setHeight(OriginalSize.height() );
324344 }
325-
326- Super::mouseDoubleClickEvent (event);
345+ else
346+ {
347+ DockAreaSize.setWidth(OriginalSize.width());
348+ }
349+ DockArea->resize(DockAreaSize);*/
350+ dockWidget ()->setFloating ();
327351}
328352
329353
330- // ============================================================================
331- void CAutoHideTab::setDockWidgetFloating ()
354+ // ===========================================================================
355+ void CAutoHideTab::onAutoHideToActionClicked ()
332356{
333- dockWidget ()->setFloating ();
357+ int Location = sender ()->property (LocationProperty).toInt ();
358+ std::cout << " CAutoHideTab::onAutoHideToActionClicked " << Location << std::endl;
359+ d->DockWidget ->setAutoHide (true , (SideBarLocation)Location);
334360}
335361
336362
0 commit comments