当窗口不可见时计算GtkFrame的边框大小

时间:2016-03-20 15:32:50

标签: linux gtk gtk2

我想计算GtkFrame的左边框和上边框大小。我使用以下代码:

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);
}

如果已经显示托管GtkFrame的顶级窗口,则此功能正常但。但是,我需要在之前找到包含我的GtkFrame小部件的顶级窗口的边框大小

如果尚未打开包含我的GtkFrame的顶级窗口,则会在(-1,-1)中返回alloc,并在(1,1)中返回child_alloc }。如果顶级窗口已经打开,则返回正确的尺寸,我可以计算边框尺寸。

但是,我需要在隐藏顶级窗口时计算边框大小。那么在这种情况下如何计算GtkFrame的边框大小?

我正在使用GTK 2.

1 个答案:

答案 0 :(得分:0)

这些值取决于实现,因为它们需要有关目标显示器等的信息。理论上,不同的显示器可以有不同的设置,这些设置会使尺寸发生变化。

您可以在请求尺寸之前在顶层窗口上尝试gtk_widget_realize()gtk_widget_map()或两者