2017-02-27 2 views
0

Ich verwende eine Gtk EventBox, die ein Bild enthält, um Mausklick-Ereignisse auf dem Bild zu erhalten. Sobald auf das Bild geklickt wird, wird die EventBox unempfindlich gesetzt. Da dies jedoch dazu führt, dass die EventBox ausgegraut ist, werden die Farben meines Bildes ebenfalls blass. Ich mag das wirklich nicht. Gibt es eine Möglichkeit, dieses Verhalten von Gtk-Widgets zu deaktivieren?Wie verhindert man, dass ein Gtk-Widget "ausgegraut" wird, wenn es nicht gesetzt ist?

Code-Beispiel:

var ebox = new EventBox(); 
var img = new Image(); 
img.set_from_file ("my_image.png"); 
img.show(); 
ebox.add (img); 

ebox.button_press_event.connect (() => { ebox.set_sensitive (false); return true; }); 
+2

Warum nicht den Ereignishandler blockieren oder trennen, anstatt das Widget unempfindlich zu machen? –

+0

@Rawing Es würde es komplizierter machen und da die Methode existiert, dachte ich, dass das der Weg war, es zu tun. – Heiko

+0

Ok, also habe ich beschlossen, den Signalhandler zu blockieren und zu entsperren. Da Vala-Gtk-Codebeispiele so schwer zu finden sind, habe ich grob gesagt folgendes verwendet: 'handler_id = ebox.button_press_event.connect (() => {callback_function(); return true;}); GLib.SignalHandler.block (ebox, handler_id); GLib.SignalHandler.unblock (ebox, handler_id); ' – Heiko

Antwort

0

könnten Sie das Widget Unterklasse, eine virtuelle Methode do_draw() hinzufügen, und Ihr Bild zeichnen dort.

Verwandte Themen