diff --git a/cmake/windows/windows.cmake b/cmake/windows/windows.cmake index 4141ecf..5f2c8f7 100644 --- a/cmake/windows/windows.cmake +++ b/cmake/windows/windows.cmake @@ -1,4 +1,4 @@ -set(PLATFORM_SOURCES 3rdparty/WinCommander.cpp src/sys/windows/guihelper.cpp src/sys/windows/MiniDump.cpp src/sys/windows/cursor.cpp) +set(PLATFORM_SOURCES 3rdparty/WinCommander.cpp src/sys/windows/guihelper.cpp src/sys/windows/MiniDump.cpp) set(PLATFORM_LIBRARIES wininet wsock32 ws2_32 user32 rasapi32 iphlpapi) include(cmake/windows/generate_product_version.cmake) diff --git a/include/sys/windows/cursor.h b/include/sys/windows/cursor.h deleted file mode 100644 index a025cee..0000000 --- a/include/sys/windows/cursor.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -#include - -QPoint GetCursorPosition(); diff --git a/include/ui/mainwindow.h b/include/ui/mainwindow.h index 497eaab..3838877 100644 --- a/include/ui/mainwindow.h +++ b/include/ui/mainwindow.h @@ -151,6 +151,7 @@ private slots: private: Ui::MainWindow *ui; QSystemTrayIcon *tray; + std::chrono::time_point trayMenuTime; QShortcut *shortcut_ctrl_f = new QShortcut(QKeySequence("Ctrl+F"), this); QShortcut *shortcut_esc = new QShortcut(QKeySequence("Esc"), this); // diff --git a/src/sys/windows/cursor.cpp b/src/sys/windows/cursor.cpp deleted file mode 100644 index 9828655..0000000 --- a/src/sys/windows/cursor.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "include/sys/windows/cursor.h" - -#include -#include - -#include "windows.h" - -QPoint GetCursorPosition() -{ - POINT P; - if (!GetCursorPos(&P)) - { - qDebug((std::to_string(GetLastError())).c_str()); - } - return {int(P.x), int(P.y)}; -} diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index 79dce73..b9de378 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -22,7 +22,6 @@ #ifdef Q_OS_WIN #include "3rdparty/WinCommander.hpp" -#include "include/sys/windows/cursor.h" #else #ifdef Q_OS_LINUX #include "include/sys/linux/LinuxCap.h" @@ -273,7 +272,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi // Setup Tray tray = new QSystemTrayIcon(nullptr); - tray->setIcon(Icon::GetTrayIcon(Icon::NONE)); + tray->setIcon(GetTrayIcon(Icon::NONE)); tray->show(); auto *trayMenu = new QMenu(); trayMenu->addAction(ui->actionShow_window); @@ -287,21 +286,11 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi trayMenu->addAction(ui->actionRestart_Proxy); trayMenu->addAction(ui->actionRestart_Program); trayMenu->addAction(ui->menu_exit); + tray->setContextMenu(trayMenu); connect(tray, &QSystemTrayIcon::activated, qApp, [=](QSystemTrayIcon::ActivationReason reason) { if (reason == QSystemTrayIcon::Context) { -#ifdef Q_OS_WIN - auto pos = GetCursorPosition(); - MW_show_log(Int2String(pos.x())); - MW_show_log(Int2String(pos.y())); - auto screen = QGuiApplication::screenAt(QCursor::pos()); - QPoint finalPos = {int(pos.x() / screen->devicePixelRatio()), int(pos.y() / screen->devicePixelRatio())}; - MW_show_log(Int2String(finalPos.x())); - MW_show_log(Int2String(finalPos.y())); - trayMenu->popup(finalPos); -#else - trayMenu->popup(QCursor::pos()); -#endif + trayMenuTime = std::chrono::steady_clock::now(); } if (reason == QSystemTrayIcon::Trigger) { if (this->isVisible()) { @@ -691,6 +680,11 @@ void MainWindow::on_commitDataRequest() { } void MainWindow::on_menu_exit_triggered() { + std::chrono::duration elapsed_milliseconds = std::chrono::steady_clock::now() - trayMenuTime; + if (elapsed_milliseconds.count() < 150) + { + return; + } if (mu_exit.tryLock()) { NekoGui::dataStore->prepare_exit = true; //