[erl.] gtkmm2 - widget selber zeichnen und set_border_width

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
GeoW
Beiträge: 49
Registriert: 23.03.2007 16:10:10

[erl.] gtkmm2 - widget selber zeichnen und set_border_width

Beitrag von GeoW » 29.08.2012 19:58:35

Ich habe ein Fenster mit mehrere Container (VBox, HBox, ...). Einige Container zeichne ich selber, was erstmal gut funktioniert. In diese Containers packe ich Labels und Buttons. Nun sollen gerade die Labels nicht direkt am Rand kleben, also setze ich mit set_border_width die Rahmenbreite. Jetzt treten die Probleme auf. Wenn ich die Fenstergröße ändere, erfolgt das Zeichnen der Container nicht mehr korrekt. Ohne Rahmen gibt es die Probleme nicht. Ich denke mal, es liegt daran, dass der Bereich des Rahmen nicht aktualisiert bzw. neu gezeichnet wird. Auch wenn ich einen weiteren Container in den selbst gezeichneten packe und bei dem die Rahmenbreite einstelle, bringt das kein anderes Ergebnis.
Die Container werden durch abfangen des on_expose_event Signal bzw. in selbiger Funktion mit Cairomm gezeichnet.

Weiß jemand wie man es hin bekommt oder hat eine Lösung, wie auch bei Einsatz eines Rahmen der Container korrekt gezeichnet wird?
Zuletzt geändert von GeoW am 29.08.2012 22:29:50, insgesamt 1-mal geändert.

brummer
Beiträge: 181
Registriert: 19.02.2007 19:21:23

Re: gtkmm2 - widget selber zeichnen und set_border_width

Beitrag von brummer » 29.08.2012 21:14:54

Hallo GeoW

Hast du
set_app_paintable (true);
oder auch
set_redraw_on_allocate(true);
für dein Container widget gesetzt?
http://developer.gnome.org/gtkmm/stable ... ee67c7761f

GeoW
Beiträge: 49
Registriert: 23.03.2007 16:10:10

Re: gtkmm2 - widget selber zeichnen und set_border_width

Beitrag von GeoW » 29.08.2012 22:28:34

Hallo brummer,
und wieder mal mein Dank an dich.

Ich hatte es auch schon mit verschiedene Funktionen/Einstellungen versucht aber die richtige war bisher nicht dabei. Mit set_redraw_on_allocate(true) funktioniert es. Ich bin eigentlich die Liste von deinem Link durchgegangen. Könnte mich ja ärgern, das ich die Funktion irgendwie ignoriert habe.

Aber schön zu wissen, dass, wenn man schon fast am verzweifeln ist, hier Hilfe bekommt. Zumindest in meinen Fällen. Und so komme ich wieder ein Stück weiter.
Also noch mal Danke.

Antworten