836
884
g_return_if_fail (widget != NULL);
837
885
g_return_if_fail (GDL_IS_DOCK_ITEM (widget));
839
GTK_WIDGET_SET_FLAGS (widget, GTK_MAPPED);
887
gtk_widget_set_mapped (widget, TRUE);
841
889
item = GDL_DOCK_ITEM (widget);
843
891
gdk_window_show (widget->window);
846
&& GTK_WIDGET_VISIBLE (item->child)
847
&& !GTK_WIDGET_MAPPED (item->child))
894
&& gtk_widget_get_visible (item->child)
895
&& !gtk_widget_get_mapped (item->child))
848
896
gtk_widget_map (item->child);
850
898
if (item->_priv->grip
851
&& GTK_WIDGET_VISIBLE (item->_priv->grip)
852
&& !GTK_WIDGET_MAPPED (item->_priv->grip))
899
&& gtk_widget_get_visible (item->_priv->grip)
900
&& !gtk_widget_get_mapped (item->_priv->grip))
853
901
gtk_widget_map (item->_priv->grip);
1375
1422
pref_size = req.width;
1377
1424
case GDL_DOCK_CENTER:
1378
new_parent = g_object_new (gdl_dock_object_type_from_nick ("notebook"),
1379
"preferred-width", object_req.width,
1380
"preferred-height", object_req.height,
1382
add_ourselves_first = TRUE;
1425
/* If the parent is already a DockNotebook, we don't need
1426
to create a new one. */
1427
if (!GDL_IS_DOCK_NOTEBOOK (parent))
1429
new_parent = g_object_new (gdl_dock_object_type_from_nick ("notebook"),
1430
"preferred-width", object_req.width,
1431
"preferred-height", object_req.height,
1433
add_ourselves_first = TRUE;
1399
1451
gdl_dock_object_freeze (parent);
1401
/* ref ourselves since we could be destroyed when detached */
1402
g_object_ref (object);
1403
GDL_DOCK_OBJECT_SET_FLAGS (object, GDL_DOCK_IN_REFLOW);
1404
gdl_dock_object_detach (object, FALSE);
1406
/* freeze the new parent, so reduce won't get called before it's
1407
actually added to our parent */
1408
gdl_dock_object_freeze (new_parent);
1410
/* bind the new parent to our master, so the following adds work */
1411
gdl_dock_object_bind (new_parent, G_OBJECT (GDL_DOCK_OBJECT_GET_MASTER (object)));
1413
/* add the objects */
1414
if (add_ourselves_first) {
1415
gtk_container_add (GTK_CONTAINER (new_parent), GTK_WIDGET (object));
1416
gtk_container_add (GTK_CONTAINER (new_parent), GTK_WIDGET (requestor));
1417
splitpos = available_space - pref_size;
1419
gtk_container_add (GTK_CONTAINER (new_parent), GTK_WIDGET (requestor));
1420
gtk_container_add (GTK_CONTAINER (new_parent), GTK_WIDGET (object));
1421
splitpos = pref_size;
1424
/* add the new parent to the parent */
1426
gtk_container_add (GTK_CONTAINER (parent), GTK_WIDGET (new_parent));
1428
/* show automatic object */
1429
if (GTK_WIDGET_VISIBLE (object))
1430
gtk_widget_show (GTK_WIDGET (new_parent));
1432
/* use extra docking parameter */
1433
if (position != GDL_DOCK_CENTER && other_data &&
1434
G_VALUE_HOLDS (other_data, G_TYPE_UINT)) {
1456
/* ref ourselves since we could be destroyed when detached */
1457
g_object_ref (object);
1458
GDL_DOCK_OBJECT_SET_FLAGS (object, GDL_DOCK_IN_REFLOW);
1459
gdl_dock_object_detach (object, FALSE);
1461
/* freeze the new parent, so reduce won't get called before it's
1462
actually added to our parent */
1463
gdl_dock_object_freeze (new_parent);
1465
/* bind the new parent to our master, so the following adds work */
1466
gdl_dock_object_bind (new_parent, G_OBJECT (GDL_DOCK_OBJECT_GET_MASTER (object)));
1468
/* add the objects */
1469
if (add_ourselves_first) {
1470
gtk_container_add (GTK_CONTAINER (new_parent), GTK_WIDGET (object));
1471
gtk_container_add (GTK_CONTAINER (new_parent), GTK_WIDGET (requestor));
1472
splitpos = available_space - pref_size;
1474
gtk_container_add (GTK_CONTAINER (new_parent), GTK_WIDGET (requestor));
1475
gtk_container_add (GTK_CONTAINER (new_parent), GTK_WIDGET (object));
1476
splitpos = pref_size;
1479
/* add the new parent to the parent */
1481
gtk_container_add (GTK_CONTAINER (parent), GTK_WIDGET (new_parent));
1483
/* show automatic object */
1484
if (gtk_widget_get_visible (GTK_WIDGET (object)))
1486
gtk_widget_show (GTK_WIDGET (new_parent));
1487
GDL_DOCK_OBJECT_UNSET_FLAGS (object, GDL_DOCK_IN_REFLOW);
1489
gdl_dock_object_thaw (new_parent);
1491
/* use extra docking parameter */
1492
if (position != GDL_DOCK_CENTER && other_data &&
1493
G_VALUE_HOLDS (other_data, G_TYPE_UINT)) {
1436
g_object_set (G_OBJECT (new_parent),
1437
"position", g_value_get_uint (other_data),
1439
} else if (splitpos > 0 && splitpos < available_space) {
1440
g_object_set (G_OBJECT (new_parent), "position", splitpos, NULL);
1443
GDL_DOCK_OBJECT_UNSET_FLAGS (object, GDL_DOCK_IN_REFLOW);
1444
g_object_unref (object);
1446
gdl_dock_object_thaw (new_parent);
1495
g_object_set (G_OBJECT (new_parent),
1496
"position", g_value_get_uint (other_data),
1498
} else if (splitpos > 0 && splitpos < available_space) {
1499
g_object_set (G_OBJECT (new_parent), "position", splitpos, NULL);
1502
g_object_unref (object);
1506
/* If the parent is already a DockNotebook, we don't need
1507
to create a new one. */
1508
gtk_container_add (GTK_CONTAINER (parent), GTK_WIDGET (requestor));
1511
requestor_parent = gdl_dock_object_get_parent_object (requestor);
1512
if (GDL_IS_DOCK_NOTEBOOK (requestor_parent))
1514
/* Activate the page we just added */
1515
GdlDockItem* notebook = GDL_DOCK_ITEM (gdl_dock_object_get_parent_object (requestor));
1516
gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook->child),
1517
gtk_notebook_page_num (GTK_NOTEBOOK (notebook->child), GTK_WIDGET (requestor)));
1448
1521
gdl_dock_object_thaw (parent);
1963
2185
gtk_widget_show (GTK_WIDGET (item));
2189
* gdl_dock_item_lock:
2190
* @item: The dock item to lock.
2192
* This function locks the dock item. When locked the dock item cannot
2193
* be dragged around and it doesn't show a grip.
1967
2196
gdl_dock_item_lock (GdlDockItem *item)
1969
2198
g_object_set (item, "locked", TRUE, NULL);
2202
* gdl_dock_item_unlock:
2203
* @item: The dock item to unlock.
2205
* This function unlocks the dock item. When unlocked the dock item can
2206
* be dragged around and can show a grip.
1973
2209
gdl_dock_item_unlock (GdlDockItem *item)
1975
2211
g_object_set (item, "locked", FALSE, NULL);
2215
* gdl_dock_item_set_default_position:
2216
* @item: The dock item
2217
* @reference: The GdlDockObject which is the default dock for @item
2219
* This method has only an effect when you add you dock_item with
2220
* GDL_DOCK_ITEM_BEH_NEVER_FLOATING. In this case you have to assign
2221
* it a default position.
1979
2224
gdl_dock_item_set_default_position (GdlDockItem *item,
1980
2225
GdlDockObject *reference)