2010-01-18 4 views
7

Ich kann GTK "Zuordnung" -Funktion verwenden, aber das gibt nur die Position relativ zu seinem Elternteil. Wie findet man die absolute Position eines GTK-Widgets in einem Fenster?Wie finden Sie die absolute Position eines GTK-Widget in einem Fenster?

Dh, wenn das Widget erscheint 500 Pixel in und 300 Pixel nach unten, aber ist verschachtelt in verschiedenen hboxes und Tabellen, wie finden wir heraus, es ist in einer Position 500x300 Pixel?

Ich muss ein Fenster an einer genauen Stelle unter einem anderen Widget erscheinen lassen.

dank

Antwort

12

Verwenden Sie die gtk_widget_translate_coordinates() Funktion von den Koordinaten Ihres Kindes Widget auf die Koordinaten des Toplevel das Widget enthält, zu kartieren. Es könnte so etwas wie

GtkWidget *somewidget; 
gint wx, wy; 
gtk_widget_translate_coordinates(somewidget, gtk_widget_get_toplevel(somewidget), 0, 0, &wx, &wy); 

Hinweis sehen, dass in vielen Fällen gezwungen, die Position eines neuen Fensters ein misfeature ist, es sei denn es wird als Popup-Menü fungiert.

+0

Vielen Dank für die sehr schnelle Antwort. Es klappt!! :) – user129975

4

Ein anderer Ansatz:

gint wx, wy; 
gdk_window_get_origin (gtk_widget_get_window (somewidget), &wx, &wy); 
+0

Dies ist absolut auf dem Bildschirm und keine relativ zum GTK-Fenster! – schlamar