2010-01-18 15 views
7

Puedo usar la función de "asignación" GTK, pero eso solo da la posición relativa a su padre. ¿Cómo se puede encontrar la posición absoluta de un widget GTK dentro de una ventana?¿Cómo se encuentra la posición absoluta de un widget GTK en una ventana?

Es decir, si el widget aparece 500 píxeles en, y 300 píxeles hacia abajo, pero está anidado dentro de varias hboxes y tablas, ¿cómo descubrimos que está en una posición de 500x300 píxeles?

Necesito hacer que una ventana aparezca en un lugar exacto debajo de otro widget.

gracias

Respuesta

12

Utilice la función gtk_widget_translate_coordinates() al mapa de las coordenadas de su control hijo a las coordenadas del nivel superior que contiene el widget. Podría ser algo como

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

Tenga en cuenta que en muchos casos obligan a la posición de una nueva ventana es una misfeature a menos que esté actuando como un menú emergente.

+0

Gracias por la respuesta muy rápida. ¡¡Funciona!! :) – user129975

4

Otro enfoque:

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

¡Esto es absoluto para la pantalla y no relativo a la ventana de GTK! – schlamar

Cuestiones relacionadas