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,34 +5,39 @@ module;
|
||||
|
||||
export module toolboxTray;
|
||||
|
||||
|
||||
export
|
||||
class toolboxTray : public tray {
|
||||
public:
|
||||
// Konstruktor mit optionalen Parametern für Icon und Tooltip
|
||||
// Konstruktor mit optionalen Parametern fuer Icon und Tooltip
|
||||
toolboxTray(const char* icon = nullptr, const char* tooltip = nullptr) {
|
||||
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();
|
||||
}
|
||||
}
|
||||
@@ -43,12 +48,19 @@ public:
|
||||
};
|
||||
|
||||
private:
|
||||
std::function<void()> leftClickAction; // Aktion für Linksklick
|
||||
std::function<void()> leftClickAction; // Aktion fuer Linksklick
|
||||
|
||||
// Zeigt das Menü an (Rechtsklick)
|
||||
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 Menü
|
||||
tray_update(this); // Update des Trays mit dem Menue
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user