Files
Toolbox/inc/toolboxTray.h
Yadciel 835353e5a7 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.
2026-02-02 21:16:06 +01:00

63 lines
1.8 KiB
C++

#pragma once
#include "tray.h"
#include <functional>
class toolboxTray : public tray {
public:
// 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 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 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-Menues
void setTrayMenu(tray_menu* menu) {
this->menu = menu;
}
// Ereignis-Handler fuer Mausklicks
void handleMouseClick(int button) {
if (button == LEFT_CLICK && leftClickAction) {
// Fuehrt die Linksklick-Aktion aus
leftClickAction();
} else if (button == RIGHT_CLICK) {
// Zeigt das Menue
showMenu();
}
}
enum MouseButton {
LEFT_CLICK = 0,
RIGHT_CLICK = 1
};
private:
std::function<void()> leftClickAction; // Aktion fuer Linksklick
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
}
}
};