2010-01-18 5 views
7

Mogę użyć funkcji "przydziału" GTK, ale to daje tylko pozycję względem rodzica. Jak znaleźć bezwzględną pozycję widżetu GTK w oknie?Jak znaleźć absolutną pozycję widżetu GTK w oknie?

Np. Jeśli widget pojawia się w 500 pikselach, a 300 pikseli w dół, ale jest zagnieżdżony w różnych hboxach i tabelach, to w jaki sposób dowiadujemy się, że znajduje się on w pozycji 500x300 pikseli?

Potrzebuję zrobić okno pojawiać się w dokładnym miejscu pod innym widgetem.

dzięki

Odpowiedz

12

Użyj funkcji gtk_widget_translate_coordinates() do map z współrzędnych widżetu dziecko do współrzędnych Toplevel zawierającego widget. To może wyglądać

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

pamiętać, że w wielu przypadkach zmusza pozycję w nowym oknie jest misfeature chyba że zachowuje się jak menu kontekstowego.

+0

Dziękuję za bardzo szybką odpowiedź. To działa!! :) – user129975

4

Innym podejściem:

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

To jest absolutnie na ekranie i nie odnosi się do okna GTK! – schlamar

Powiązane problemy