4040#include < QDebug>
4141#include < QToolButton>
4242#include < QPushButton>
43+ #include < QMenu>
4344
4445#include " ads_globals.h"
4546#include " DockWidget.h"
@@ -163,7 +164,7 @@ void DockWidgetTabPrivate::createLayout()
163164 CloseButton->setSizePolicy (QSizePolicy::Fixed, QSizePolicy::Fixed);
164165 CloseButton->setVisible (false );
165166 CloseButton->setToolTip (QObject::tr (" Close Tab" ));
166- _this->connect (CloseButton, SIGNAL (clicked ()), SIGNAL (closeButtonClicked ()));
167+ _this->connect (CloseButton, SIGNAL (clicked ()), SIGNAL (closeRequested ()));
167168
168169 QFontMetrics fm (TitleLabel->font ());
169170 int Spacing = qRound (fm.height () / 4.0 );
@@ -345,6 +346,23 @@ void CDockWidgetTab::mouseMoveEvent(QMouseEvent* ev)
345346}
346347
347348
349+ // ============================================================================
350+ void CDockWidgetTab::contextMenuEvent (QContextMenuEvent* ev)
351+ {
352+ ev->accept ();
353+ std::cout << " CDockAreaTabBar::onTabContextMenuRequested" << std::endl;
354+
355+ d->DragStartMousePosition = ev->pos ();
356+ QMenu Menu (this );
357+ Menu.addAction (tr (" Detach" ), this , SLOT (onDetachActionTriggered ()));
358+ Menu.addSeparator ();
359+ auto Action = Menu.addAction (tr (" Close" ), this , SIGNAL (closeRequested ()));
360+ Action->setEnabled (isClosable ());
361+ Menu.addAction (tr (" Close Others" ), this , SIGNAL (closeOtherTabsRequested ()));
362+ Menu.exec (mapToGlobal (ev->pos ()));
363+ }
364+
365+
348366// ============================================================================
349367bool CDockWidgetTab::isActiveTab () const
350368{
@@ -433,6 +451,7 @@ void CDockWidgetTab::mouseDoubleClickEvent(QMouseEvent *event)
433451 // empty
434452 if (!d->DockArea ->dockContainer ()->isFloating () || d->DockArea ->dockWidgetsCount () > 1 )
435453 {
454+ d->DragStartMousePosition = event->pos ();
436455 d->startFloating ();
437456 }
438457
@@ -448,6 +467,20 @@ void CDockWidgetTab::setVisible(bool visible)
448467}
449468
450469
470+ // ============================================================================
471+ bool CDockWidgetTab::isClosable () const
472+ {
473+ return d->DockWidget && d->DockWidget ->features ().testFlag (CDockWidget::DockWidgetClosable);
474+ }
475+
476+
477+ // ===========================================================================
478+ void CDockWidgetTab::onDetachActionTriggered ()
479+ {
480+ d->DragStartMousePosition = mapFromGlobal (QCursor::pos ());
481+ d->startFloating ();
482+ }
483+
451484} // namespace ads
452485
453486// ---------------------------------------------------------------------------
0 commit comments