Example #1
0
static void
gdl_dock_object_update_parent_visibility (GdlDockObject *object)
{
    GdlDockObject *parent;

    g_return_if_fail (object != NULL);

    parent = gdl_dock_object_get_parent_object (object);
    if (parent && gdl_dock_object_is_automatic (parent))
    {
        gboolean visible = FALSE;

        gtk_container_foreach (GTK_CONTAINER (parent),
                               (GtkCallback) gdl_dock_object_foreach_is_visible,
                               &visible);
        parent->priv->attached = visible;
#ifndef GDL_DISABLE_DEPRECATED
        if (visible)
            parent->deprecated_flags |= GDL_DOCK_ATTACHED;
        else
            parent->deprecated_flags &= ~GDL_DOCK_ATTACHED;
#endif
        gtk_widget_set_visible (GTK_WIDGET (parent), visible);
    }
    gdl_dock_object_layout_changed_notify (object);
}
Example #2
0
static void
gdl_dock_object_foreach_automatic (GdlDockObject *object,
                                   gpointer       user_data)
{
    void (* function) (GtkWidget *) = user_data;

    if (gdl_dock_object_is_automatic (object))
        (* function) (GTK_WIDGET (object));
}
Example #3
0
File: gdl-dock.c Project: vldm/gdl
static void
gdl_dock_reduce (GdlDockObject *object)
{
    GdlDock *dock = GDL_DOCK (object);
    GtkWidget *parent;

    if (dock->priv->root)
        return;

    if (gdl_dock_object_is_automatic (GDL_DOCK_OBJECT (dock))) {
        gtk_widget_destroy (GTK_WIDGET (dock));

    } else if (gdl_dock_object_is_closed (GDL_DOCK_OBJECT (dock))) {
        /* if the user explicitly detached the object */
        if (dock->priv->floating)
            gtk_widget_hide (GTK_WIDGET (dock));
        else {
            GtkWidget *widget = GTK_WIDGET (object);
            parent = gtk_widget_get_parent (widget);
            if (parent)
                gtk_container_remove (GTK_CONTAINER (parent), widget);
        }
    }
}