Pencil2D Animation
Download Community News Docs Contribute
  • Overview
  • Articles
  • Code
  •  
  • Class List
  • Class Index
  • Class Hierarchy
  • Class Members
  • File List
Loading...
Searching...
No Matches
  • app
  • src
basedockwidget.cpp
1/*
2
3Pencil2D - Traditional Animation Software
4Copyright (C) 2005-2007 Patrick Corrieri & Pascal Naidon
5Copyright (C) 2012-2020 Matthew Chiawen Chang
6
7This program is free software; you can redistribute it and/or
8modify it under the terms of the GNU General Public License
9as published by the Free Software Foundation; version 2 of the License.
10
11This program is distributed in the hope that it will be useful,
12but WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14GNU General Public License for more details.
15
16*/
17
18#include <QLayout>
19#include <QResizeEvent>
20
21#include "basedockwidget.h"
22#include "platformhandler.h"
23#include "titlebarwidget.h"
24
25BaseDockWidget::BaseDockWidget(QWidget* pParent)
26: QDockWidget(pParent, Qt::Tool)
27{
28
29#ifdef __APPLE__
30 if (PlatformHandler::isDarkMode())
31 {
32 setStyleSheet("QDockWidget::title { background: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #4e4f4d, stop: 1 #424241); "
33 "background-repeat: repeat-x; text-align: center;"
34 "border-style: solid; border-bottom-color: #000000;"
35 "border-width: 1px; }");
36 }
37#endif
38
39 mTitleBarWidget = new TitleBarWidget(pParent);
40 mNoTitleBarWidget = new QWidget(pParent);
41
42 setTitleBarWidget(mTitleBarWidget);
43
44 connect(mTitleBarWidget, &TitleBarWidget::closeButtonPressed, this, &BaseDockWidget::close);
45
46 connect(mTitleBarWidget, &TitleBarWidget::undockButtonPressed, this, [this] {
47 setFloating(!isFloating());
48 });
49
50 connect(this, &QDockWidget::topLevelChanged, mTitleBarWidget, &TitleBarWidget::setIsFloating);
51 connect(this, &QDockWidget::windowTitleChanged, mTitleBarWidget, &TitleBarWidget::setTitle);
52}
53
54BaseDockWidget::~BaseDockWidget()
55{
56}
57
58void BaseDockWidget::lock(bool locked)
59{
60 // https://doc.qt.io/qt-5/qdockwidget.html#setTitleBarWidget
61 // A empty QWidget results in the title bar being hidden.
62 // nullptr means removing the custom title bar and restoring the default one
63
64 if (locked) {
65 setTitleBarWidget(mNoTitleBarWidget);
66 } else {
67 setTitleBarWidget(mTitleBarWidget);
68 }
69
70 mLocked = locked;
71}
72
73void BaseDockWidget::setTitle(const QString& title)
74{
75 if (!mTitleBarWidget) { return; }
76 mTitleBarWidget->setTitle(title);
77}
78
79void BaseDockWidget::resizeEvent(QResizeEvent *event)
80{
81 QDockWidget::resizeEvent(event);
82
83 if (mTitleBarWidget) {
84 mTitleBarWidget->resizeEvent(event);
85 }
86}
TitleBarWidget
Definition: titlebarwidget.h:28
QDockWidget
QDockWidget::event
virtual bool event(QEvent *event) override
QDockWidget::setTitleBarWidget
void setTitleBarWidget(QWidget *widget)
QDockWidget::topLevelChanged
void topLevelChanged(bool topLevel)
QResizeEvent
QString
Qt
Qt::Tool
Tool
QWidget
QWidget::close
bool close()
QWidget::resizeEvent
virtual void resizeEvent(QResizeEvent *event)
QWidget::windowTitleChanged
void windowTitleChanged(const QString &title)
Generated on Thu Jun 5 2025 14:06:43 for Pencil2D by doxygen 1.9.6 based on revision 4c63407997b2c03e5048716586dec6fbbb755173