mediathekview / MediathekView

Das Programm MediathekView durchsucht die Online-Mediatheken verschiedener Sender
https://mediathekview.de
GNU General Public License v3.0
855 stars 95 forks source link

Doppelter Fenster Fokus beim Start #608

Closed SebiderSushi closed 3 years ago

SebiderSushi commented 3 years ago

Derzeit öffnet MediathekView beim Start immer zuerst das Fenster mit dem Ladevorschritt und danach, wenn es soweit ist, das Hauptfenster. In diesen paar Sekunden möchte ich in der Regel auch noch andere Dinge am Rechner erledigen oder andere Programme starten und dann zu MediathekView zurückkehren wenn alles geladen ist.

Problem: Das Hauptfenster ergreift beim Öffnen erneut den Fokus und drängt sich damit in den Vordergrund. Das stört vor allem, wenn man gerade noch ein paar andere Programme öffnen möchte und ganz besonders, wenn man gerade dabei war Text einzugeben.

Frage: Ist es möglich, dass das Hauptfenster das existierende Fenster des Ladevorschritts übernimmt oder anders den Fokus vom Ladefenster übernehmen oder replizieren kann? Das würde dann so aussehen: Das Ladefenster ergreift wie gehabt beim Öffnen den Fokus und erscheint im Vordergrund. Behält es den Fokus bis zum Erscheinen des Hauptfensters, wird dieses auch im Vordergrund auftauchen. Sollte der Nutzer aber in der Zwischenzeit ein anderes Fenster in den Vodergrund nehmen, sollte also das Ladefenster den Fokus verlieren, so ercheint das hauptfenster auch im Hintergrund und ergreift nicht erneut den Fokus.

SebiderSushi commented 3 years ago

Zusätzlich ist es dadurch auch nicht möglich, MediathekView unter einer Desktopumgebung mit Workspaces auf dem gewünschten Workspace zu starten und diesen sofort zu verlassen, da das Hauptfenster immer auf dem aktiven Workspace erstellt wird.

Auch ein Minimieren des Ladefensters hat keine Auswirkungen auf das folgende Hauptfenster.

derreisende77 commented 3 years ago

Nutzt Du die nightly builds? Wenn ja könnte ich da etwas versuchen und Du müsstest das testen. Ich habe kein multi screen environment

derreisende77 commented 3 years ago

So, ich hab mir das ganze jetzt genauer angesehen und kann da leider nichts tun. Der Startbildschirm ist mit JavaFX programmiert und das Hauptfenster ist derzeit noch mit Swing UI umgesetzt. Beide API verwenden eigene Routinen um die Bildschirme zu ermitteln - natürlich nicht kompatibel untereinander. Theoretisch wäre es möglich, in dem jeweiligen API den Bildschirmindex zu raten in der Hoffnung das er bei beiden passt. Aber das ist ein echtes Lottospiel. Und es scheitert spätestens dann wenn der splashscreen in einer multi screen Umgebung mittig zwischen zwei Bildschirmen dargestellt wird. Von daher handel ich mir mit einem Lösungsversuch massig Ärger ein den ich auch nicht wirklich debuggen kann mangels Testumgebung.

SebiderSushi commented 3 years ago

Ich könnte nighties testen.

Gibt es trotz der Inkompatibilität nicht einmal die Möglichkeit, das UI des Hauptfensters im existierenden Fenster des Ladefensters zu initialisieren?

Falls auch das nicht geht kein Problem ist ja nur ein kleines Problemchen hier ;)

derreisende77 commented 3 years ago

Nein, der splash ist JavaFX, das Hauptfenster Swing. -> Zwei unterschiedliche Techniken die sich (fast überhaupt) nichts teilen :( Es wäre nett wenn Du den issue dann schließen könntest.

SebiderSushi commented 3 years ago

Ja der Gedanke war ob man grundlegend den Zugang zum Fenster, welches ja aus der Perspektive der Desktopumgebung noch existiert, vom JavaFX UI ans Swing UI übergeben kann. Aber klar, wenn die API das nicht her gibt geht's nicht.

Kann es dann immerhin sein, dass sich dieses Verhalten ändern wird, falls eines fernen Tages ganz MediathekView auf JavaJX aufbaut?

derreisende77 commented 3 years ago

Ja wenn das ganze umgebaut ist sollte es möglich sein den Desktop anzugeben. Ich habe es auf meine TODO Liste aufgenommen es zukünftig zu beachten