diff --git a/0001-Fixed-size-problem-with-multiple-screens.patch b/0001-Fixed-size-problem-with-multiple-screens.patch new file mode 100644 index 0000000..e6c10b9 --- /dev/null +++ b/0001-Fixed-size-problem-with-multiple-screens.patch @@ -0,0 +1,253 @@ +From 58482ffe6e2752173739827989bbf1135bc8104a Mon Sep 17 00:00:00 2001 +From: liuhao-startmenu +Date: Thu, 26 Mar 2020 22:29:09 +0800 +Subject: [PATCH] Fixed size problem with multiple screens + +--- + src/FunctionWidget/fullfunctionwidget.cpp | 57 +++++++++---------- + src/MainWindow/mainwindow.cpp | 7 ++- + src/MainWindow/mainwindow.h | 2 +- + .../qtsingleapplication.cpp | 12 ++-- + src/Style/style.cpp | 14 ++--- + src/Style/style.h | 1 + + ukui-menu.desktop | 2 +- + 7 files changed, 45 insertions(+), 50 deletions(-) + +diff --git a/src/FunctionWidget/fullfunctionwidget.cpp b/src/FunctionWidget/fullfunctionwidget.cpp +index 0223db7..8c0e29d 100644 +--- a/src/FunctionWidget/fullfunctionwidget.cpp ++++ b/src/FunctionWidget/fullfunctionwidget.cpp +@@ -300,27 +300,25 @@ void FullFunctionWidget::updateAppListView() + pBtnGroup->removeButton(button); + } + buttonList.clear(); +-// iconlistscrollareawidLayout->removeItem(pIconListTopSpacer); +-// iconlistscrollareawidLayout->removeItem(pIconListBottomSpacer); +-// while ((child = iconlistscrollareawidLayout->takeAt(0)) != 0) { +-// QWidget* wid=child->widget(); +-// iconlistscrollareawidLayout->removeWidget(wid); +-// wid->setParent(nullptr); +-// delete wid; +-// delete child; +-// } ++ while ((child = iconlistscrollareawidLayout->takeAt(0)) != 0) { ++ QWidget* wid=child->widget(); ++ iconlistscrollareawidLayout->removeWidget(wid); ++ wid->setParent(nullptr); ++ delete wid; ++ delete child; ++ } + +- for(int i=iconlistscrollareawidLayout->count()-2;i>0;i--) +- { +- if((child = iconlistscrollareawidLayout->takeAt(i)) != 0) +- { +- QWidget* wid=child->widget(); +- iconlistscrollareawidLayout->removeWidget(wid); +- wid->setParent(nullptr); +- delete wid; +- delete child; +- } +- } ++// for(int i=iconlistscrollareawidLayout->count()-2;i>0;i--) ++// { ++// if((child = iconlistscrollareawidLayout->takeAt(i)) != 0) ++// { ++// QWidget* wid=child->widget(); ++// iconlistscrollareawidLayout->removeWidget(wid); ++// wid->setParent(nullptr); ++// delete wid; ++// delete child; ++// } ++// } + initIconListScrollArea(); + } + +@@ -373,21 +371,20 @@ void FullFunctionWidget::initIconListWidget() + iconlistWid->setLayout(iconlistLayout); + + iconlistscrollarea=new ClassifyScrollArea(); +- iconlistscrollarea->setFixedSize(Style::LeftBtnWidth,iconlistWid->height()); ++// iconlistscrollarea->setFixedSize(Style::LeftBtnWidth,iconlistWid->height()); + iconlistscrollareaWid=new QWidget; + iconlistscrollareawidLayout=new QVBoxLayout; + iconlistscrollareawidLayout->setContentsMargins(0,0,0,0); + iconlistscrollareawidLayout->setSpacing(Style::LeftSpaceBetweenItem); + iconlistscrollareaWid->setLayout(iconlistscrollareawidLayout); + iconlistscrollarea->setWidget(iconlistscrollareaWid); +- iconlistLayout->addWidget(iconlistscrollarea); +- pBtnGroup=new QButtonGroup(iconlistscrollareaWid); +-// iconlistscrollarea->setStyleSheet("border:1px solid #ff0000;"); +-// iconlistscrollareaWid->setStyleSheet("border:1px solid #00ff00;"); ++ + pIconListTopSpacer=new QSpacerItem(20,40,QSizePolicy::Fixed,QSizePolicy::Expanding); + pIconListBottomSpacer=new QSpacerItem(20,40,QSizePolicy::Fixed,QSizePolicy::Expanding); +- iconlistscrollareawidLayout->addItem(pIconListTopSpacer); +- iconlistscrollareawidLayout->addItem(pIconListBottomSpacer); ++ iconlistLayout->addItem(pIconListTopSpacer); ++ iconlistLayout->addWidget(iconlistscrollarea); ++ iconlistLayout->addItem(pIconListBottomSpacer); ++ pBtnGroup=new QButtonGroup(iconlistscrollareaWid); + initIconListScrollArea(); + } + +@@ -396,6 +393,8 @@ void FullFunctionWidget::initIconListWidget() + */ + void FullFunctionWidget::initIconListScrollArea() + { ++ iconlistscrollarea->setFixedSize(Style::LeftBtnWidth, ++ classificationbtnlist.size()*Style::LeftBtnHeight+(classificationbtnlist.size()-1)*Style::LeftSpaceBetweenItem); + for(int i=0;iaddWidget(iconbtn); +- iconlistscrollareawidLayout->insertWidget(i+1,iconbtn); ++ iconlistscrollareawidLayout->addWidget(iconbtn); ++// iconlistscrollareawidLayout->insertWidget(i+1,iconbtn); + connect(iconbtn,SIGNAL(buttonClicked(QAbstractButton*)),pBtnGroup, SIGNAL(buttonClicked(QAbstractButton*))); + } + +diff --git a/src/MainWindow/mainwindow.cpp b/src/MainWindow/mainwindow.cpp +index 97c8daf..27dc2e9 100644 +--- a/src/MainWindow/mainwindow.cpp ++++ b/src/MainWindow/mainwindow.cpp +@@ -171,7 +171,8 @@ void MainWindow::initMainWindow() + connect(mainviewwid,SIGNAL(sendHideMainWindowSignal()),this,SLOT(recvHideMainWindowSlot())); + connect(sidebarwid,SIGNAL(sendHideMainWindowSignal()),this,SLOT(recvHideMainWindowSlot())); + +- connect(QApplication::desktop(),SIGNAL(resized(int)),this,SLOT(monitorResolutionChange(int))); ++ connect(QApplication::primaryScreen(),SIGNAL(geometryChanged(QRect)), ++ this,SLOT(monitorResolutionChange(QRect))); + } + + /** +@@ -392,9 +393,9 @@ void MainWindow::mainWindowMakeZero() + // pLeaveAnimation->start(); + //} + +-void MainWindow::monitorResolutionChange(int screen) ++void MainWindow::monitorResolutionChange(QRect rect) + { +- Q_UNUSED(screen); ++ Q_UNUSED(rect); + qApp->quit(); + QProcess::startDetached(QString("/usr/bin/ukui-menu")); + } +diff --git a/src/MainWindow/mainwindow.h b/src/MainWindow/mainwindow.h +index 8ae3292..28f9997 100644 +--- a/src/MainWindow/mainwindow.h ++++ b/src/MainWindow/mainwindow.h +@@ -80,7 +80,7 @@ private Q_SLOTS: + void showDefaultWidget();//显示默认窗口 + void recvHideMainWindowSlot();//接收隐藏主窗口信号 + // void recv_hover_signal_slot(bool is_hover); +- void monitorResolutionChange(int screen);//监控屏幕分辨率 ++ void monitorResolutionChange(QRect rect);//监控屏幕分辨率 + }; + + #endif // MAINWINDOW_H +diff --git a/src/QtSingleApplication/qtsingleapplication.cpp b/src/QtSingleApplication/qtsingleapplication.cpp +index 7b14df0..4a9294d 100644 +--- a/src/QtSingleApplication/qtsingleapplication.cpp ++++ b/src/QtSingleApplication/qtsingleapplication.cpp +@@ -344,26 +344,26 @@ void QtSingleApplication::activateWindow() + if(ret) + { + if(position==0) +- actWin->setGeometry(QRect(0,0,this->desktop()->width(),this->desktop()->height()-panelSize)); ++ actWin->setGeometry(QRect(0,0,this->primaryScreen()->geometry().width(),this->primaryScreen()->geometry().height()-panelSize)); + else if(position==1) +- actWin->setGeometry(QRect(0,panelSize,this->desktop()->width(),this->desktop()->height()-panelSize)); ++ actWin->setGeometry(QRect(0,panelSize,this->primaryScreen()->geometry().width(),this->primaryScreen()->geometry().height()-panelSize)); + else if(position==2) +- actWin->setGeometry(QRect(panelSize,0,this->desktop()->width()-panelSize,this->desktop()->height())); ++ actWin->setGeometry(QRect(panelSize,0,this->primaryScreen()->geometry().width()-panelSize,this->primaryScreen()->geometry().height())); + else +- actWin->setGeometry(QRect(0,0,this->desktop()->width()-panelSize,this->desktop()->height())); ++ actWin->setGeometry(QRect(0,0,this->primaryScreen()->geometry().width()-panelSize,this->primaryScreen()->geometry().height())); + + } + else { + w->setFrameStyle(); + if(position==0) +- actWin->setGeometry(QRect(0,this->desktop()->height()-panelSize-actWin->height(), ++ actWin->setGeometry(QRect(0,this->primaryScreen()->geometry().height()-panelSize-actWin->height(), + actWin->width(),actWin->height())); + else if(position==1) + actWin->setGeometry(QRect(0,panelSize,actWin->width(),actWin->height())); + else if(position==2) + actWin->setGeometry(QRect(panelSize,0,actWin->width(),actWin->height())); + else +- actWin->setGeometry(QRect(this->desktop()->width()-panelSize-actWin->width(),0, ++ actWin->setGeometry(QRect(this->primaryScreen()->geometry().width()-panelSize-actWin->width(),0, + actWin->width(),actWin->height())); + } + actWin->setWindowState(actWin->windowState() & ~Qt::WindowMinimized); +diff --git a/src/Style/style.cpp b/src/Style/style.cpp +index b3bc629..4a8ae47 100644 +--- a/src/Style/style.cpp ++++ b/src/Style/style.cpp +@@ -82,7 +82,6 @@ void Style::initWidStyle() + QString value=setting->get("font-name").toString(); + QStringList valstr=value.split(" "); + int fontSize=valstr.at(valstr.count()-1).toInt(); +-// int fontSize=14; + + QDBusInterface iface("com.ukui.panel.desktop", + "/", +@@ -91,22 +90,17 @@ void Style::initWidStyle() + + QDBusReply position=iface.call("GetPanelPosition",""); + QDBusReply panelSize=iface.call("GetPanelSize",""); +-// int widthavailable=0; +-// int heightavailable=0; + if(position==0 || position==1) + { +- widthavailable=QApplication::desktop()->width(); +- heightavailable=QApplication::desktop()->height()-panelSize; ++ widthavailable=QApplication::primaryScreen()->geometry().width(); ++ heightavailable=QApplication::primaryScreen()->geometry().height()-panelSize; + } + if(position==2 || position==3) + { +- widthavailable=QApplication::desktop()->width()-panelSize; +- heightavailable=QApplication::desktop()->height(); ++ widthavailable=QApplication::primaryScreen()->geometry().width()-panelSize; ++ heightavailable=QApplication::primaryScreen()->geometry().height(); + } + +- QApplication::desktop()->width(); +-// int height=QApplication::desktop()->height(); +-// int heightavailable=QApplication::desktop()->availableGeometry().height(); + if(widthavailable>=2000 && widthavailable<=4000) + { + MainViewWidWidth=widthavailable-round((widthavailable-1440)/2); +diff --git a/src/Style/style.h b/src/Style/style.h +index e6cac50..f20a79d 100644 +--- a/src/Style/style.h ++++ b/src/Style/style.h +@@ -25,6 +25,7 @@ + #include + #include + #include ++#include + + //颜色 + #define BORDERCOLOR "rgba(37,41,43)" //边框 +diff --git a/ukui-menu.desktop b/ukui-menu.desktop +index 39f263b..0fc2e77 100644 +--- a/ukui-menu.desktop ++++ b/ukui-menu.desktop +@@ -8,4 +8,4 @@ Type=Application + Icon=ukui-menu + X-UKUI-AutoRestart=true + OnlyShowIn=UKUI +-X-UKUI-Autostart-Phase=Applications ++X-UKUI-Autostart-Phase=Application +-- +2.33.0 + diff --git a/ukui-menu.spec b/ukui-menu.spec index 22548a8..083a35b 100644 --- a/ukui-menu.spec +++ b/ukui-menu.spec @@ -2,11 +2,12 @@ Name: ukui-menu Version: 3.0.2 -Release: 7 +Release: 8 Summary: Advanced ukui menu License: GPL-3.0-or-later URL: http://www.ukui.org Source0: %{name}-%{version}.tar.gz +Patch0: 0001-Fixed-size-problem-with-multiple-screens.patch BuildRequires: qt5-qtbase-devel BuildRequires: libqtxdg-devel @@ -39,6 +40,7 @@ Requires: accountsservice %prep %setup -q +%patch0 -p1 %build mkdir build && cd build @@ -60,10 +62,12 @@ rm -rf $RPM_BUILD_ROOT ##%{_datadir}/ukui-menu/translations/ %changelog +* Wed Jun 29 2022 huayadong - 3.0.2-8 +- Fixed size problem with multiple screens + * Fri May 20 2022 tanyulong - 3.0.2-7 - Improve the project according to the requirements of compliance improvement - * Sat Apr 02 2022 tanyulong - 3.0.2-6 - modify yaml file error