Jump to content

DVBViewer schaltet die Option des rahmenlosen Modus selbsttätig aus.


amigace

Recommended Posts

Hallo zusammen!

 

Ich habe ein Problem mit dem DVBViewer das mich schon länger beschäftigt. Es lässt sich leider nur schwer nachvollziehen bzw. erklären, ich versuche es trotzdem einmal:

 

Ich benutze den DVBViewer seit ca. 2002. Vor einigen Jahren wurde eine Funktion eingeführt, dass das Videofenster am Bildschrimrand einrasten kann (ich hatte zuvor fast ein Jahrzehnt auf diese Funktion gewartet, wenn ich mich richtig erinnere. ?)

 

Bei mir läuft der DVBViewer zu 98% in einem kleinen randlosen "Videofenster 1" am rechten Bildschirmrand, etwa 4cm vom oberen Bildschirmrand entfernt, und zwar always on top. Das Videofenster ist dabei am rechten Bildschrimrand eingerastet. Bei Bedarf schalte ich per Doppelklick ins Videofenster - oder mit der Taste F - in den Vollbildmodus und wieder zurück.

 

Nach dem Verlassen des Vollbildmodus passiert es sehr häufig - aber nicht jedesmal - dass danach das kleine Videofenster 1 nicht mehr am rechten Bildschirmrand klebt/eingerastet ist, sondern es einen mehrere Pixel breiten Abstand nach links eingenommen hat, sodass ich es wieder per Hand am rechten Rand einrasten muss.

 

Das nervt natürlich auf Dauer, vor allem wenn man es täglich mehrere dutzend male machen muss.

 

Ich habe nach langer Zeit nun endlich herausbekommen wie man das Problem nachvollziehen kann:

 

Man schaltet den DVBViewer in den rahmenlosen! Modus (rechtsklick, "Ansicht/Rahmen anzeigen" den Haken entfernen)  und verankert das kleine Videofenster rechts am Bildschirmrand (snap/einrasten). Jedoch lässt man nach oben hin etwas Platz, etwa 4cm. Dann bewegt man die Maus an die oberste Kante des rahmenlosen Videofensters. Nun erscheint der Mauszeiger als Doppelpfeil (oben/unten) und zusätzlich eine kleine Blaue Linie am oberen Rand (Windows 10), dort lässt man die Maus verharren, und drückt die Taste F für Vollbild, und nochmals F um wieder den Vollbildmodus zu verlassen. Danach ist die Option "Ansicht/Rahmen zeigen" wieder automatisch aktiviert worden!

 

Dieses Verhalten ist unerwünscht, denn wenn ich mit nun automatisch aktivierter Option "Rahmen zeigen" den DVBViewer beende und wieder neustarte, ist er (zumindest bei mir) um mehrere Pixel nach links verschoben (um die unsichtbare Rahmenbreite?), und nicht mehr am rechten Rand eingerastet. Weiterhin muss ich die Option "Ansicht/Rahmen zeigen" jedesmal wieder deaktivieren, da ich ein rahmenloses Fenster benötige.

 

Ich würde mir wünschen, dass DVBViewer im rahmenlosen Modus verbleibt und die Option sich nicht eigenmächtig immer wieder einschaltet wenn man den Vollbildmodus umschaltet. Dann wäre auch mein Problem behoben, dass sich der DVBViewer jedesmal beim Programmstart nach links verschiebt und nicht mehr am rechten Bildschirmrand eingerastet ist. Im rahmenlosen Modus tritt dieses Problem nämlich überhaupt nicht auf.

 

Ich hoffe ich konnte das Problem einigermassen verständlich beschreiben. Ich schlage mich damit schon seit mehr als 1 Jahr herum, weil ich den Fehler bislang nicht richtig nachvollziehen konnte. Der Fehler tritt auch auf, wenn man häufiger zwischen Vollbild und kleinem Videofenster 1 wechselt (per Doppelklick) und der Mauszeiger sich beim doppelklick irgendwo in der Mitte des Videofensters befindet. Am besten kann man es aber nachvollziehen anhand der Prozedur wie oben beschrieben.

 

Das Problem besteht seit mehreren Version des DVBviewers seit mindestens 1 Jahr, eine komplette Neuinstallation von Windows 10 und somit auch des DVBViewer wurde schon einmal durchgeführt vor ca. 1 Monat.

 

Danke für eure Hilfe!

support.zip

Link to comment
8 hours ago, amigace said:

