Codebase list dtkwidget / eb3dd94
Update upstream source from tag 'upstream/5.5.45' Update to upstream version '5.5.45' with Debian dir 7cf5cdc5a5752c948f98e2357c26f7bc56f86cf0 Boyuan Yang 1 year, 11 months ago
15 changed file(s) with 77 addition(s) and 25 deletion(s). Raw diff Collapse all Expand all
00 name: Call build-deb
11 on:
22 pull_request_target:
3 types: [opened, synchronize]
43 paths-ignore:
54 - ".github/workflows/**"
65
55 jobs:
66 chatopt:
77 uses: linuxdeepin/.github/.github/workflows/chatOps.yml@master
8 secrets:
9 APP_PRIVATE_KEY: ${{ secrets.APP_PRIVATE_KEY }}
00 name: cppcheck
11 on:
22 pull_request_target:
3 paths-ignore:
4 - ".github/workflows/**"
35
46 concurrency:
57 group: ${{ github.workflow }}-pull/${{ github.event.number }}
1212 ### Build from source code
1313
1414 1. Make sure you have installed all dependencies.
15
15 ````
16 sudo apt build-dep .
17 ````
18 If you need to use the designer plugin, you should also install:
19 ````
20 sudo apt install qttools5-dev
21 ````
1622 2. Build:
1723
1824 ````
5050 // TODO: 这里对dialog特殊处理,dialog不需要设置固定的位置,否则里面的坐标会发生偏移导致点击偏移
5151 // 但是这不是问题的根本原因,还需要进一步分析。该属性在插件中做了特殊处理
5252 q->QDialog::setProperty("DAbstractDialog", true);
53 auto noTitlebarEnabled = []{
54 QFunctionPointer enableNoTitlebar = qApp->platformFunction("_d_isEnableNoTitlebar");
55 bool enabled = qApp->platformName() == "dwayland" || qApp->property("_d_isDwayland").toBool();
56 return enabled && enableNoTitlebar != nullptr;
57 };
58
5359 if (qApp->isDXcbPlatform()) {
5460 handle = new DPlatformWindowHandle(q, q);
5561
7177
7278 bgBlurWidget->setBlurEnabled(blurIfPossible);
7379 q->setAttribute(Qt::WA_TranslucentBackground, blurIfPossible);
74 } else if (qApp->platformName() == "dwayland" || qApp->property("_d_isDwayland").toBool()) {
80 } else if (noTitlebarEnabled()) {
7581 handle = new DPlatformWindowHandle(q, q);
7682 // fix wayland no titlebar
7783 //q->setWindowFlags(q->windowFlags() | Qt::FramelessWindowHint);
293293 }
294294
295295 if (d->follower && watched == d->follower->topLevelWidget()) {
296 if (event->type() == QEvent::HoverMove)
296 if (event->type() == QEvent::HoverMove || event->type() == QEvent::UpdateRequest)
297297 d->updateTooltipPos();
298298
299299 if (d->timer.isActive())
4444 {
4545 titlebar = new DTitlebar(qq);
4646 titlebar->setAccessibleName("DMainWindowTitlebar");
47 if (DApplication::isDXcbPlatform() || (qApp->platformName() == "dwayland" || qApp->property("_d_isDwayland").toBool())) {
47 auto noTitlebarEnabled = []{
48 QFunctionPointer enableNoTitlebar = qApp->platformFunction("_d_isEnableNoTitlebar");
49 bool enabled = qApp->platformName() == "dwayland" || qApp->property("_d_isDwayland").toBool();
50 return enabled && enableNoTitlebar != nullptr;
51 };
52 if (DApplication::isDXcbPlatform() || noTitlebarEnabled()) {
4853 handle = new DPlatformWindowHandle(qq, qq);
4954 qq->setMenuWidget(titlebar);
5055 } else {
12781278 QPrinterInfo updateinfo(*printer);
12791279
12801280 QStringList pageSizeList;
1281 int index = -1;
12811282 for (int i = 0; i < updateinfo.supportedPageSizes().size(); i++) {
12821283 pageSizeList.append(updateinfo.supportedPageSizes().at(i).key());
1284 if (index == -1 && updateinfo.supportedPageSizes().at(i).id() == QPageSize::PageSizeId::A4) {
1285 index = i;
1286 }
12831287 }
12841288 paperSizeCombo->addItems(pageSizeList);
12851289 if (pageSizeList.contains(lastPaperSize)) {
12871291 } else {
12881292 //调用绘制预览
12891293 paperSizeCombo->blockSignals(false);
1290 paperSizeCombo->setCurrentText("A4");
1294 paperSizeCombo->setCurrentIndex(index == - 1 ? 0 : index);
12911295 }
12921296
12931297 //判断当前打印机是否支持双面打印,不支持禁用双面打印按钮,pdf不做判断
170170 }
171171
172172 QMenu *menu = createStandardContextMenu();
173 if (!menu)
174 return QTextEdit::contextMenuEvent(e);
175
173176 menu->addSeparator();
174177
175178 connect(menu, &QMenu::triggered, this, [this](QAction *pAction) {
516516 // 另外,让标题栏接收焦点,还是为了避免一个focus控件隐藏时,会把焦点转移给标题栏上的按钮控件
517517 q->setFocusPolicy(Qt::StrongFocus);
518518
519 auto noTitlebarEnabled = []{
520 QFunctionPointer enableNoTitlebar = qApp->platformFunction("_d_isEnableNoTitlebar");
521 bool enabled = qApp->platformName() == "dwayland" || qApp->property("_d_isDwayland").toBool();
522 return enabled && enableNoTitlebar != nullptr;
523 };
519524 // fix wayland 下显示了两个应用图标,系统标题栏 和 dtk标题栏 均显示应用图标
520 q->setEmbedMode(!(DApplication::isDXcbPlatform()|| (qApp->platformName() == "dwayland" || qApp->property("_d_isDwayland").toBool())));
525 q->setEmbedMode(!(DApplication::isDXcbPlatform()|| noTitlebarEnabled()));
521526 }
522527
523528 QWidget *DTitlebarPrivate::targetWindow()
3434 \a parent 为创建对象的父控件。
3535 */
3636 DWindowCloseButton::DWindowCloseButton(QWidget * parent)
37 : DIconButton(QStyle::SP_TitleBarCloseButton, parent)
37 : DIconButton(parent)
3838 {
39 //QStyle::SP_TitleBarCloseButton
40 auto iconEngine = new DStyledIconEngine(DDrawUtils::drawTitleBarCloseButton, QStringLiteral("TitleBarCloseButton"));
41 setIcon(QIcon(iconEngine));
3942 setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Expanding);
4043 setFlat(true);
4144 }
2525 DWindowMaxButtonPrivate(DWindowMaxButton* qq)
2626 : DIconButtonPrivate(qq)
2727 {
28 m_isMaximized = false;
28 }
29
30 void setMaximized(bool isMaximized)
31 {
32 if (isMaximized == m_isMaximized)
33 return;
34
35 m_isMaximized = isMaximized;
36
37 updateIcon();
38
39 Q_EMIT q_func()->maximizedChanged(isMaximized);
40 }
41
42 void updateIcon()
43 {
44 auto drawFun = !m_isMaximized ? DDrawUtils::drawTitleBarMaxButton : DDrawUtils::drawTitleBarNormalButton;
45 QString iconName = !m_isMaximized ? QStringLiteral("TitleBarMaxButton") : QStringLiteral("TitleBarNormalButton");
46
47 q_func()->setIcon(QIcon (new DStyledIconEngine(drawFun, iconName)));
2948 }
3049
3150 private:
32 bool m_isMaximized;
51 bool m_isMaximized = false;
3352 Q_DECLARE_PUBLIC(DWindowMaxButton)
3453 };
3554
5574 DIconButton(*new DWindowMaxButtonPrivate(this), parent)
5675 {
5776 setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Expanding);
58 setIcon(QStyle::SP_TitleBarMaxButton);
77 d_func()->updateIcon();
5978 setFlat(true);
6079 }
6180
92111 {
93112 D_D(DWindowMaxButton);
94113
95 if (d->m_isMaximized == isMaximized)
96 return;
97
98 d->m_isMaximized = isMaximized;
99
100 if (isMaximized) {
101 setIcon(QStyle::SP_TitleBarNormalButton);
102 } else {
103 setIcon(QStyle::SP_TitleBarMaxButton);
104 }
105
106 Q_EMIT maximizedChanged(isMaximized);
114 d->setMaximized(isMaximized);
107115 }
108116
109117 void DWindowMaxButton::initStyleOption(DStyleOptionButton *option) const
3939 DWindowMinButton::DWindowMinButton(QWidget * parent)
4040 : DIconButton(QStyle::SP_TitleBarMinButton, parent)
4141 {
42 //QStyle::SP_TitleBarMinButton
43 auto iconEngine = new DStyledIconEngine(DDrawUtils::drawTitleBarMinButton, QStringLiteral("TitleBarMinButton"));
44 setIcon(QIcon(iconEngine));
4245 setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Expanding);
4346 setFlat(true);
4447 }
3535 \a parent 为创建对象的父控件。
3636 */
3737 DWindowOptionButton::DWindowOptionButton(QWidget * parent)
38 : DIconButton(QStyle::SP_TitleBarMenuButton, parent)
38 : DIconButton(parent)
3939 {
40 //QStyle::SP_TitleBarMenuButton
41 auto iconEngine = new DStyledIconEngine(DDrawUtils::drawTitleBarMenuButton, QStringLiteral("TitleBarMenuButton"));
42 setIcon(QIcon(iconEngine));
4043 setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Expanding);
4144 setFlat(true);
4245 }
2525 DWIDGET_BEGIN_NAMESPACE
2626
2727 DWindowQuitFullButton::DWindowQuitFullButton(QWidget * parent)
28 : DIconButton(DStyle::SP_TitleQuitFullButton ,parent)
28 : DIconButton(parent)
2929 {
30 //DStyle::SP_TitleQuitFullButton
31 auto iconEngine = new DStyledIconEngine(DDrawUtils::drawTitleQuitFullButton, QStringLiteral("TitleQuitFullButton"));
32 setIcon(QIcon(iconEngine));
3033 setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Expanding);
3134 setFlat(true);
3235 }