mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-04 09:23:03 +00:00
feat: 添加接口,用于性能优化测试
添加一个dbus接口,callShow被调用后任务栏才显示,否则任务栏不显示, 这里要求任务栏每次启动时这个接口必须被调用,startdde启动任务栏使用dde=dock -r启动,不影响以前的功能 Log: Change-Id: I449d24e7f6f164ebdb5861bfc8084ccc8bffef9e Reviewed-on: http://gerrit.uniontech.com/c/dde-dock/+/7291 Reviewed-by: <mailman@uniontech.com> Reviewed-by: fanpengcheng <fanpengcheng@uniontech.com> Tested-by: <mailman@uniontech.com>
This commit is contained in:
parent
56cad09af1
commit
ff93e9e78e
@ -40,6 +40,11 @@ MainWindow *DBusDockAdaptors::parent() const
|
||||
return static_cast<MainWindow *>(QObject::parent());
|
||||
}
|
||||
|
||||
void DBusDockAdaptors::callShow()
|
||||
{
|
||||
return parent()->callShow();
|
||||
}
|
||||
|
||||
QRect DBusDockAdaptors::geometry() const
|
||||
{
|
||||
return parent()->geometry();
|
||||
|
@ -36,6 +36,7 @@ class DBusDockAdaptors: public QDBusAbstractAdaptor
|
||||
Q_CLASSINFO("D-Bus Introspection", ""
|
||||
" <interface name=\"com.deepin.dde.Dock\">\n"
|
||||
" <property access=\"read\" type=\"(iiii)\" name=\"geometry\"/>\n"
|
||||
" <method name=\"callShow\"/>"
|
||||
" <signal name=\"geometryChanged\">"
|
||||
"<arg name=\"geometry\" type=\"(iiii)\"/>"
|
||||
"</signal>"
|
||||
@ -48,6 +49,9 @@ public:
|
||||
|
||||
MainWindow *parent() const;
|
||||
|
||||
public Q_SLOTS: // METHODS
|
||||
void callShow();
|
||||
|
||||
public: // PROPERTIES
|
||||
Q_PROPERTY(QRect geometry READ geometry NOTIFY geometryChanged)
|
||||
QRect geometry() const;
|
||||
|
@ -229,11 +229,13 @@ int main(int argc, char *argv[])
|
||||
DLogManager::registerFileAppender();
|
||||
|
||||
QCommandLineOption disablePlugOption(QStringList() << "x" << "disable-plugins", "do not load plugins.");
|
||||
QCommandLineOption runOption(QStringList() << "r" << "run-by-stardde", "run by startdde.");
|
||||
QCommandLineParser parser;
|
||||
parser.setApplicationDescription("DDE Dock");
|
||||
parser.addHelpOption();
|
||||
parser.addVersionOption();
|
||||
parser.addOption(disablePlugOption);
|
||||
parser.addOption(runOption);
|
||||
parser.process(app);
|
||||
|
||||
DGuiApplicationHelper::setSingleInstanceInterval(-1);
|
||||
@ -254,6 +256,8 @@ int main(int argc, char *argv[])
|
||||
QDBusConnection::sessionBus().registerService("com.deepin.dde.Dock");
|
||||
QDBusConnection::sessionBus().registerObject("/com/deepin/dde/Dock", "com.deepin.dde.Dock", &mw);
|
||||
|
||||
qApp->setProperty("CANSHOW", !parser.isSet(runOption));
|
||||
|
||||
mw.launch();
|
||||
|
||||
if (!IsSaveMode() && !parser.isSet(disablePlugOption)) {
|
||||
|
@ -128,6 +128,9 @@ MainWindow::~MainWindow()
|
||||
|
||||
void MainWindow::launch()
|
||||
{
|
||||
if (!qApp->property("CANSHOW").toBool())
|
||||
return;
|
||||
|
||||
m_launched = true;
|
||||
qApp->processEvents();
|
||||
setVisible(true);
|
||||
@ -135,6 +138,19 @@ void MainWindow::launch()
|
||||
m_shadowMaskOptimizeTimer->start();
|
||||
}
|
||||
|
||||
void MainWindow::callShow()
|
||||
{
|
||||
static bool flag = false;
|
||||
if (flag) {
|
||||
return;
|
||||
}
|
||||
flag = true;
|
||||
|
||||
qApp->setProperty("CANSHOW", true);
|
||||
|
||||
launch();
|
||||
}
|
||||
|
||||
void MainWindow::showEvent(QShowEvent *e)
|
||||
{
|
||||
QWidget::showEvent(e);
|
||||
@ -280,7 +296,7 @@ void MainWindow::initConnections()
|
||||
|
||||
// 响应后端触控屏拖拽任务栏高度长按信号
|
||||
connect(TouchSignalManager::instance(), &TouchSignalManager::middleTouchPress, this, &MainWindow::touchRequestResizeDock);
|
||||
connect(TouchSignalManager::instance(), &TouchSignalManager::touchMove, m_dragWidget, [ this ](){
|
||||
connect(TouchSignalManager::instance(), &TouchSignalManager::touchMove, m_dragWidget, [ this ]() {
|
||||
static QPoint lastPos;
|
||||
QPoint curPos = QCursor::pos();
|
||||
if (lastPos == curPos) {
|
||||
@ -368,9 +384,9 @@ void MainWindow::resetDragWindow()
|
||||
}
|
||||
|
||||
QRect rect = m_multiScreenWorker->dockRect(m_multiScreenWorker->deskScreen()
|
||||
, m_multiScreenWorker->position()
|
||||
, HideMode::KeepShowing,
|
||||
m_multiScreenWorker->displayMode());
|
||||
, m_multiScreenWorker->position()
|
||||
, HideMode::KeepShowing
|
||||
, m_multiScreenWorker->displayMode());
|
||||
|
||||
// 这个时候屏幕有可能是隐藏的,不能直接使用this->width()这种去设置任务栏的高度,而应该保证原值
|
||||
int dockSize = 0;
|
||||
@ -421,7 +437,7 @@ void MainWindow::onMainWindowSizeChanged(QPoint offset)
|
||||
newRect.setX(rect.x());
|
||||
newRect.setY(rect.y() + rect.height() - qBound(MAINWINDOW_MIN_SIZE, rect.height() - offset.y(), MAINWINDOW_MAX_SIZE));
|
||||
newRect.setWidth(rect.width());
|
||||
newRect.setHeight(qBound(MAINWINDOW_MIN_SIZE, rect.height() - offset.y(), MAINWINDOW_MAX_SIZE ));
|
||||
newRect.setHeight(qBound(MAINWINDOW_MIN_SIZE, rect.height() - offset.y(), MAINWINDOW_MAX_SIZE));
|
||||
}
|
||||
break;
|
||||
case Left: {
|
||||
@ -466,9 +482,9 @@ void MainWindow::touchRequestResizeDock()
|
||||
{
|
||||
const QPoint touchPos(QCursor::pos());
|
||||
QRect dockRect = m_multiScreenWorker->dockRect(m_multiScreenWorker->deskScreen()
|
||||
, m_multiScreenWorker->position()
|
||||
, HideMode::KeepShowing
|
||||
, m_multiScreenWorker->displayMode());
|
||||
, m_multiScreenWorker->position()
|
||||
, HideMode::KeepShowing
|
||||
, m_multiScreenWorker->displayMode());
|
||||
|
||||
// 隐藏状态返回
|
||||
if (width() == 0 || height() == 0) {
|
||||
|
@ -130,6 +130,7 @@ public:
|
||||
|
||||
public slots:
|
||||
void launch();
|
||||
void callShow();
|
||||
|
||||
private:
|
||||
using QWidget::show;
|
||||
|
Loading…
x
Reference in New Issue
Block a user