Repository navigation
Logbuch auf der Ebene der Panels; schwebende Fenster folgen dem Hauptfenster; jedes Contestprogramm-Panel einzeln - #386
Merged
Merged
Conversation
Betreiber 2026-11-04: "wenn ich contestprogramm oeffne, soll das nach anklicken im vordergrund bleiben!" Das Logbuch (#381) war ein gewoehnliches, elternloses Fenster -- und das liegt auf macOS IMMER unter einem NSPanel derselben Anwendung, also unter Longpaths schwebenden Panels (Qt::Tool), egal wer zuletzt geklickt wurde. ContestFenster::oeffne(grund, elternFenster): mit Longpaths Hauptfenster als Eltern wird das Logbuch ein Qt::Tool -- die Ebene der Panels, dort gilt die Klickreihenfolge -- und bekommt WA_MacAlwaysShowToolWindow, damit es stehen bleibt, wenn Longpath nicht vorn ist. Die Dock-Ablage nimmt es mit; hinter die Connect-Maske soll es nicht. Prueffall mitElternfensterLiegtEsAufDerEbeneDerPanels (4/4 gruen); Vollbau mit main (#371, #379) gruen. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Betreiber 2026-11-04: "sobald ich das _ oder das + usw. links oben
verwenden muss sich das ganze!!!! Fenster bewegen! auch die
freischwebenden im verhältnis!" -- und: "wenn ich contestprogramm
oeffne, soll das nach anklicken im vordergrund bleiben!"
MainWindow::schwebendeMitziehen(): jedes schwebende Fenster (Aufzaehlung
wie beim Schutzrahmen) wird von seiner Lage im Verhaeltnis zum alten
Rahmen des Hauptfensters auf den neuen abgebildet -- ein Zug wird zum
gleichen Versatz, eine Groessenaenderung ("+", Vollbild) haelt das
Verhaeltnis; die Groesse bleibt dem Betreiber. Laeuft im 250-ms-Nachlauf
des Schutzrahmens, vor dem Herausholen aus den Sperrstreifen. Eigene
Bewegungen (Profil, Aufbau, Raster) ziehen nicht: eigeneBewegungLebt()
neu in WindowPlacement. Falle: das Raster rueckt das Hauptfenster nach
einer FREMDEN Bewegung um wenige Pixel nach, als eigene -- das ist der
Nachhall, erkannt an "Nachlauf laeuft noch, Sprung < Rasterweite".
Das Contest-Logbuch (vorheriger Commit) ist als Qt::Tool-Kind des
Hauptfensters Teil dieser Aufzaehlung und zieht mit.
Pruefstand tst_schwebende_folgen_dem_hauptfenster (Zug, Wachsen, eigene
Bewegung); Gegenprobe mit stillgelegtem Mitziehen: Faelle 1 und 2 rot.
Dafuer ein 1920x1200-Schirm fuer DIESEN Pruefstand
(offscreen:configfile=tests/offscreen-grosser-schirm.json): das
offscreen-Plugin hat 800x800, das Hauptfenster braucht 800x600.
Blatt: docs/architecture/2026-11-04-schwebende-fenster-folgen-dem-hauptfenster.md
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Geraetelog 2026-11-04 12:09:43, erster Start mit dem Mitziehen: "Hauptfenster QRect(0,48 1470x863) -> QRect(0,33 1470x863): 5 schwebende Fenster mitgezogen" -- Betreiber: "wieder irgendeine zusammensetzung der panels". Das Raster hatte das frisch maximierte Hauptfenster um 15 px nachgerueckt; der Sprung war klein und der Nachlauf lief, also galt er faelschlich als Nachhall einer fremden Bewegung. Beim Aufbau ist jede Bewegung eigen. Jetzt merkt sich der Nachlauf, ob ihn eine FREMDE Bewegung angestossen hat (m_fremdeBewegungAnhaengig); nur dann wird gezogen, und nur dann ist ein kleiner eigener Sprung danach der Nachhall des Rasters. Prueffall 3 faehrt den Versatz jetzt NEBEN dem Raster (-93,-41), damit das Raster nachrueckt -- genau dieser Weg. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Betreiber 2026-11-04, mit dem Tools-Menue auf dem Bild: "am besten
waere, wenn hier alle auch vom logprogramm contestprogramm stehen" --
"jedes panel vom contestprogramm sollte in longpath eigens hinzuzufuegen
sein, das waere die beste version" -- "wir haben dann auf der einen
seite das eigene contest programm, wenn es probleme gibt und wenn ich
will, kann ich dies eigens mit longpath nutzen."
Beobachtet am Geraet: ist das Logbuch das aktive Fenster, zeigt die
Menueleiste nur "Apple" und "Longpath" -- weder Longpaths Menues noch
das Fenster-Menue des Contestprogramms ("Als eigenes Fenster"). Darum
liegt die Liste in Longpaths Tools-Menue.
Tools > Contest logbook panels: je Panel ein Haken "als eigenes
Fenster", dazu alle / alle zurueck; gefuellt beim Aufklappen. Das
Logbuch-Hauptfenster muss dafuer nicht aufgehen: ContestFenster::lade()
baut Controller, Datenbank und Fenster verborgen; zeigePanelAlsFenster()
holt das Panel (Qt::Tool-Kind des verborgenen Logbuchs, das am
Hauptfenster haengt) und stellt es gestaffelt neben das Hauptfenster.
Gegenseite: oe5sos/Contestprogramm#72 (panelEintraege,
setzePanelSchwebend, ...), Submodul darauf gepinnt.
Mitziehen, Schutzrahmen und Dock-Ablage zaehlen jetzt ueber die
Fensterkette (schwebtUnter): auch Fenster, die ueber das Logbuch am
Hauptfenster haengen, nicht nur direkte Kinder.
Pruefstand tst_contestfenster::einPanelOhneLogbuchFenster;
tst_oberflaeche_englisch gruen. Nicht live gesehen -- offen am Geraet,
ob macOS ein Werkzeugfenster mit verborgenem Elternfenster zeigt.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Betreiber 2026-11-04: "alle panels haben hier noch runde kanten, dies
bitte auf eckig umstellen" -- ContestFenster::lade() setzt
PanelContainerWidget::setzeRahmenlosSchwebend(true), wenn ein
Elternfenster da ist: die Panels des Contestprogramms schweben dann wie
Longpaths eigene Fenster (Qt::Tool | FramelessWindowHint, eckig, Rueckweg
in der Kopfzeile). Dazu aus dem Submodul die Rotorzeile, die sich bis
auf einen Rotor Breite ziehen laesst ("das fenster rotoren muss sehr
gross gezogen werden, um grad eigens zu sehen").
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…, Kartenrotoren mittig Betreiber 2026-11-04: "die kaestchen fuer die gradanzahl bei rotoren koennen kleiner sein, so waere dann alles auch gemeinsam kleiner" und "bei karte und verbindungen sollten die rotoren eher mittig sein". Beides liegt im Contestprogramm; hier nur der Stand des Submoduls und der Nachtrag im Blatt. Bau mit diesen Quellen gruen, tst_contestfenster gruen. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Gefunden am Geraet, 2026-11-04 13:57: der Updater holte 0.9.0 (von main, Release-Lauf #384), und darin fehlte Tools > Contest Logbook -- Betreiber: "hier ist nun nichts mehr zu finden". Die Release- und CI-Laeufe checkten ohne Submodule aus, LONGPATH_CONTESTPROGRAMM stand damit auf AUS, und das seit #381 gemergte Fenster kam in keine Fassung. Die Option "AUS, wenn das Submodul fehlt" war fuer lokale Baeume ohne Submodul gedacht, nicht fuer die Fassungen. Jeder actions/checkout in ci.yml und release.yml bekommt `submodules: recursive`. Damit bauen CI und Release das Contestprogramm mit (Qt Sql und Multimedia kommen aus dem aqt-Paket, der SQLite-Treiber liegt bei qtbase), und tst_contestfenster laeuft in der CI. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Betreiber 2026-11-04, am Update-Dialog: "man sieht nicht, ob das Haekchen an ist oder nicht. das sollte ueberall kontrolliert werden." Style::kCheckBoxStyle zeichnete "an" als etwas helleren Rand (#55555e statt #2c2c31) auf fast demselben schwarzen Grund; kRadioButtonStyle genauso. Auf einem dunklen Schirm nicht zu unterscheiden. Jetzt traegt "an" ein Haekchen (resources/icons/check.svg, Textfarbe) und der Rundknopf einen Punkt (radio-dot.svg); abgeschaltet dasselbe in der gedaempften Schrift (check-dim.svg, radio-dot-dim.svg). Die Mulde bleibt. Ueberall: der Stil haengt an der Anwendung (AppTheme.h) und an den Seiten, die ihn selbst setzen; die Stellen, die nur Breite/Hoehe des Indikators setzen (SpotHub, RX-Applet, ClientChain, Overlay-Menue), erben ihn. AddCustomRadioDialog fuellt "an" mit kAccent und war schon sichtbar. Pruefstand tst_haekchen_sichtbar: misst die Helligkeit im Indikator aus/an fuer Haekchen und Rundknopf (>= 25 bzw. 20 Stufen Unterschied). Gegenprobe mit der alten Fassung: beide Faelle rot. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Erster CI-Lauf mit Submodul (41836921911), Build (Windows x64), Configure: "Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR)" aus third_party/contestprogramm/CMakeLists.txt:83 -- das Contestprogramm braucht zlib fuer die gzip-Kacheln des SRTM-Gelaendes. Linux und macOS haben es im Werkzeugkasten, der Windows-Laeufer nicht. Derselbe Weg wie in der eigenen CI des Contestprogramms: vcpkg install zlib:x64-windows-static-md (statisch, dynamische CRT wie MSVCs /MD), dann -DZLIB_ROOT auf den vcpkg-Ordner. Nur ZLIB_ROOT, nicht die vcpkg-Toolchain: die wuerde jedes andere find_package in Longpath mit umlenken. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Zweiter Lauf (41838372903): "Could NOT find ZLIB (missing: ZLIB_LIBRARY) (found version 1.3.2)" -- die Kopfdatei aus vcpkg war da, die Bibliothek nicht. ci.yml baut Longpath mit MinGW (Qt win64_mingw, tools_mingw1310), und das vcpkg-Archiv ist ein MSVC-zlib.lib. Jetzt holt der CI-Lauf zlib 1.3.1 aus der Quelle (madler/zlib v1.3.1), baut es mit demselben MinGW und bindet es statisch ein (ZLIB_USE_STATIC_LIBS=ON: libzlibstatic.a, kein zlib1.dll beizulegen). release.yml bleibt bei vcpkg: der Release-Lauf baut mit MSVC. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Panels nach aussen, rahmenlos und eckig, Rotorzeile, Ablesekaestchen in Stufen, Kartenrotoren mittig -- jetzt als Squash-Commit auf main, nicht mehr der Zweig (der ist geloescht). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Zwei Wünsche des Betreibers vom 2026-11-04, beide an derselben Stelle: Longpaths schwebende Fenster sind
Qt::Tool-Kinder des Hauptfensters (macOS: NSPanels auf der schwebenden Ebene).1. „wenn ich contestprogramm öffne, soll das nach anklicken im vordergrund bleiben!"
Das Contest-Logbuch (#381) war ein gewöhnliches, elternloses Fenster — und ein gewöhnliches Fenster liegt auf macOS IMMER unter einem NSPanel derselben Anwendung, egal wer zuletzt geklickt wurde. Der Betreiber sah Bandwidth Filter, Panadapter, S-Meter … über dem Log; ein Klick brachte es nur unter den normalen Fenstern nach vorn.
ContestFenster::oeffne(grund, elternFenster): mit Longpaths Hauptfenster als Eltern wird das Logbuch einQt::Tool— DIE Ebene der Panels, dort gilt die Klickreihenfolge. DazuWA_MacAlwaysShowToolWindow, damit es stehen bleibt, wenn Longpath nicht vorn ist. Rahmenknöpfe bleiben. Ohne Eltern (Prüfstand) wie bisher.legeSchwebendeFensterInsDock()nimmt das Logbuch beim Minimieren mit — bewusst NICHT überversteckeSchwebendeFenster(): hinter die Connect-Maske soll es nicht (Funkgerätewechsel mitten im Contest).tst_contestfenster::mitElternfensterLiegtEsAufDerEbeneDerPanels(4/4 grün).2. „sobald ich das _ oder das + usw. links oben verwende, muss sich das ganze Fenster bewegen! auch die freischwebenden im verhältnis!"
„_" ist seit #379 erledigt. „+" (Zoom), Vollbild und ein Zug am Titelbalken änderten den Rahmen des Hauptfensters, die schwebenden blieben stehen.
MainWindow::schwebendeMitziehen(): jedes schwebende Fenster (Aufzählung wie beim Schutzrahmen) wird von seiner Lage IM VERHÄLTNIS zum alten Rahmen auf den neuen abgebildet — ein Zug wird zum gleichen Versatz, eine Größenänderung hält das Verhältnis. Größe bleibt dem Betreiber (move()). Schirmrand wird gehalten. Läuft im 250-ms-Nachlauf des Schutzrahmens, VOR dem Herausholen aus den Sperrstreifen.showMaximized, Raster) ziehen nicht:eigeneBewegungLebt()neu in WindowPlacement. Falle dabei gefunden: das Raster rückt das Hauptfenster nach einer FREMDEN Bewegung um wenige Pixel nach, als eigene Bewegung — das ist der Nachhall, nicht eine eigene (gemessen: Größenzug +480 px → 3 px Raster → nichts gezogen). Erkannt an „Nachlauf läuft noch und Sprung < Rasterweite".tst_schwebende_folgen_dem_hauptfenster: Zug → gleicher Versatz; Wachsen → Verhältnis gehalten, Größe gleich; eigene Bewegung → nichts. Gegenprobe (Mitziehen stillgelegt): Fälle 1 und 2 rot, Fall 3 grün. Dafür bekommt dieser Prüfstand einen 1920×1200-Schirm (offscreen:configfile=tests/offscreen-grosser-schirm.json): das offscreen-Plugin hat von sich aus 800×800, das Hauptfenster braucht 800×600, da stieß alles an den Rand und an die Bedienleisten.Blatt:
docs/architecture/2026-11-04-schwebende-fenster-folgen-dem-hauptfenster.md.Nachtrag: am Gerät gefunden, erster Start (85190d2)
Gerätelog 12:09:43: „Hauptfenster QRect(0,48 1470x863) → QRect(0,33 1470x863): 5 schwebende Fenster mitgezogen" — Betreiber: „wieder irgendeine zusammensetzung der panels". Das Raster hatte das frisch maximierte Hauptfenster um 15 px nachgerückt; der Sprung war klein und der Nachlauf lief, also galt er als Nachhall einer fremden Bewegung, die es nie gab. Jetzt merkt sich der Nachlauf, ob eine FREMDE Bewegung ihn angestoßen hat (
m_fremdeBewegungAnhaengig); nur dann wird gezogen. Prüffall 3 fährt den Versatz jetzt neben dem Raster (−93,−41), damit das Raster nachrückt. Wiegt doppelt, weil das Beenden die Anordnung ins Profil schreibt: ein Versatz je Start wanderte so ins Profil.3. „jedes panel vom contestprogramm sollte in longpath eigens hinzuzufügen sein" (Folge-Commit)
Betreiber, mit dem Tools-Menü auf dem Bild: „am besten wäre, wenn hier alle auch vom logprogramm contestprogramm stehen" — und: „wir haben dann auf der einen seite das eigene contest programm, wenn es probleme gibt und wenn ich will, kann ich dies eigens mit longpath nutzen." Beobachtet am Gerät: ist das Logbuch das aktive Fenster, zeigt die Menüleiste nur „Apple" und „Longpath", also weder Longpaths Menüs noch das Fenster-Menü des Contestprogramms.
ContestFenster::lade()baut Controller, Datenbank und Fenster verborgen; das Panel ist ein Qt::Tool-Kind des verborgenen Logbuchs, das am Hauptfenster hängt, und wird neben das Hauptfenster gestellt (gestaffelt). ✕ am Panel dockt es zurück (wie im Contestprogramm).panelEintraege,setzePanelSchwebend, …); Submodul hier darauf gepinnt.schwebtUnter): auch Fenster, die über das Logbuch am Hauptfenster hängen.tst_contestfenster::einPanelOhneLogbuchFenster(Tool-Fenster mit Größe neben dem Elternfenster, zweites gestaffelt, Logbuch bleibt zu, zurück, Logbuch zeigen = dasselbe Fenster).tst_oberflaeche_englischgrün (die Panel-Titel kommen zur Laufzeit aus dem Contestprogramm und bleiben deutsch — es IST das Contestprogramm).4. „alle panels haben hier noch runde kanten, dies bitte auf eckig umstellen" — und die Rotoren klein
Die Panels kamen mit dem Systemrahmen (Titelleiste, Ampelknöpfe, runde Ecken); Longpaths eigene Fenster sind
Qt::Tool | FramelessWindowHintmit eigener Kopfzeile.ContestFenster::lade()setztPanelContainerWidget::setzeRahmenlosSchwebend(true)(oe5sos/Contestprogramm#72, f432e0a): schwebende Panels rahmenlos, eckig, Rückweg ↙ in der Kopfzeile, Zug und Anfasser wie in der Fläche. Eigenständig bleibt der Systemrahmen. Dazu die Rotorzeile (RotorRowWidget: Mindestbreite ein Rotor, sonst untereinander) und Gradzahlen bis r = 54 eine Stufe kleiner statt weg — „das fenster rotoren muss sehr groß gezogen werden, um grad eigens zu sehen". Prüfstände auf der Contestprogramm-Seite; hiertst_contestfensterweiter grün. Nicht live gesehen.5. Die Fassung 0.9.0 hatte das alles nicht — CI und Release holen jetzt die Submodule
Gefunden am Gerät, 13:57: der Updater holte 0.9.0 (von main), und dort fehlte Tools › Contest Logbook — „hier ist nun nichts mehr zu finden". Release- und CI-Läufe checkten ohne Submodule aus,
LONGPATH_CONTESTPROGRAMMstand damit auf AUS, und das seit #381 gemergte Fenster kam in keine Fassung. Jederactions/checkoutinci.ymlundrelease.ymlhat jetztsubmodules: recursive: CI und Release bauen das Contestprogramm mit,tst_contestfensterläuft in der CI. Damit baut die CI dieses PRs erstmals das Contestprogramm auf Linux, macOS und Windows — der Windows-Bau des Contestprogramms in Longpaths CI ist unbewiesen.6. „man sieht nicht, ob das Häkchen an ist oder nicht. das sollte überall kontrolliert werden"
Style::kCheckBoxStylezeichnete „an" als etwas helleren Rand auf fast demselben schwarzen Grund (gemessen im Indikator: Helligkeit 17 aus, 26 an);kRadioButtonStylegenauso. Jetzt trägt „an" ein Häkchen (check.svg, Textfarbe) und der Rundknopf einen Punkt (radio-dot.svg), abgeschaltet gedämpft. Überall: der Stil hängt an der Anwendung (AppTheme.h) und an den Seiten, die ihn selbst setzen; Stellen, die nur Breite/Höhe des Indikators setzen, erben ihn;AddCustomRadioDialogfüllt „an" mit kAccent und war schon sichtbar. Prüfstandtst_haekchen_sichtbar(Helligkeit im Indikator aus/an); Gegenprobe mit dem alten Stil: beide Fälle rot (17/26 und 34/40).Belege
tst_contestfenster,tst_schwebende_folgen_dem_hauptfenster,tst_dock_ablage_nimmt_fenster_mitgrün; Gegenprobe wie oben.open ~/Longpath/worktrees/contest-im-fenster/build/Longpath.app, Tools › Contest Logbook, dann Panels anklicken / Logbuch anklicken / „+" drücken.🤖 Generated with Claude Code