Qt::DockWidgetArea QMainWindowProto::dockWidgetArea ( QDockWidget * dockwidget ) const { QMainWindow *item = qscriptvalue_cast<QMainWindow*>(thisObject()); if (item) return item->dockWidgetArea (dockwidget); return Qt::NoDockWidgetArea; }
void tst_QDockWidget::titleBarDoubleClick() { QMainWindow win; QDockWidget dock(&win); win.show(); dock.setFloating(true); QEvent e(QEvent::NonClientAreaMouseButtonDblClick); QApplication::sendEvent(&dock, &e); QVERIFY(dock.isFloating()); QCOMPARE(win.dockWidgetArea(&dock), Qt::NoDockWidgetArea); win.addDockWidget(Qt::TopDockWidgetArea, &dock); dock.setFloating(true); QApplication::sendEvent(&dock, &e); QVERIFY(!dock.isFloating()); QCOMPARE(win.dockWidgetArea(&dock), Qt::TopDockWidgetArea); }
void ThumbBarDock::reInitialize() { // Measure orientation of the widget and adjust the child thumbbar to this // orientation and size. QMainWindow* parent = qobject_cast<QMainWindow*>(parentWidget()); emit dockLocationChanged(parent->dockWidgetArea(this)); widget()->resize(size()); update(); }
/** * @brief * Adds the given Qt dock widget to the given Qt main window and tabifies it */ void DockWidget::AddDockWidgetAndTabify(QMainWindow &cQMainWindow, Qt::DockWidgetArea nQtDockWidgetArea, QDockWidget &cQDockWidget) const { // Add the given Qt dock widget to the given Qt main window cQMainWindow.addDockWidget(nQtDockWidgetArea, &cQDockWidget); // Tabify const QList<QDockWidget*> lstQDockWidgets = cQMainWindow.findChildren<QDockWidget*>(); for (int i=0; i<lstQDockWidgets.count(); i++) { // Get the current dock widget QDockWidget *pQDockWidget = lstQDockWidgets.at(i); // Is this current dock widget in the same dock widget area? if (pQDockWidget != &cQDockWidget && cQMainWindow.dockWidgetArea(pQDockWidget) == nQtDockWidgetArea) { // Tabify dock widget cQMainWindow.tabifyDockWidget(pQDockWidget, &cQDockWidget); // Get us out of the loop i = lstQDockWidgets.count(); } } }
void TupConfigurationArea::shrink() { #ifdef K_DEBUG T_FUNCINFO; #endif QMainWindow *mainWindow = dynamic_cast<QMainWindow *>(parentWidget()); if (!mainWindow || !widget()) { #ifdef K_DEBUG tError() << "TupConfigurationArea::shrink() - Fatal error!"; #endif return; } bool hmt = mainWindow->hasMouseTracking(); int pm = style()->pixelMetric(QStyle::PM_DockWidgetSeparatorExtent); mainWindow->setMouseTracking(true); int wOffset = 0; int hOffset= 0; Qt::DockWidgetArea position = mainWindow->dockWidgetArea(this); if (position == Qt::BottomDockWidgetArea) { wOffset = 20; hOffset = -(y() * 2 + pm - 1); // SQA: FIXME FIXME FIXME } else if (position == Qt::LeftDockWidgetArea) { wOffset = width()+(pm/2)+1; hOffset = height() / 2; } else if (position == Qt::RightDockWidgetArea) { wOffset = -(pm/2)+1; hOffset = height() / 2; } QMouseEvent press(QEvent::MouseButtonPress, mapToParent( QPoint(this->x(), this->y()))/2 + QPoint(wOffset, hOffset), Qt::LeftButton, 0, 0); if (! QApplication::sendEvent(mainWindow, &press)) qWarning("Fail pressing"); qApp->processEvents(); int df = 0; int x1 = 0; int x2 = 0; int y1 = 0; int y2 = 0; int xRelease = 0; int yRelease = 0; if (position == Qt::BottomDockWidgetArea) { df = widget()->height(); x1 = press.pos().x(); y1 = press.pos().y() + df; x2 = press.globalPos().x(); y2 = press.globalPos().y() + df; xRelease = this->x(); yRelease = 10; } else if (position == Qt::LeftDockWidgetArea) { df = widget()->width(); x1 = press.pos().x() - df; y1 = press.pos().y(); x2 = press.globalPos().x() - df; y2 = press.globalPos().y(); xRelease = 10; yRelease = this->y(); } else if (position == Qt::RightDockWidgetArea) { df = widget()->width(); x1 = press.pos().x() + df; y1 = press.pos().y(); x2 = press.globalPos().x() + df; y2 = press.globalPos().y(); xRelease = mainWindow->width(); yRelease = this->y(); } QMouseEvent move(QEvent::MouseMove, QPoint(x1, y1), QPoint(x2, y2), Qt::LeftButton, 0, 0); if (! QApplication::sendEvent(mainWindow, &move)) qWarning("Fail moving"); qApp->processEvents(); QMouseEvent release(QEvent::MouseButtonRelease, QPoint(xRelease, yRelease), Qt::LeftButton, 0, 0); if (! QApplication::sendEvent(mainWindow, &release)) qWarning("Fail releasing"); qApp->processEvents(); mainWindow->setMouseTracking(hmt); }