Ich möchte die linken und oberen Randgrößen eines GtkFrame
berechnen. Ich verwende den folgenden Code ein:Computing Rahmengröße von GtkFrame, wenn Fenster nicht sichtbar ist
static void computeborder(GtkWidget *frame)
{
GtkAllocation alloc, child_alloc;
int borderTop, borderLeft;
gtk_widget_get_allocation(frame, &alloc);
GTK_FRAME_GET_CLASS(frame)->compute_child_allocation(GTK_FRAME(frame), &child_alloc);
borderTop = child_alloc.y - alloc.y;
borderLeft = child_alloc.x - alloc.x;
printf("BORDER TOP: %d BORDER LEFT %d\n", borderTop, borderLeft);
}
Dies funktioniert gut, aber nur, wenn das Fenster der obersten Ebene des GtkFrame
Hosting ist bereits gezeigt. Allerdings muss ich herausfinden, über Randgrößen vor das oberste Fenster, das mein GtkFrame
Widget enthält, wird angezeigt.
Wenn das Fenster der obersten Ebene, die enthält meine GtkFrame
wurde noch nicht geöffnet, (-1,-1)
in alloc
zurückgegeben und (1,1)
wird in child_alloc
zurückgegeben. Wenn das Fenster der obersten Ebene bereits geöffnet wurde, werden die richtigen Größen zurückgegeben und ich kann die Rahmengrößen berechnen.
Allerdings muss ich die Rahmengrößen berechnen, wenn das Top-Level-Fenster ausgeblendet ist. Also wie kann ich in diesem Fall die Randgrößen meiner GtkFrame
berechnen?
ich GTK 2.
Sie anfordernden Sie sofort die Größen benötigen? Wenn Sie die Berechnung verschieben können, bis das Fenster [realisiert, zugeordnet oder angezeigt] wurde (https://blogs.gnome.org/jnelson/2010/10/13/those-realize-map-widget-signals/), Sie erhalten wahrscheinlich die richtigen Zuordnungsdaten. – user4815162342
Leider kann ich die Berechnung nicht verschieben, bis das Fenster realisiert wurde. Gibt es eine Möglichkeit, die Größen vor der Realisierung zu bekommen? – Andreas