Man schaltet den DVBViewer in den rahmenlosen! Modus (rechtsklick, "Ansicht/Rahmen anzeigen" den Haken entfernen)  und verankert das kleine Videofenster rechts am Bildschirmrand (snap/einrasten). Jedoch lässt man nach oben hin etwas Platz, etwa 4cm. Dann bewegt man die Maus an die oberste Kante des rahmenlosen Videofensters. Nun erscheint der Mauszeiger als Doppelpfeil (oben/unten) und zusätzlich eine kleine Blaue Linie am oberen Rand (Windows 10), dort lässt man die Maus verharren, und drückt die Taste F für Vollbild, und nochmals F um wieder den Vollbildmodus zu verlassen. Danach ist die Option "Ansicht/Rahmen zeigen" wieder automatisch aktiviert worden!

 

Bestätigt. Das ist ein Bug und lässt sich beheben. Der DVBViewer merkt sich beim Umschalten ins Vollbild den Zustand des Fensters mitsamt dem temporären Rahmen. Dieser muss eingeblendet werden, wenn der Mauszeiger in die Nähe des Fensterrandes kommt, weil sich sonst die Größe des Fensters nicht ändern lässt. Das erlaubt Windows nur bei Fenstern mit Rahmen.

 

Allerdings kann ich das bei sonstigen Umschaltungen ins Vollbild und zurück (also ohne den temporären Rahmen) unter Windows 7 nicht reproduzieren. Windows 10 ist jedoch in der Hinsicht ohnehin ziemlich speziell:

 

8 hours ago, amigace said:

Dieses Verhalten ist unerwünscht, denn wenn ich mit nun automatisch aktivierter Option "Rahmen zeigen" den DVBViewer beende und wieder neustarte, ist er (zumindest bei mir) um mehrere Pixel nach links verschoben (um die unsichtbare Rahmenbreite?), und nicht mehr am rechten Rand eingerastet.

 

Das liegt bei Fenstern mit Rahmen an etwas anderem. Das Windows 10 API liefert für die Fensterausmaße (in Pixel) Werte, die größer sind als der sichtbare Fensterbereich (d.h. der Rahmen hat einen unsichtbaren Anteil). Was Microsoft sich dabei gedacht hat? Einer der Gründe, warum ich Windows 10 nicht mag und höchstens für Testzwecke verwende...

 

Damit ist sehr schwer umzugehen, wenn man Funktionen wie das Einrasten am Rand realisieren will. Nach dem DVBViewer-Neustart kommt dieser unsichtbare Rahmenanteil bei der Positionierung des Fensters ins Spiel. Ich muss mal schauen, ob sich das irgendwie vermeiden lässt.

 

Wenn ich damit durch bin, kannst du mal eine Testversion probieren. Ich melde mich dann hier und per PM.

 

Link to comment
1 hour ago, Griga said:

Allerdings kann ich das bei sonstigen Umschaltungen ins Vollbild und zurück (also ohne den temporären Rahmen) unter Windows 7 nicht reproduzieren. Windows 10 ist jedoch in der Hinsicht ohnehin ziemlich speziell:

 

Du hast Recht, es ist wohl so, dass beim wechsel ins Vollbild (per doppelklick oder mit der Taste F) sich die Maus zu dicht am Rand befand, sodass der temporäre Rand eingeblendet wurde. Beim zurückwechseln aus dem Vollbild ist dann die Option Rahmen anzeigen wieder gesetzt. Wenn man dies verhindern kann dass sich die Option selbsttätig aktiviert, dann wäre das Problem vermutlich beseitigt.

 

Noch ein Hinweis, wenn sich DVBViewer im rahmenlose Modus befindet und ich den DVBViewer beende und dann wieder starte, dann klebt das kleine Videofenster immer zuverlässig am rechten Bildschirmrand, so wie ich es verlassen habe. War jedoch die Option "Rahmen anzeigen" vor beenden des DVBViewer gesetzt, so ist beim Neustart das Fenster immer um mehrere Pixel nach links verschoben, unabhängig davon ob es beim beenden zuvor am rechten Rand geklebt hatte.

 

Vielen Dank für deine Hilfe, auch bezüglich der Testversion!

Link to comment
10 minutes ago, amigace said:

Noch ein Hinweis, wenn sich DVBViewer im rahmenlose Modus befindet und ich den DVBViewer beende und dann wieder starte, dann klebt das kleine Videofenster immer zuverlässig am rechten Bildschirmrand, so wie ich es verlassen habe. War jedoch die Option "Rahmen anzeigen" vor beenden des DVBViewer gesetzt, so ist beim Neustart das Fenster immer um mehrere Pixel nach links verschoben, unabhängig davon ob es beim beenden zuvor am rechten Rand geklebt hatte.

 

