Verbessert das Toolbox-Tray-Verhalten
Diese Änderungen verbessern das Verhalten des Toolbox-Trays. - Fügt eine Callback-Funktion für Linksklicks hinzu, um die Aktion zu handhaben. - Aktualisiert die Tray-Initialisierung, um das Icon korrekt zu laden und zu teilen. - Behebt ein Problem, bei dem das Fenster nicht automatisch ausgeblendet wurde, wenn es den Fokus verliert. - Fügt Logik hinzu, um sicherzustellen, dass das Fenster beim Anzeigen in den Vordergrund gebracht und fokussiert wird. - Vergrößert die Fenstergröße.
This commit is contained in:
@@ -5,30 +5,36 @@
|
||||
|
||||
class toolboxTray : public tray {
|
||||
public:
|
||||
// Konstruktor mit optionalen Parametern für Icon und Tooltip
|
||||
// Konstruktor mit optionalen Parametern fuer Icon und Tooltip
|
||||
explicit toolboxTray(const char* icon = nullptr, const char* tooltip = nullptr) : tray() {
|
||||
this->icon = icon;
|
||||
this->tooltip = const_cast<char*>(tooltip);
|
||||
this->menu = nullptr; // Initialisiere ohne Menü (kann später gesetzt werden)
|
||||
this->menu = nullptr; // Initialisiere ohne Menue (kann spaeter gesetzt werden)
|
||||
this->icon_handle = nullptr;
|
||||
this->icon_is_shared = 0;
|
||||
this->left_click_cb = nullptr;
|
||||
this->left_click_context = nullptr;
|
||||
}
|
||||
|
||||
// Funktion, um die gewünschte Aktion für den Linksklick zu setzen
|
||||
// Funktion, um die gewuenschte Aktion fuer den Linksklick zu setzen
|
||||
void setLeftClickAction(const std::function<void()>& action) {
|
||||
leftClickAction = action;
|
||||
this->left_click_cb = &toolboxTray::leftClickThunk;
|
||||
this->left_click_context = this;
|
||||
}
|
||||
|
||||
// Funktion zum Setzen des Tray-Menüs
|
||||
// Funktion zum Setzen des Tray-Menues
|
||||
void setTrayMenu(tray_menu* menu) {
|
||||
this->menu = menu;
|
||||
}
|
||||
|
||||
// Ereignis-Handler für Mausklicks
|
||||
// Ereignis-Handler fuer Mausklicks
|
||||
void handleMouseClick(int button) {
|
||||
if (button == LEFT_CLICK && leftClickAction) {
|
||||
// Führt die Linksklick-Aktion aus
|
||||
// Fuehrt die Linksklick-Aktion aus
|
||||
leftClickAction();
|
||||
} else if (button == RIGHT_CLICK) {
|
||||
// Zeigt das Menü
|
||||
// Zeigt das Menue
|
||||
showMenu();
|
||||
}
|
||||
}
|
||||
@@ -38,12 +44,19 @@ public:
|
||||
RIGHT_CLICK = 1
|
||||
};
|
||||
private:
|
||||
std::function<void()> leftClickAction; // Aktion für Linksklick
|
||||
std::function<void()> leftClickAction; // Aktion fuer Linksklick
|
||||
|
||||
// Zeigt das Menü an (Rechtsklick)
|
||||
void showMenu() {
|
||||
if (this->menu) {
|
||||
tray_update(this); // Update des Trays mit dem Menü
|
||||
static void leftClickThunk(void* context) {
|
||||
auto* self = static_cast<toolboxTray*>(context);
|
||||
if (self && self->leftClickAction) {
|
||||
self->leftClickAction();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// Zeigt das Menue an (Rechtsklick)
|
||||
void showMenu() {
|
||||
if (this->menu) {
|
||||
tray_update(this); // Update des Trays mit dem Menue
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#include <saucer/webview.hpp>
|
||||
#include <unordered_map>
|
||||
#include <mutex>
|
||||
#include <chrono>
|
||||
#include "optionWindow.h"
|
||||
#include "toolConfig.h"
|
||||
|
||||
@@ -54,6 +55,8 @@ private:
|
||||
std::unique_ptr<optionWindow> m_optionWindow;
|
||||
std::thread m_threadMonitor;
|
||||
std::atomic<bool> m_runningMonitor = true;
|
||||
std::chrono::steady_clock::time_point m_lastShowTime{};
|
||||
bool m_seenFocusSinceShow = false;
|
||||
|
||||
std::string jsonString;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user