/** * gdl_dock_object_bind: * @object: A #GdlDockObject * @master: A #GdlDockMaster * * Add a link between a #GdlDockObject and a master. It is normally not used * directly because it is automatically called when a new object is docked. */ void gdl_dock_object_bind (GdlDockObject *object, GObject *master) { g_return_if_fail (object != NULL && master != NULL); g_return_if_fail (GDL_IS_DOCK_MASTER (master)); if (object->priv->master == master) /* nothing to do here */ return; if (object->priv->master) { g_warning (_("Attempt to bind to %p an already bound dock object %p " "(current master: %p)"), master, object, object->priv->master); return; } gdl_dock_master_add (GDL_DOCK_MASTER (master), object); object->priv->master = master; #ifndef GDL_DISABLE_DEPRECATED object->deprecated_master = master; #endif g_object_add_weak_pointer (master, (gpointer *) &object->priv->master); g_object_notify (G_OBJECT (object), "master"); }
void gdl_dock_master_set_controller (GdlDockMaster *master, GdlDockObject *new_controller) { g_return_if_fail (master != NULL); if (new_controller) { if (GDL_DOCK_OBJECT_AUTOMATIC (new_controller)) g_warning (_("The new dock controller %p is automatic. Only manual " "dock objects should be named controller."), new_controller); /* check that the controller is in the toplevel list */ if (!g_list_find (master->toplevel_docks, new_controller)) gdl_dock_master_add (master, new_controller); master->controller = new_controller; } else { master->controller = NULL; /* no controller, no master */ g_object_unref (master); } }