#pragma once #include #include #include #include class CodeEditor; // --------------------------------------------------------------------------- // VariableCompleter – Zeigt ein Popup mit passenden Variablennamen // wenn der Nutzer $ tippt und weiter eingibt. // // Kein Autocomplete — nur Anzeige. Klick oder Enter übernimmt. // Escape oder Weiterschreiben ohne Treffer schließt das Popup. // --------------------------------------------------------------------------- class VariableCompleter : public QObject { Q_OBJECT public: explicit VariableCompleter(CodeEditor *editor); // Muss nach jedem Tastendruck aufgerufen werden void handleKeyPress(QKeyEvent *event); // Muss aufgerufen werden, wenn der Editor den Fokus verliert // (z. B. beim Wechsel des Tabs) — schließt ein evtl. offenes Popup, // damit es nicht als "Geisterfenster" stehen bleibt. void notifyFocusLost(); private slots: void onItemActivated(QListWidgetItem *item); private: void updatePopup(); void hidePopup(); QStringList collectVariables() const; QString currentPrefix() const; // "$me" etc. links vom Cursor CodeEditor *m_editor = nullptr; QListWidget *m_popup = nullptr; };