c - GtkRevealer glitcher tekstvisningsteksten

Indlæg af Hanne Mølgaard Plasc

Problem



Under udviklingen af ​​mit program kom jeg på tværs af en tegningsfejl, som jeg ikke kunne løse. Jeg bruger GtkRevealer til at vise og skjule en GtkInfoBar over en anden boks med et rullet vindue med en GtkTextView (faktisk GtkSourceView) meget ligesom det er i gedit.
Det hele er pakket i en GtkPaned.


Når jeg skjuler infobaren gennem åbenbareren, vises et sort område i tekstvisningen, og det forsvinder, når en genanvendelse af widgeten skal forekomme (for eksempel når jeg klikker på tekstvisningen for at placere markøren)
Desuden vises denne fejl ikke, hvis jeg forstørrer standardopløsningen i vinduet, som af kompatibilitetsgrunde er 640x480.
Jeg forstår at dette kan være svært at reproducere, men jeg er ikke klar over, hvem der stødte på det samme problem. Han kender måske en løsning på dette problem.
Også enhver ide er velkommen.
Jeg vil trække præcis, hvordan glitch ser ud på gedit (selv om det ikke sker i gedit eller det gør, men jeg kan ikke ramme den rigtige opløsning).
Indtast billedbeskrivelse her [4]


Jeg forsøgte at tvinge en omladning med gtk\_widget\_queue\_draw(), men der sker ikke noget, og det vandt, fordi det ikke har noget at redraw.
Jeg vil nu prøve at placere markøren automatisk. Det kan virke, men det er ikke funktionelt tilstrækkeligt.
EDIT:
Overraskende fungerede det ikke. Gribe fokus og placere markøren
havde ingen effekt på den glitched visuelle adfærd. Jeg måtte endda lave en ny linje
at ordne det denne gang.
Det faktum, at jeg skal ændre størrelsen på vinduet med en værdi mere end et bestemt punkt, kan betyde, at fejlen skyldes justeringer miskalkuleringer, men det forklarer ikke hvorfor, der tilføjes en ny linje eller et tekstmærke i randen, der farveiserer hele linjen fjerner også det sorte felt.

Bedste reference


I øjeblikket er denne fejl fundet i andre programmer med en tekstvisning, men det har ikke været rapporteret som en fejl endnu.
Måske har det noget at gøre med det faktum, at det er svært at reproducere.


Jeg fandt at gemme gtk-tekstvisningen med gtk\_widget\_hide() og derefter vise den med gtk\_widget\_show() værker. Flimmer af denne synsfejl er ikke mærkbar, måske fordi GTK + er eventbaseret og venter på, at funktionen vender tilbage til procesændringer.