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:
2026-02-02 21:16:06 +01:00
parent 0ce126fbfc
commit 835353e5a7
6 changed files with 92 additions and 40 deletions

View File

@@ -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
}
}
};

View File

@@ -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;