Merge branch 'master' into autohide_drag

This commit is contained in:
Uwe Kindler 2023-07-01 21:28:07 +02:00
commit 0b3c3f0123
6 changed files with 33 additions and 12 deletions

View File

@ -16,7 +16,7 @@ jobs:
run: | run: |
sudo apt-get update --fix-missing sudo apt-get update --fix-missing
sudo apt-get install qt5-default sudo apt-get install qt5-default
sudo apt-get install qtbase5-private-dev sudo apt-get install qtbase5-private-dev qtdeclarative5-dev
- name: qmake - name: qmake
run: qmake run: qmake
- name: make - name: make

View File

@ -320,7 +320,9 @@ Screenshot Ubuntu:
## Build ## Build
The Linux build requires private header files. Make sure that they are installed. The Linux build requires private header files. Make sure that they are installed.
The library uses SVG icons, so ensure that Qt SVG support is installed. The library uses SVG icons, so ensure that Qt SVG support is installed. The demo
application creates a `QQuickWidget` for testing, so ensure that the required
libraries are installed.
### Qt5 on Ubuntu 18.04 or 20.04 ### Qt5 on Ubuntu 18.04 or 20.04
@ -331,13 +333,13 @@ sudo apt install qt5-default qtbase5-private-dev
### Qt5 on Ubuntu 22.04 ### Qt5 on Ubuntu 22.04
```bash ```bash
sudo apt install qtbase5-dev qtbase5-private-dev qtbase5-dev-tools libqt5svg5 sudo apt install qtbase5-dev qtbase5-private-dev qtbase5-dev-tools libqt5svg5 libqt5qml5 qtdeclarative5-dev
``` ```
### Qt6 on Ubuntu 22.04 ### Qt6 on Ubuntu 22.04
```bash ```bash
sudo apt install qt6-base-dev qt6-base-private-dev qt6-tools-dev libqt6svg6 sudo apt install qt6-default qt6-base-dev qt6-base-private-dev qt6-tools-dev libqt6svg6 qt6-qtdeclarative
``` ```
Open the `ads.pro` file with QtCreator and start the build, that's it. Open the `ads.pro` file with QtCreator and start the build, that's it.

View File

@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.5)
project(ads_demo VERSION ${VERSION_SHORT}) project(ads_demo VERSION ${VERSION_SHORT})
find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED) find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED)
find_package(Qt${QT_VERSION_MAJOR} 5.5 COMPONENTS Core Gui Widgets REQUIRED) find_package(Qt${QT_VERSION_MAJOR} 5.5 COMPONENTS Core Gui Widgets Quick QuickWidgets REQUIRED)
if(WIN32 AND QT_VERSION_MAJOR LESS 6) if(WIN32 AND QT_VERSION_MAJOR LESS 6)
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS AxContainer REQUIRED) find_package(Qt${QT_VERSION_MAJOR} COMPONENTS AxContainer REQUIRED)
endif() endif()
@ -21,7 +21,9 @@ add_executable(AdvancedDockingSystemDemo WIN32 ${ads_demo_SRCS})
target_include_directories(AdvancedDockingSystemDemo PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../src") target_include_directories(AdvancedDockingSystemDemo PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../src")
target_link_libraries(AdvancedDockingSystemDemo PUBLIC Qt${QT_VERSION_MAJOR}::Core target_link_libraries(AdvancedDockingSystemDemo PUBLIC Qt${QT_VERSION_MAJOR}::Core
Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Gui
Qt${QT_VERSION_MAJOR}::Widgets) Qt${QT_VERSION_MAJOR}::Widgets
Qt${QT_VERSION_MAJOR}::Quick
Qt${QT_VERSION_MAJOR}::QuickWidgets)
if(WIN32 AND QT_VERSION_MAJOR LESS 6) if(WIN32 AND QT_VERSION_MAJOR LESS 6)
target_link_libraries(AdvancedDockingSystemDemo PUBLIC Qt${QT_VERSION_MAJOR}::AxContainer) target_link_libraries(AdvancedDockingSystemDemo PUBLIC Qt${QT_VERSION_MAJOR}::AxContainer)
endif() endif()

