diff --git a/.clang-format b/.clang-format index 994c3de2..68b09319 100644 --- a/.clang-format +++ b/.clang-format @@ -1,4 +1,7 @@ --- +# 关闭格式化 +DisableFormat: false + # 语言: None, Cpp, Java, JavaScript, ObjC, Proto, TableGen, TextProto Language: Cpp # 标准: Cpp03, Cpp11, Auto @@ -115,8 +118,7 @@ ContinuationIndentWidth: 4 Cpp11BracedListStyle: false # 继承最常用的指针和引用的对齐方式 DerivePointerAlignment: false -# 关闭格式化 -DisableFormat: false + # 自动检测函数的调用和定义是否被格式为每行一个参数(Experimental) ExperimentalAutoDetectBinPacking: false # 固定命名空间注释 diff --git a/3rdparty/TaoCommon/src/TaoCommon/Frameless/TaoFrameLessView.h b/3rdparty/TaoCommon/src/TaoCommon/Frameless/TaoFrameLessView.h deleted file mode 100644 index cbc42c4f..00000000 --- a/3rdparty/TaoCommon/src/TaoCommon/Frameless/TaoFrameLessView.h +++ /dev/null @@ -1,56 +0,0 @@ -#pragma once -#include "TaoCommonGlobal.h" -#include -#include -#include - -// 无边框窗口,主要用来实现自定义标题栏。 -// Windows平台支持拖动和改变大小,支持Aero效果 -// 非Windows平台,去掉边框,不做其它处理。由Qml模拟resize和拖动。 -class TaoFrameLessViewPrivate; -class TAO_API TaoFrameLessView : public QQuickView -{ - Q_OBJECT - using Super = QQuickView; - Q_PROPERTY(bool isMax READ isMax NOTIFY isMaxChanged) - Q_PROPERTY(bool isFull READ isFull NOTIFY isFullChanged) -public: - explicit TaoFrameLessView(QWindow* parent = nullptr); - ~TaoFrameLessView(); - void moveToScreenCenter(); - bool isMax() const; - bool isFull() const; - QQuickItem* titleItem() const; - - static QRect calcCenterGeo(const QRect& screenGeo, const QSize& normalSize); -public slots: - void setIsMax(bool isMax); - void setIsFull(bool isFull); - void setTitleItem(QQuickItem* item); - -signals: - void isMaxChanged(bool isMax); - void isFullChanged(bool isFull); - void mousePressed(int xPos, int yPos, int button); - -protected: - void showEvent(QShowEvent* e) override; - void resizeEvent(QResizeEvent* e) override; -#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) - bool nativeEvent(const QByteArray& eventType, void* message, qintptr* result) override; -#else - bool nativeEvent(const QByteArray& eventType, void* message, long* result) override; -#endif - void mousePressEvent(QMouseEvent* event) override - { -#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) - emit mousePressed(event->position().x(), event->position().y(), event->button()); -#else - emit mousePressed(event->x(), event->y(), event->button()); -#endif - Super::mousePressEvent(event); - } - -private: - TaoFrameLessViewPrivate* d; -}; diff --git a/3rdparty/TaoCommon/src/TaoCommon/Frameless/TaoFrameLessView_unix.cpp b/3rdparty/TaoCommon/src/TaoCommon/Frameless/TaoFrameLessView_unix.cpp deleted file mode 100644 index cc9edef2..00000000 --- a/3rdparty/TaoCommon/src/TaoCommon/Frameless/TaoFrameLessView_unix.cpp +++ /dev/null @@ -1,114 +0,0 @@ -#include "Frameless/TaoFrameLessView.h" -#include -#include -#include -#include - -class TaoFrameLessViewPrivate -{ -public: - bool m_isMax = false; - bool m_isFull = false; - QQuickItem* m_titleItem = nullptr; -}; -TaoFrameLessView::TaoFrameLessView(QWindow* parent) : Super(parent), d(new TaoFrameLessViewPrivate) -{ - setFlags(Qt::CustomizeWindowHint | Qt::Window | Qt::FramelessWindowHint | Qt::WindowMinMaxButtonsHint | Qt::WindowTitleHint | Qt::WindowSystemMenuHint); - setResizeMode(SizeRootObjectToView); - - setIsMax(windowState() == Qt::WindowMaximized); - setIsFull(windowState() == Qt::WindowFullScreen); - connect( - this, - &QWindow::windowStateChanged, - this, - [&](Qt::WindowState state) - { - (void)state; - setIsMax(windowState() == Qt::WindowMaximized); - setIsFull(windowState() == Qt::WindowFullScreen); - }); -} -TaoFrameLessView::~TaoFrameLessView() -{ - delete d; -} -void TaoFrameLessView::showEvent(QShowEvent* e) -{ - Super::showEvent(e); -} -QRect TaoFrameLessView::calcCenterGeo(const QRect& screenGeo, const QSize& normalSize) -{ - int w = normalSize.width(); - int h = normalSize.height(); - int x = screenGeo.x() + (screenGeo.width() - w) / 2; - int y = screenGeo.y() + (screenGeo.height() - h) / 2; - if (screenGeo.width() < w) - { - x = screenGeo.x(); - w = screenGeo.width(); - } - if (screenGeo.height() < h) - { - y = screenGeo.y(); - h = screenGeo.height(); - } - - return { x, y, w, h }; -} -void TaoFrameLessView::moveToScreenCenter() -{ - auto geo = calcCenterGeo(screen()->availableGeometry(), size()); - if (minimumWidth() > geo.width() || minimumHeight() > geo.height()) - { - setMinimumSize(geo.size()); - } - setGeometry(geo); - update(); -} -bool TaoFrameLessView::isMax() const -{ - return d->m_isMax; -} -bool TaoFrameLessView::isFull() const -{ - return d->m_isFull; -} -QQuickItem* TaoFrameLessView::titleItem() const -{ - return d->m_titleItem; -} -void TaoFrameLessView::setIsMax(bool isMax) -{ - if (d->m_isMax == isMax) - return; - - d->m_isMax = isMax; - emit isMaxChanged(d->m_isMax); -} -void TaoFrameLessView::setIsFull(bool isFull) -{ - if (d->m_isFull == isFull) - return; - - d->m_isFull = isFull; - emit isFullChanged(d->m_isFull); -} -void TaoFrameLessView::setTitleItem(QQuickItem* item) -{ - d->m_titleItem = item; -} -#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) -bool TaoFrameLessView::nativeEvent(const QByteArray& eventType, void* message, qintptr* result) -#else -bool TaoFrameLessView::nativeEvent(const QByteArray& eventType, void* message, long* result) -#endif - -{ - return Super::nativeEvent(eventType, message, result); -} - -void TaoFrameLessView::resizeEvent(QResizeEvent* e) -{ - Super::resizeEvent(e); -} diff --git a/3rdparty/TaoCommon/src/TaoCommon/Frameless/TaoFrameLessView_win.cpp b/3rdparty/TaoCommon/src/TaoCommon/Frameless/TaoFrameLessView_win.cpp deleted file mode 100644 index 378f1e2d..00000000 --- a/3rdparty/TaoCommon/src/TaoCommon/Frameless/TaoFrameLessView_win.cpp +++ /dev/null @@ -1,369 +0,0 @@ -#include "Frameless/TaoFrameLessView.h" - -#include -#include -#include -#include - -#include - -#include -#include -#include -#include // Fixes error C2504: 'IUnknown' : base class undefined - -#include -#include -#pragma comment(lib, "Dwmapi.lib") // Adds missing library, fixes error LNK2019: unresolved -#pragma comment(lib, "User32.lib") -#pragma comment(lib, "Gdi32.lib") -// we cannot just use WS_POPUP style -// WS_THICKFRAME: without this the window cannot be resized and so aero snap, de-maximizing and minimizing won't work -// WS_SYSMENU: enables the context menu with the move, close, maximize, minize... commands (shift + right-click on the task bar item) -// WS_CAPTION: enables aero minimize animation/transition -// WS_MAXIMIZEBOX, WS_MINIMIZEBOX: enable minimize/maximize -enum class Style : DWORD -{ - windowed = WS_OVERLAPPEDWINDOW | WS_THICKFRAME | WS_CAPTION | WS_SYSMENU | WS_MAXIMIZEBOX | WS_MINIMIZEBOX, - aero_borderless = WS_POPUP | WS_THICKFRAME | WS_CAPTION | WS_SYSMENU | WS_MAXIMIZEBOX | WS_MINIMIZEBOX, - basic_borderless = WS_POPUP | WS_THICKFRAME | WS_SYSMENU | WS_MAXIMIZEBOX | WS_MINIMIZEBOX -}; -static bool isCompositionEnabled() -{ - BOOL composition_enabled = FALSE; - bool success = ::DwmIsCompositionEnabled(&composition_enabled) == S_OK; - return composition_enabled && success; -} -static Style selectBorderLessStyle() -{ - return isCompositionEnabled() ? Style::aero_borderless : Style::basic_borderless; -} -static void setShadow(HWND handle, bool enabled) -{ - if (isCompositionEnabled()) - { - static const MARGINS shadow_state[2]{ { 0, 0, 0, 0 }, { 1, 1, 1, 1 } }; - ::DwmExtendFrameIntoClientArea(handle, &shadow_state[enabled]); - } -} -static long hitTest(RECT winrect, long x, long y, int borderWidth) -{ - // 鼠标区域位于窗体边框,进行缩放 - if ((x >= winrect.left) && (x < winrect.left + borderWidth) && (y >= winrect.top) && (y < winrect.top + borderWidth)) - { - return HTTOPLEFT; - } - else if (x < winrect.right && x >= winrect.right - borderWidth && y >= winrect.top && y < winrect.top + borderWidth) - { - return HTTOPRIGHT; - } - else if (x >= winrect.left && x < winrect.left + borderWidth && y < winrect.bottom && y >= winrect.bottom - borderWidth) - { - return HTBOTTOMLEFT; - } - else if (x < winrect.right && x >= winrect.right - borderWidth && y < winrect.bottom && y >= winrect.bottom - borderWidth) - { - return HTBOTTOMRIGHT; - } - else if (x >= winrect.left && x < winrect.left + borderWidth) - { - return HTLEFT; - } - else if (x < winrect.right && x >= winrect.right - borderWidth) - { - return HTRIGHT; - } - else if (y >= winrect.top && y < winrect.top + borderWidth) - { - return HTTOP; - } - else if (y < winrect.bottom && y >= winrect.bottom - borderWidth) - { - return HTBOTTOM; - } - else - { - return 0; - } -} - -static bool isMaxWin(QWindow* win) -{ - return win->windowState() == Qt::WindowMaximized; -} -static bool isFullWin(QQuickView* win) -{ - return win->windowState() == Qt::WindowFullScreen; -} - -class TaoFrameLessViewPrivate -{ -public: - bool m_firstRun = true; - bool m_isMax = false; - bool m_isFull = false; - QQuickItem* m_titleItem = nullptr; - HMENU mMenuHandler = NULL; - bool borderless = true; // is the window currently borderless - bool borderless_resize = true; // should the window allow resizing by dragging the borders while borderless - bool borderless_drag = true; // should the window allow moving my dragging the client area - bool borderless_shadow = true; // should the window display a native aero shadow while borderless - void setBorderLess(HWND handle, bool enabled) - { - auto newStyle = enabled ? selectBorderLessStyle() : Style::windowed; - auto oldStyle = static_cast