query-tooltip event identisch mit motion-notify?

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
Barabbas
User
Beiträge: 349
Registriert: Dienstag 4. März 2008, 14:47

Samstag 7. März 2009, 14:51

Hallo zusammen,

in meinem Programm fange ich das query-tooltip event ab, um den Tooltip dynamisch mit Informationen zu befüllen. Zu dieser Variante gibt es leider keine Alternative (set_tooltip_text / -markup ist für meinen Fall also nicht passend).

Wie auch immer: Ich stelle nun fest, dass das query-tooltip event entgegen meiner Intuition nicht ausgelöst wird, bevor ein Tooltip angezeigt wird, sondern eigentlich bei jeder Mausbewegung. In 99% der query-tooltip-Fälle wird also anschließend gar kein Tooltip erzeugt, da der Benutzer nur mit der Maus über das Widget fährt und nicht lange genug auf einer Stelle verharrt, um den Toolltip anzuzeigen.

Das scheint mir etwas unerwünscht oder zumindest wenig hilfreich zu sein, da ich nun vor dem Problem stehe, andauernd irgendwelche Datenbankabfragen für den Tooltip zu machen, obwohl der meist gar nicht angezeigt wird.

Ich habe schon "von Hand" ein Delay eingebaut, um die Anzahl der DB-Queries zu verringern, das ist aber auch keine besonders gute Lösung.
Kennt ihr eine Möglichkeit, ein Tooltip genau vor seiner Erstellung abzufangen?

Schönen Dank schonmal,

Barabbas
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Mittwoch 11. März 2009, 12:31

Nicht nur nach deiner Intuition sondern auch nach der Beschreibung müsste das eigentlich das richtige Signal sein:
The "query-tooltip" signal is emitted when the GtkSettings:gtk-tooltip-timeout has expired with the cursor hovering "above" widget;
Was sagt denn:

Code: Alles auswählen

settings = gtk.settings_get_default()
print settings.props.gtk_tooltip_timeout
Barabbas
User
Beiträge: 349
Registriert: Dienstag 4. März 2008, 14:47

Mittwoch 11. März 2009, 14:52

Der von dir genannte Befehl gibt "500" zurück. Die tatsächliche Verzögerung liegt aber anscheinend bei 0.

Ich habe mal einen Bug dazu erstellt: http://bugzilla.gnome.org/show_bug.cgi?id=574941

Danke für deinen Hinweis auf die Settings.

Daniel
Antworten