Files
sloposk/tests/tst_visibility.cpp
T
ericek111andClaude Opus 5.5 5e4d4051f3 Keep the window alive on close; add a system toggle to VisibilityController
- Main.qml: ignore close requests (Alt+F4, task manager), so the window
  can't be hidden without VisibilityController knowing.
- main.cpp: don't quit when the last window closes; KWin only restarts
  the input method after a crash.
- VisibilityController::setEnabled(): when false, the keyboard is hidden
  regardless of other state; changing it clears show()/hide() overrides.
  Not wired to KWin's tray toggle yet.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 19:58:59 +01:00

96 lines
2.3 KiB
C++

#include "window/VisibilityController.h"
#include <QTest>
class TestVisibility : public QObject
{
Q_OBJECT
private Q_SLOTS:
void followsFieldFocus()
{
VisibilityController v;
v.setFieldActive(true);
QVERIFY(v.isVisible());
v.setFieldActive(false);
QVERIFY(!v.isVisible());
}
void fieldShowsOnlyWhenTheSystemWantsIt()
{
VisibilityController v;
v.setShowOnField(false);
v.setFieldActive(true);
QVERIFY(!v.isVisible());
v.show(); // explicit requests still work
QVERIFY(v.isVisible());
v.setShowOnField(true);
v.setFieldActive(true);
QVERIFY(v.isVisible());
}
void dismissLastsUntilFocusChanges()
{
VisibilityController v;
v.setFieldActive(true);
v.hide();
QVERIFY(!v.isVisible());
v.setFieldActive(false);
v.setFieldActive(true);
QVERIFY(v.isVisible());
}
void dismissEndsWhenAnotherFieldIsFocused()
{
VisibilityController v;
v.setFieldActive(true);
v.hide();
v.setFieldActive(true); // activated straight from one field to the next
QVERIFY(v.isVisible());
}
void alwaysVisibleShowsWithoutField()
{
VisibilityController v;
v.setAlwaysVisible(true);
QVERIFY(v.isVisible());
v.hide(); // dismiss key still works...
QVERIFY(!v.isVisible());
v.setFieldActive(true); // ...until the focus changes
v.setFieldActive(false);
QVERIFY(v.isVisible());
}
void toggleShowsWithoutField()
{
VisibilityController v;
v.toggle();
QVERIFY(v.isVisible());
v.toggle();
QVERIFY(!v.isVisible());
}
void systemToggleGatesEverything()
{
VisibilityController v;
v.setAlwaysVisible(true);
v.setEnabled(false);
QVERIFY(!v.isVisible());
v.show();
QVERIFY(!v.isVisible());
v.hide();
v.setEnabled(true); // turning it back on forgets the dismiss
QVERIFY(v.isVisible());
}
void standaloneAlwaysVisible()
{
VisibilityController v;
v.setStandalone(true);
QVERIFY(v.isVisible());
}
};
QTEST_GUILESS_MAIN(TestVisibility)
#include "tst_visibility.moc"