View File

@ -62,6 +62,7 @@
#include <QPointer> #include <QPointer>
#include <QMap> #include <QMap>
#include <QElapsedTimer> #include <QElapsedTimer>
#include <QQuickWidget>
#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0) #if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)
@ -407,6 +408,17 @@ struct MainWindowPrivate
return DockWidget; return DockWidget;
} }
/**
* Create QQuickWidget for test for OpenGL and QQuick
*/
ads::CDockWidget *createQQuickWidget()
{
QQuickWidget *widget = new QQuickWidget();
ads::CDockWidget *dockWidget = new ads::CDockWidget("Quick");
dockWidget->setWidget(widget);
return dockWidget;
}
#ifdef Q_OS_WIN #ifdef Q_OS_WIN
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) #if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
@ -424,7 +436,6 @@ struct MainWindowPrivate
} }
#endif #endif
#endif #endif
}; };
//============================================================================ //============================================================================
@ -559,6 +570,11 @@ void MainWindowPrivate::createContent()
// Create image viewer // Create image viewer
DockWidget = createImageViewer(); DockWidget = createImageViewer();
DockManager->addDockWidget(ads::LeftDockWidgetArea, DockWidget); DockManager->addDockWidget(ads::LeftDockWidgetArea, DockWidget);
// Create quick widget
DockWidget = createQQuickWidget();
DockWidget->setFeature(ads::CDockWidget::DockWidgetClosable, true);
DockManager->addDockWidget(ads::LeftDockWidgetArea, DockWidget);
} }

View File

@ -2,7 +2,7 @@ ADS_OUT_ROOT = $${OUT_PWD}/..
TARGET = AdvancedDockingSystemDemo TARGET = AdvancedDockingSystemDemo
DESTDIR = $${ADS_OUT_ROOT}/lib DESTDIR = $${ADS_OUT_ROOT}/lib
QT += core gui widgets QT += core gui widgets quick quickwidgets
include(../ads.pri) include(../ads.pri)

View File

@ -378,6 +378,7 @@ struct FloatingDockContainerPrivate
QWidget* MouseEventHandler = nullptr; QWidget* MouseEventHandler = nullptr;
CFloatingWidgetTitleBar* TitleBar = nullptr; CFloatingWidgetTitleBar* TitleBar = nullptr;
bool IsResizing = false; bool IsResizing = false;
bool MousePressed = false;
#endif #endif
/** /**
@ -1336,12 +1337,12 @@ void CFloatingDockContainer::resizeEvent(QResizeEvent *event)
Super::resizeEvent(event); Super::resizeEvent(event);
} }
static bool s_mousePressed = false;
//============================================================================ //============================================================================
void CFloatingDockContainer::moveEvent(QMoveEvent *event) void CFloatingDockContainer::moveEvent(QMoveEvent *event)
{ {
Super::moveEvent(event); Super::moveEvent(event);
if (!d->IsResizing && event->spontaneous() && s_mousePressed) if (!d->IsResizing && event->spontaneous() && d->MousePressed)
{ {
d->setState(DraggingFloatingWidget); d->setState(DraggingFloatingWidget);
d->updateDropOverlays(QCursor::pos()); d->updateDropOverlays(QCursor::pos());
@ -1357,10 +1358,10 @@ bool CFloatingDockContainer::event(QEvent *e)
switch (e->type()) switch (e->type())
{ {
case QEvent::WindowActivate: case QEvent::WindowActivate:
s_mousePressed = false; d->MousePressed = false;
break; break;
case QEvent::WindowDeactivate: case QEvent::WindowDeactivate:
s_mousePressed = true; d->MousePressed = true;
break; break;
default: default:
break; break;