Aber nur unter Windows 10. Dazu habe ich mich bereits geäußert. Bitte meinen vorherigen Post vollständig lesen. Oder auch hier:

 

https://stackoverflow.com/questions/34139450/getwindowrect-returns-a-size-including-invisible-borders

 

Auf deutsch: Wenn eine Anwendung bei Windows 10 die Größe eines Fensters abfragt, erhält es die Werte inklusive eines unsichtbaren Rahmens. Dadurch entstehen beim Andocken Lücken. Windows 10 liefert mit einem anderen Aufruf auch die sichtbare Größe des Fensters. Durch Vergleich der beiden Angaben kann eine Anwendung die Breite des unsichtbaren Rahmens ermitteln und beim Andocken so berücksichtigen, dass es keine Lücke gibt. Etwas umständlich, aber machbar. Das führt der DVBViewer auch durch, sonst wäre ein Einrasten von Fenstern mit Rahmen bündig mit dem Monitorrand unter Windows 10 nicht möglich. Aus Sicht von Windows ragt das Fenster dann jedoch bereits über den Monitorrand hinaus.

 

Beim DVBViewer-Start funktioniert der Mechanismus jedoch nicht, weil der Windows-Aufruf für die sichtbare Größe die gleichen Werte wie der Aufruf für die Größe mitsamt unsichtbarem Rand liefert, solange das Fenster noch nicht auf dem Bildschirm erschienen ist. Kurz gesagt muss man das Fenster erst erscheinen lassen, um feststellen zu können, wo es hin muss. Vor dem Paradoxon steht man immer, wenn ein Fenster pixelgenau platziert werden soll.

 

Was Microsoft in der Hinsicht bei Windows 10 veranstaltet hat, ist sowas von bekloppt und idiotisch...

 

Link to comment

Ich bitte um Verzeihung! Ich hatte deinen Post vollständig gelesen, wollte jedoch nur noch einmal darauf hinweisen, dass beim rahmenlosen Modus alles wie gewünscht funktioniert (sofern er aktiviert bleibt).

 

Offtopic: Ich benutze Windows 10 hauptsächlich wegen dem DVBViewer. Ich war zuvor für etwa 1 Jahr zu Linux Mint gewechselt, aber dort gibt es leider keine vernünftige TV-Software. Ich hatte über mehrere Monate regen e-mail Kontakt zu einem der Kernel Entwickler und - Maintainer der TV Software Kaffeine -  Mauro Carvalho Chehab, und habe mit meinen Anregungen an Ihn massgeblich zu einigen wichtigen Änderungen in der Version Kaffeine 2.0.15 beigetragen. Leider ist Kaffeine noch sehr weit entfernt vom Funktionsumfang eines DVBViewer und der Entwickler hat mir irgendwann mitgeteilt, dass er hauptsächlich Bugs beheben, aber keine Zeit hat weitere neue Funktionen zu implementieren, da er mit dem Media Subsystem des Linux Kernels genug zu tun hat. Bitte entschuldige daher meine etwas reumütige Rückkehr zum DVBViewer, den es leider nicht für Linux gibt ?

 

 

 

 

 

Link to comment

Es hat etwas gedauert, für das in meinem letzten Post erläuterte Problem eine Lösung zu finden... ;)

 

Da es beim DVBViewer-Start mangels sichtbarem Fenster keinen Weg gibt, die Breite des unsichtbaren Fensterrandes unter Windows 10 festzustellen, bleibt praktisch nur, die Werte in der setup.xml abzuspeichern, sobald ein Fenster sichtbar wird, so dass sie bei nachfolgenden Starts sofort verfügbar sind.

 

Bei der Gelegenheit habe ich dafür gesorgt, dass weitere DVBViewer-Fenster am Bildschirmrand einrasten (EPG, Teletext, Senderliste usw.) und ein Problem bei der Größenänderung eines dort eingerasteten randlosen Fensters behoben. Jetzt braucht es einen mit der Problematik vertrauten Tester....  @amigace: Du hast eine PM.

 

Link to comment

Das Problem, das sich der Rahmen immer mal wieder selbständig aktiviert hat wenn man zu nah am Rand des DVBviewers doppelklickt, wurde erfolgreich behoben!

 

Aus meiner Sicht funktioniert es jetzt alles perfekt. Das Fenster bleibt rahmenlos und es klebt zuverlässig pixelgenau am Bildschirmrand, auch nach einem Neustart des Programms.

 

Vielen Dank für die Behebung dieses (für mich persönlich sehr nervigen? ) Fehlers!

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...