[gdl] Remove public members from GdlDockItem
- From: Sebastien Granjoux <sgranjoux src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gdl] Remove public members from GdlDockItem
- Date: Sun, 5 Aug 2012 19:17:09 +0000 (UTC)
commit 37a3bfe38bb615fe986cbdfcc85464cc0ab4c17c
Author: SÃbastien Granjoux <seb sfo free fr>
Date: Sun Aug 5 12:55:48 2012 +0200
Remove public members from GdlDockItem
gdl/gdl-dock-bar.c | 7 +-
gdl/gdl-dock-item.c | 468 +++++++++++++++++++++++++++++++++++++----------
gdl/gdl-dock-item.h | 171 ++++++++++-------
gdl/gdl-dock-master.c | 20 +--
gdl/gdl-dock-notebook.c | 74 ++++----
gdl/gdl-dock-paned.c | 84 ++++-----
6 files changed, 564 insertions(+), 260 deletions(-)
---
diff --git a/gdl/gdl-dock-bar.c b/gdl/gdl-dock-bar.c
index 53358a5..e1aa606 100644
--- a/gdl/gdl-dock-bar.c
+++ b/gdl/gdl-dock-bar.c
@@ -268,7 +268,6 @@ gdl_dock_bar_item_clicked (GtkWidget *button,
g_assert (dockbar != NULL);
g_object_set_data (G_OBJECT (item), "GdlDockBar", NULL);
- GDL_DOCK_OBJECT_UNSET_FLAGS (item, GDL_DOCK_ICONIFIED);
gdl_dock_item_show_item (item);
}
@@ -379,10 +378,10 @@ update_dock_items (GdlDockBar *dockbar, gboolean full_update)
GdlDockItem *item = GDL_DOCK_ITEM (l->data);
if (g_slist_index (dockbar->priv->items, item) != -1 &&
- !GDL_DOCK_ITEM_ICONIFIED (item))
+ !gdl_dock_item_is_iconified (item))
gdl_dock_bar_remove_item (dockbar, item);
else if (g_slist_index (dockbar->priv->items, item) == -1 &&
- GDL_DOCK_ITEM_ICONIFIED (item) &&
+ gdl_dock_item_is_iconified (item) &&
!gdl_dock_item_is_placeholder (item))
gdl_dock_bar_add_item (dockbar, item);
}
@@ -392,7 +391,7 @@ update_dock_items (GdlDockBar *dockbar, gboolean full_update)
if (g_slist_index (dockbar->priv->items, item) != -1)
gdl_dock_bar_remove_item (dockbar, item);
- if (GDL_DOCK_ITEM_ICONIFIED (item) &&
+ if (gdl_dock_item_is_iconified (item) &&
!gdl_dock_item_is_placeholder (item))
gdl_dock_bar_add_item (dockbar, item);
}
diff --git a/gdl/gdl-dock-item.c b/gdl/gdl-dock-item.c
index 99b48de..837b92c 100644
--- a/gdl/gdl-dock-item.c
+++ b/gdl/gdl-dock-item.c
@@ -64,7 +64,9 @@
/* ----- Private prototypes ----- */
-static void gdl_dock_item_class_init (GdlDockItemClass *class);
+static void gdl_dock_item_base_class_init (GdlDockItemClass *class);
+static void gdl_dock_item_class_init (GdlDockItemClass *class);
+static void gdl_dock_item_init (GdlDockItem *item);
static GObject *gdl_dock_item_constructor (GType type,
guint n_construct_properties,
@@ -191,6 +193,18 @@ static guint gdl_dock_item_signals [LAST_SIGNAL] = { 0 };
(GDL_DOCK_ITEM_HAS_GRIP (item))
struct _GdlDockItemPrivate {
+ GtkWidget *child;
+
+ GdlDockItemBehavior behavior;
+ GtkOrientation orientation;
+
+ guint iconified: 1;
+ guint resize : 1;
+ guint in_predrag : 1;
+ guint in_drag : 1;
+
+ gint dragoff_x, dragoff_y;
+
GtkWidget *menu;
gboolean grip_shown;
@@ -209,6 +223,8 @@ struct _GdlDockItemPrivate {
};
struct _GdlDockItemClassPrivate {
+ gboolean has_grip;
+
GtkCssProvider *css;
};
@@ -219,8 +235,44 @@ struct _GdlDockItemClassPrivate {
/* ----- Private functions ----- */
-G_DEFINE_TYPE_WITH_CODE (GdlDockItem, gdl_dock_item, GDL_TYPE_DOCK_OBJECT,
- g_type_add_class_private (g_define_type_id, sizeof (GdlDockItemClassPrivate)))
+/* It is not possible to use G_DEFINE_TYPE_* macro for GdlDockItem because it
+ * has some class private data. The priv pointer has to be initialized in
+ * the base class initialization function because this function is called for
+ * each derived type.
+ */
+
+static gpointer gdl_dock_item_parent_class = NULL;
+
+GType
+gdl_dock_item_get_type (void)
+{
+ static GType gtype = 0;
+
+ if (G_UNLIKELY (gtype == 0)) {
+ const GTypeInfo gtype_info = {
+ sizeof (GdlDockItemClass),
+ (GBaseInitFunc) gdl_dock_item_base_class_init,
+ NULL,
+ (GClassInitFunc) gdl_dock_item_class_init,
+ NULL, /* class_finalize */
+ NULL, /* class_data */
+ sizeof (GdlDockItem),
+ 0, /* n_preallocs */
+ (GInstanceInitFunc) gdl_dock_item_init,
+ NULL, /* value_table */
+ };
+
+ gtype = g_type_register_static (GDL_TYPE_DOCK_OBJECT,
+ "GdlDockItem",
+ >ype_info,
+ 0);
+
+ g_type_add_class_private (gtype, sizeof (GdlDockItemClassPrivate));
+ }
+
+ return gtype;
+}
+
static void
add_tab_bindings (GtkBindingSet *binding_set,
@@ -257,6 +309,12 @@ add_arrow_bindings (GtkBindingSet *binding_set,
}
static void
+gdl_dock_item_base_class_init (GdlDockItemClass *klass)
+{
+ klass->priv = G_TYPE_CLASS_GET_PRIVATE (klass, GDL_TYPE_DOCK_ITEM, GdlDockItemClassPrivate);
+}
+
+static void
gdl_dock_item_class_init (GdlDockItemClass *klass)
{
GObjectClass *object_class;
@@ -269,6 +327,8 @@ gdl_dock_item_class_init (GdlDockItemClass *klass)
"}";
GtkBindingSet *binding_set;
+ gdl_dock_item_parent_class = g_type_class_peek_parent (klass);
+
object_class = G_OBJECT_CLASS (klass);
widget_class = GTK_WIDGET_CLASS (klass);
container_class = GTK_CONTAINER_CLASS (klass);
@@ -303,7 +363,7 @@ gdl_dock_item_class_init (GdlDockItemClass *klass)
dock_object_class->dock = gdl_dock_item_dock;
dock_object_class->present = gdl_dock_item_present;
- klass->has_grip = TRUE;
+ klass->priv->has_grip = TRUE;
klass->dock_drag_begin = NULL;
klass->dock_drag_motion = NULL;
klass->dock_drag_end = NULL;
@@ -545,8 +605,6 @@ gdl_dock_item_class_init (GdlDockItemClass *klass)
g_type_class_add_private (object_class, sizeof (GdlDockItemPrivate));
/* set the style */
- klass->priv = G_TYPE_CLASS_GET_PRIVATE (klass, GDL_TYPE_DOCK_ITEM, GdlDockItemClassPrivate);
-
klass->priv->css = gtk_css_provider_new ();
gtk_css_provider_load_from_data (klass->priv->css, style, -1, NULL);
}
@@ -561,15 +619,18 @@ gdl_dock_item_init (GdlDockItem *item)
gtk_widget_set_has_window (GTK_WIDGET (item), TRUE);
gtk_widget_set_can_focus (GTK_WIDGET (item), TRUE);
- item->child = NULL;
-
- item->orientation = GTK_ORIENTATION_VERTICAL;
- item->behavior = GDL_DOCK_ITEM_BEH_NORMAL;
+ item->priv->child = NULL;
- item->resize = TRUE;
+ item->priv->orientation = GTK_ORIENTATION_VERTICAL;
+ item->priv->behavior = GDL_DOCK_ITEM_BEH_NORMAL;
- item->dragoff_x = item->dragoff_y = 0;
+ item->priv->iconified = FALSE;
+
+ item->priv->resize = TRUE;
+ item->priv->dragoff_x = item->priv->dragoff_y = 0;
+ item->priv->in_predrag = item->priv->in_drag = FALSE;
+
item->priv->menu = NULL;
item->priv->preferred_width = item->priv->preferred_height = -1;
@@ -684,32 +745,24 @@ gdl_dock_item_set_property (GObject *g_object,
gdl_dock_item_set_orientation (item, g_value_get_enum (value));
break;
case PROP_RESIZE:
- item->resize = g_value_get_boolean (value);
+ item->priv->resize = g_value_get_boolean (value);
gtk_widget_queue_resize (GTK_WIDGET (item));
break;
case PROP_BEHAVIOR:
{
- GdlDockItemBehavior old_beh = item->behavior;
- item->behavior = g_value_get_flags (value);
-
- if ((old_beh ^ item->behavior) & GDL_DOCK_ITEM_BEH_LOCKED) {
- gdl_dock_object_layout_changed_notify (GDL_DOCK_OBJECT (item));
- g_object_notify (g_object, "locked");
- gdl_dock_item_showhide_grip (item);
- }
-
+ gdl_dock_item_set_behavior_flags (item, g_value_get_flags (value), TRUE);
break;
}
case PROP_LOCKED:
{
- GdlDockItemBehavior old_beh = item->behavior;
+ GdlDockItemBehavior old_beh = item->priv->behavior;
if (g_value_get_boolean (value))
- item->behavior |= GDL_DOCK_ITEM_BEH_LOCKED;
+ item->priv->behavior |= GDL_DOCK_ITEM_BEH_LOCKED;
else
- item->behavior &= ~GDL_DOCK_ITEM_BEH_LOCKED;
+ item->priv->behavior &= ~GDL_DOCK_ITEM_BEH_LOCKED;
- if (old_beh ^ item->behavior) {
+ if (old_beh ^ item->priv->behavior) {
gdl_dock_item_showhide_grip (item);
g_object_notify (g_object, "behavior");
@@ -725,10 +778,10 @@ gdl_dock_item_set_property (GObject *g_object,
break;
case PROP_ICONIFIED:
if (g_value_get_boolean (value)) {
- if (!GDL_DOCK_ITEM_ICONIFIED (item)) gdl_dock_item_iconify_item (item);
+ if (!item->priv->iconified) gdl_dock_item_iconify_item (item);
}
- else if (GDL_DOCK_ITEM_ICONIFIED (item)) {
- GDL_DOCK_OBJECT_UNSET_FLAGS (item, GDL_DOCK_ICONIFIED);
+ else if (item->priv->iconified) {
+ item->priv->iconified = FALSE;
gtk_widget_show (GTK_WIDGET (item));
gtk_widget_queue_resize (GTK_WIDGET (item));
}
@@ -737,7 +790,7 @@ gdl_dock_item_set_property (GObject *g_object,
if (g_value_get_boolean (value)) {
gtk_widget_hide (GTK_WIDGET (item));
} else {
- if (!GDL_DOCK_ITEM_ICONIFIED (item) && !gdl_dock_item_is_placeholder (item))
+ if (!item->priv->iconified && !gdl_dock_item_is_placeholder (item))
gtk_widget_show (GTK_WIDGET (item));
}
break;
@@ -757,13 +810,13 @@ gdl_dock_item_get_property (GObject *g_object,
switch (prop_id) {
case PROP_ORIENTATION:
- g_value_set_enum (value, item->orientation);
+ g_value_set_enum (value, item->priv->orientation);
break;
case PROP_RESIZE:
- g_value_set_boolean (value, item->resize);
+ g_value_set_boolean (value, item->priv->resize);
break;
case PROP_BEHAVIOR:
- g_value_set_flags (value, item->behavior);
+ g_value_set_flags (value, item->priv->behavior);
break;
case PROP_LOCKED:
g_value_set_boolean (value, !GDL_DOCK_ITEM_NOT_LOCKED (item));
@@ -775,7 +828,7 @@ gdl_dock_item_get_property (GObject *g_object,
g_value_set_int (value, item->priv->preferred_height);
break;
case PROP_ICONIFIED:
- g_value_set_boolean (value, GDL_DOCK_ITEM_ICONIFIED (item));
+ g_value_set_boolean (value, gdl_dock_item_is_iconified (item));
break;
case PROP_CLOSED:
g_value_set_boolean (value, gdl_dock_item_is_closed (item));
@@ -825,18 +878,18 @@ gdl_dock_item_add (GtkContainer *container,
return;
}
- if (item->child != NULL) {
+ if (item->priv->child != NULL) {
g_warning (_("Attempting to add a widget with type %s to a %s, "
"but it can only contain one widget at a time; "
"it already contains a widget of type %s"),
G_OBJECT_TYPE_NAME (widget),
G_OBJECT_TYPE_NAME (item),
- G_OBJECT_TYPE_NAME (item->child));
+ G_OBJECT_TYPE_NAME (item->priv->child));
return;
}
gtk_widget_set_parent (widget, GTK_WIDGET (item));
- item->child = widget;
+ item->priv->child = widget;
}
static void
@@ -860,12 +913,12 @@ gdl_dock_item_remove (GtkContainer *container,
gdl_dock_item_drag_end (item, TRUE);
- g_return_if_fail (item->child == widget);
+ g_return_if_fail (item->priv->child == widget);
was_visible = gtk_widget_get_visible (widget);
gtk_widget_unparent (widget);
- item->child = NULL;
+ item->priv->child = NULL;
if (was_visible)
gtk_widget_queue_resize (GTK_WIDGET (container));
@@ -884,8 +937,8 @@ gdl_dock_item_forall (GtkContainer *container,
if (include_internals && item->priv->grip)
(* callback) (item->priv->grip, callback_data);
- if (item->child)
- (* callback) (item->child, callback_data);
+ if (item->priv->child)
+ (* callback) (item->priv->child, callback_data);
}
static GType
@@ -893,7 +946,7 @@ gdl_dock_item_child_type (GtkContainer *container)
{
g_return_val_if_fail (GDL_IS_DOCK_ITEM (container), G_TYPE_NONE);
- if (!GDL_DOCK_ITEM (container)->child)
+ if (!GDL_DOCK_ITEM (container)->priv->child)
return GTK_TYPE_WIDGET;
else
return G_TYPE_NONE;
@@ -928,23 +981,23 @@ gdl_dock_item_get_preferred_width (GtkWidget *widget,
/* If our child is not visible, we still request its size, since
we won't have any useful hint for our size otherwise. */
- if (item->child)
- gtk_widget_get_preferred_width (item->child, &child_min, &child_nat);
+ if (item->priv->child)
+ gtk_widget_get_preferred_width (item->priv->child, &child_min, &child_nat);
else
child_min = child_nat = 0;
- if (item->orientation == GTK_ORIENTATION_HORIZONTAL) {
+ if (item->priv->orientation == GTK_ORIENTATION_HORIZONTAL) {
if (GDL_DOCK_ITEM_GRIP_SHOWN (item)) {
gtk_widget_get_preferred_width (item->priv->grip, minimum, natural);
} else
*minimum = *natural = 0;
- if (item->child) {
+ if (item->priv->child) {
*minimum += child_min;
*natural += child_nat;
}
} else {
- if (item->child) {
+ if (item->priv->child) {
*minimum = child_min;
*natural = child_nat;
} else
@@ -975,13 +1028,13 @@ gdl_dock_item_get_preferred_height (GtkWidget *widget,
/* If our child is not visible, we still request its size, since
we won't have any useful hint for our size otherwise. */
- if (item->child)
- gtk_widget_get_preferred_height (item->child, &child_min, &child_nat);
+ if (item->priv->child)
+ gtk_widget_get_preferred_height (item->priv->child, &child_min, &child_nat);
else
child_min = child_nat = 0;
- if (item->orientation == GTK_ORIENTATION_HORIZONTAL) {
- if (item->child) {
+ if (item->priv->orientation == GTK_ORIENTATION_HORIZONTAL) {
+ if (item->priv->child) {
*minimum = child_min;
*natural = child_nat;
} else
@@ -992,7 +1045,7 @@ gdl_dock_item_get_preferred_height (GtkWidget *widget,
} else
*minimum = *natural = 0;
- if (item->child) {
+ if (item->priv->child) {
*minimum += child_min;
*natural += child_nat;
}
@@ -1030,7 +1083,7 @@ gdl_dock_item_size_allocate (GtkWidget *widget,
allocation->width,
allocation->height);
- if (item->child && gtk_widget_get_visible (item->child)) {
+ if (item->priv->child && gtk_widget_get_visible (item->priv->child)) {
GtkAllocation child_allocation;
GtkStyleContext *context;
GtkStateFlags state;
@@ -1053,7 +1106,7 @@ gdl_dock_item_size_allocate (GtkWidget *widget,
gtk_widget_get_preferred_size (item->priv->grip, &grip_req, NULL);
- if (item->orientation == GTK_ORIENTATION_HORIZONTAL) {
+ if (item->priv->orientation == GTK_ORIENTATION_HORIZONTAL) {
child_allocation.x += grip_req.width;
child_allocation.width -= grip_req.width;
grip_alloc.width = grip_req.width;
@@ -1070,7 +1123,7 @@ gdl_dock_item_size_allocate (GtkWidget *widget,
child_allocation.width = 0;
if (child_allocation.height < 0)
child_allocation.height = 0;
- gtk_widget_size_allocate (item->child, &child_allocation);
+ gtk_widget_size_allocate (item->priv->child, &child_allocation);
}
}
@@ -1088,10 +1141,10 @@ gdl_dock_item_map (GtkWidget *widget)
gdk_window_show (gtk_widget_get_window (widget));
- if (item->child
- && gtk_widget_get_visible (item->child)
- && !gtk_widget_get_mapped (item->child))
- gtk_widget_map (item->child);
+ if (item->priv->child
+ && gtk_widget_get_visible (item->priv->child)
+ && !gtk_widget_get_mapped (item->priv->child))
+ gtk_widget_map (item->priv->child);
if (item->priv->grip
&& gtk_widget_get_visible (GTK_WIDGET (item->priv->grip))
@@ -1113,8 +1166,8 @@ gdl_dock_item_unmap (GtkWidget *widget)
gdk_window_hide (gtk_widget_get_window (widget));
- if (item->child)
- gtk_widget_unmap (item->child);
+ if (item->priv->child)
+ gtk_widget_unmap (item->priv->child);
if (item->priv->grip)
gtk_widget_unmap (item->priv->grip);
@@ -1159,8 +1212,8 @@ gdl_dock_item_realize (GtkWidget *widget)
gtk_style_context_set_background (gtk_widget_get_style_context (widget),
window);
- if (item->child)
- gtk_widget_set_parent_window (item->child, window);
+ if (item->priv->child)
+ gtk_widget_set_parent_window (item->priv->child, window);
if (item->priv->grip)
gtk_widget_set_parent_window (item->priv->grip, window);
@@ -1171,7 +1224,7 @@ gdl_dock_item_move_focus_child (GdlDockItem *item,
GtkDirectionType dir)
{
g_return_if_fail (GDL_IS_DOCK_ITEM (item));
- gtk_widget_child_focus (GTK_WIDGET (item->child), dir);
+ gtk_widget_child_focus (GTK_WIDGET (item->priv->child), dir);
}
#define EVENT_IN_GRIP_EVENT_WINDOW(ev,gr) \
@@ -1203,7 +1256,7 @@ gdl_dock_item_button_changed (GtkWidget *widget,
gtk_widget_get_allocation (item->priv->grip, &allocation);
/* Check if user clicked on the drag handle. */
- switch (item->orientation) {
+ switch (item->priv->orientation) {
case GTK_ORIENTATION_HORIZONTAL:
in_handle = event->x < allocation.width;
break;
@@ -1226,7 +1279,7 @@ gdl_dock_item_button_changed (GtkWidget *widget,
item->priv->start_x = event->x;
item->priv->start_y = event->y;
- GDL_DOCK_OBJECT_SET_FLAGS (item, GDL_DOCK_IN_PREDRAG);
+ item->priv->in_predrag = TRUE;
gdl_dock_item_grip_set_cursor (GDL_DOCK_ITEM_GRIP (item->priv->grip), TRUE);
@@ -1263,21 +1316,21 @@ gdl_dock_item_motion (GtkWidget *widget,
if (!EVENT_IN_GRIP_EVENT_WINDOW (event, item->priv->grip))
return FALSE;
- if (GDL_DOCK_ITEM_IN_PREDRAG (item)) {
+ if (item->priv->in_predrag) {
if (gtk_drag_check_threshold (widget,
item->priv->start_x,
item->priv->start_y,
event->x,
event->y)) {
- GDL_DOCK_OBJECT_UNSET_FLAGS (item, GDL_DOCK_IN_PREDRAG);
- item->dragoff_x = item->priv->start_x;
- item->dragoff_y = item->priv->start_y;
+ item->priv->in_predrag = FALSE;
+ item->priv->dragoff_x = item->priv->start_x;
+ item->priv->dragoff_y = item->priv->start_y;
gdl_dock_item_drag_start (item);
}
}
- if (!GDL_DOCK_ITEM_IN_DRAG (item))
+ if (!item->priv->in_drag)
return FALSE;
new_x = event->x_root;
@@ -1360,7 +1413,7 @@ gdl_dock_item_dock_request (GdlDockObject *object,
request->rect.width = alloc.width;
request->rect.height = alloc.height;
- GdlDockItemBehavior behavior = GDL_DOCK_ITEM(object)->behavior;
+ GdlDockItemBehavior behavior = GDL_DOCK_ITEM(object)->priv->behavior;
/* Calculate docking indicator rectangle size for new locations. Only
do this when we're not over the item's current location. */
@@ -1635,8 +1688,8 @@ gdl_dock_item_dock (GdlDockObject *object,
{
/* Activate the page we just added */
GdlDockItem* notebook = GDL_DOCK_ITEM (gdl_dock_object_get_parent_object (requestor));
- gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook->child),
- gtk_notebook_page_num (GTK_NOTEBOOK (notebook->child), GTK_WIDGET (requestor)));
+ gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook->priv->child),
+ gtk_notebook_page_num (GTK_NOTEBOOK (notebook->priv->child), GTK_WIDGET (requestor)));
}
if (parent)
@@ -1677,7 +1730,7 @@ gdl_dock_item_popup_menu (GdlDockItem *item,
GTK_WIDGET (item),
gdl_dock_item_detach_menu);
- if (item->behavior & GDL_DOCK_ITEM_BEH_LOCKED) {
+ if (item->priv->behavior & GDL_DOCK_ITEM_BEH_LOCKED) {
/* UnLock menuitem */
mitem = gtk_menu_item_new_with_label (_("UnLock"));
gtk_menu_shell_append (GTK_MENU_SHELL (item->priv->menu),
@@ -1710,7 +1763,7 @@ gdl_dock_item_drag_start (GdlDockItem *item)
if (!gtk_widget_get_realized (GTK_WIDGET (item)))
gtk_widget_realize (GTK_WIDGET (item));
- GDL_DOCK_OBJECT_SET_FLAGS (item, GDL_DOCK_IN_DRAG);
+ item->priv->in_drag = TRUE;
/* grab the keyboard & pointer. The pointer has already been grabbed by the grip
* window when it has received a press button event. See gdk_pointer_grab. */
@@ -1724,16 +1777,16 @@ static gboolean
gdl_dock_item_drag_end (GdlDockItem *item,
gboolean cancel)
{
- if (GDL_DOCK_ITEM_IN_DRAG (item)) {
+ if (item->priv->in_drag) {
/* Release pointer & keyboard. */
gtk_grab_remove (gtk_grab_get_current ());
g_signal_emit (item, gdl_dock_item_signals [DOCK_DRAG_END], 0, cancel);
gtk_widget_grab_focus (GTK_WIDGET (item));
- GDL_DOCK_OBJECT_UNSET_FLAGS (item, GDL_DOCK_IN_DRAG);
+ item->priv->in_drag = FALSE;
}
- else if (GDL_DOCK_ITEM_IN_PREDRAG (item)) {
- GDL_DOCK_OBJECT_UNSET_FLAGS (item, GDL_DOCK_IN_PREDRAG);
+ else if (item->priv->in_predrag) {
+ item->priv->in_predrag = FALSE;
}
else {
/* No drag not pre-drag has been started */
@@ -1763,15 +1816,15 @@ gdl_dock_item_tab_button (GtkWidget *widget,
case 1:
/* set dragoff_{x,y} as we the user clicked on the middle of the
drag handle */
- switch (item->orientation) {
+ switch (item->priv->orientation) {
case GTK_ORIENTATION_HORIZONTAL:
gtk_widget_get_allocation (GTK_WIDGET (data), &allocation);
- /*item->dragoff_x = item->priv->grip_size / 2;*/
- item->dragoff_y = allocation.height / 2;
+ /*item->priv->dragoff_x = item->priv->grip_size / 2;*/
+ item->priv->dragoff_y = allocation.height / 2;
break;
case GTK_ORIENTATION_VERTICAL:
- /*item->dragoff_x = GTK_WIDGET (data)->allocation.width / 2;*/
- item->dragoff_y = item->priv->grip_size / 2;
+ /*item->priv->dragoff_x = GTK_WIDGET (data)->allocation.width / 2;*/
+ item->priv->dragoff_y = item->priv->grip_size / 2;
break;
};
gdl_dock_item_drag_start (item);
@@ -1831,7 +1884,7 @@ static void
gdl_dock_item_real_set_orientation (GdlDockItem *item,
GtkOrientation orientation)
{
- item->orientation = orientation;
+ item->priv->orientation = orientation;
if (gtk_widget_is_drawable (GTK_WIDGET (item)))
gtk_widget_queue_draw (GTK_WIDGET (item));
@@ -1955,7 +2008,7 @@ gdl_dock_item_dock_to (GdlDockItem *item,
g_return_if_fail (item != NULL);
g_return_if_fail (item != target);
g_return_if_fail (target != NULL || position == GDL_DOCK_FLOATING);
- g_return_if_fail ((item->behavior & GDL_DOCK_ITEM_BEH_NEVER_FLOATING) == 0 || position != GDL_DOCK_FLOATING);
+ g_return_if_fail ((item->priv->behavior & GDL_DOCK_ITEM_BEH_NEVER_FLOATING) == 0 || position != GDL_DOCK_FLOATING);
if (position == GDL_DOCK_FLOATING || !target) {
GdlDockObject *controller;
@@ -1971,7 +2024,7 @@ gdl_dock_item_dock_to (GdlDockItem *item,
re-docking... does this make sense now? */
/* Create new floating dock for widget. */
- item->dragoff_x = item->dragoff_y = 0;
+ item->priv->dragoff_x = item->priv->dragoff_y = 0;
gdl_dock_add_floating_item (GDL_DOCK (controller),
item, 0, 0, -1, -1);
@@ -2001,13 +2054,13 @@ gdl_dock_item_set_orientation (GdlDockItem *item,
g_return_if_fail (item != NULL);
- if (item->orientation != orientation) {
+ if (item->priv->orientation != orientation) {
/* push the property down the hierarchy if our child supports it */
- if (item->child != NULL) {
+ if (item->priv->child != NULL) {
pspec = g_object_class_find_property (
- G_OBJECT_GET_CLASS (item->child), "orientation");
+ G_OBJECT_GET_CLASS (item->priv->child), "orientation");
if (pspec && pspec->value_type == GTK_TYPE_ORIENTATION)
- g_object_set (G_OBJECT (item->child),
+ g_object_set (G_OBJECT (item->priv->child),
"orientation", orientation,
NULL);
};
@@ -2018,6 +2071,110 @@ gdl_dock_item_set_orientation (GdlDockItem *item,
}
/**
+ * gdl_dock_item_get_orientation:
+ * @item: a #GdlDockItem
+ *
+ * Retrieves the orientation of the object.
+ *
+ * Return value: the orientation of the object.
+ *
+ * Since: 3.6
+ */
+GtkOrientation
+gdl_dock_item_get_orientation (GdlDockItem *item)
+{
+ g_return_val_if_fail (GDL_IS_DOCK_ITEM (item), GTK_ORIENTATION_HORIZONTAL);
+
+ return item->priv->orientation;
+}
+
+/**
+ * gdl_dock_item_set_behavior_flags:
+ * @item: The dock item which will get it's behavior set.
+ * @behavior: Behavior flags to turn on
+ * @clear: Whether to clear state before turning on @flags
+ *
+ * This function sets the behavior of the dock item.
+ *
+ * Since: 3.6
+ */
+void
+gdl_dock_item_set_behavior_flags (GdlDockItem *item,
+ GdlDockItemBehavior behavior,
+ gboolean clear)
+{
+ GdlDockItemBehavior old_beh = item->priv->behavior;
+ g_return_if_fail (GDL_IS_DOCK_ITEM (item));
+
+ if (clear)
+ item->priv->behavior = behavior;
+ else
+ item->priv->behavior |= behavior;
+
+ if ((old_beh ^ behavior) & GDL_DOCK_ITEM_BEH_LOCKED) {
+ gdl_dock_object_layout_changed_notify (GDL_DOCK_OBJECT (item));
+ g_object_notify (G_OBJECT (item), "locked");
+ gdl_dock_item_showhide_grip (item);
+ }
+}
+
+/**
+ * gdl_dock_item_unset_behavior_flags:
+ * @item: The dock item which will get it's behavior set.
+ * @behavior: Behavior flags to turn off
+ *
+ * This function sets the behavior of the dock item.
+ *
+ * Since: 3.6
+ */
+void
+gdl_dock_item_unset_behavior_flags (GdlDockItem *item,
+ GdlDockItemBehavior behavior)
+{
+ GdlDockItemBehavior old_beh = item->priv->behavior;
+ g_return_if_fail (GDL_IS_DOCK_ITEM (item));
+
+ item->priv->behavior &= ~behavior;
+
+ if ((old_beh ^ behavior) & GDL_DOCK_ITEM_BEH_LOCKED) {
+ gdl_dock_object_layout_changed_notify (GDL_DOCK_OBJECT (item));
+ g_object_notify (G_OBJECT (item), "locked");
+ gdl_dock_item_showhide_grip (item);
+ }
+}
+
+/**
+ * gdl_dock_item_get_behavior_flags:
+ * @item: a #GdlDockItem
+ *
+ * Retrieves the behavior of the item.
+ *
+ * Return value: the behavior of the item.
+ *
+ * Since: 3.6
+ */
+GdlDockItemBehavior
+gdl_dock_item_get_behavior_flags (GdlDockItem *item)
+{
+ GdlDockItemBehavior behavior;
+ g_return_val_if_fail (GDL_IS_DOCK_ITEM (item), GDL_DOCK_ITEM_BEH_NORMAL);
+
+ behavior = item->priv->behavior;
+ if (!(behavior & GDL_DOCK_ITEM_BEH_NO_GRIP) && !(GDL_DOCK_ITEM_GET_CLASS (item)->priv->has_grip))
+ behavior |= GDL_DOCK_ITEM_BEH_NO_GRIP;
+ if (behavior & GDL_DOCK_ITEM_BEH_LOCKED)
+ behavior |= GDL_DOCK_ITEM_BEH_CANT_ICONIFY |
+ GDL_DOCK_ITEM_BEH_CANT_ICONIFY |
+ GDL_DOCK_ITEM_BEH_CANT_DOCK_TOP |
+ GDL_DOCK_ITEM_BEH_CANT_DOCK_BOTTOM |
+ GDL_DOCK_ITEM_BEH_CANT_DOCK_LEFT |
+ GDL_DOCK_ITEM_BEH_CANT_DOCK_RIGHT |
+ GDL_DOCK_ITEM_BEH_CANT_DOCK_CENTER;
+
+ return behavior;
+}
+
+/**
* gdl_dock_item_get_tablabel:
* @item: The dock item from which to get the tab label widget.
*
@@ -2213,7 +2370,7 @@ gdl_dock_item_iconify_item (GdlDockItem *item)
{
g_return_if_fail (item != NULL);
- GDL_DOCK_OBJECT_SET_FLAGS (item, GDL_DOCK_ICONIFIED);
+ item->priv->iconified = TRUE;
gtk_widget_hide (GTK_WIDGET (item));
}
@@ -2237,7 +2394,7 @@ gdl_dock_item_show_item (GdlDockItem *item)
toplevel = gdl_dock_object_get_controller (GDL_DOCK_OBJECT (item));
if (toplevel == GDL_DOCK_OBJECT (item)) return;
- if (item->behavior & GDL_DOCK_ITEM_BEH_NEVER_FLOATING) {
+ if (item->priv->behavior & GDL_DOCK_ITEM_BEH_NEVER_FLOATING) {
g_warning("Object %s has no default position and flag GDL_DOCK_ITEM_BEH_NEVER_FLOATING is set.\n",
gdl_dock_object_get_name (GDL_DOCK_OBJECT (item)));
return;
@@ -2253,7 +2410,7 @@ gdl_dock_item_show_item (GdlDockItem *item)
return;
}
- GDL_DOCK_OBJECT_UNSET_FLAGS (item, GDL_DOCK_ICONIFIED);
+ item->priv->iconified = FALSE;
gtk_widget_show (GTK_WIDGET (item));
return;
@@ -2309,6 +2466,31 @@ gdl_dock_item_preferred_size (GdlDockItem *item,
}
/**
+ * gdl_dock_item_get_drag_area:
+ * @item: The dock item to get the preferred size of.
+ * @req: A pointer to a #GdkRectangle that will receive the drag position
+ *
+ * Gets the size and the position of the drag window in pixels.
+ *
+ * Since: 3.6
+ */
+void
+gdl_dock_item_get_drag_area (GdlDockItem *item,
+ GdkRectangle *rect)
+{
+ GtkAllocation allocation;
+
+ g_return_if_fail (GDL_IS_DOCK_ITEM (item));
+ g_return_if_fail (rect != NULL);
+
+ rect->x = item->priv->dragoff_x;
+ rect->y = item->priv->dragoff_y;
+ gtk_widget_get_allocation (GTK_WIDGET (item), &allocation);
+ rect->width = MAX (item->priv->preferred_width, allocation.width);
+ rect->height = MAX (item->priv->preferred_height, allocation.height);
+}
+
+/**
* gdl_dock_item_or_child_has_focus:
* @item: The dock item to be checked
*
@@ -2353,7 +2535,7 @@ gdl_dock_item_or_child_has_focus (GdlDockItem *item)
gboolean
gdl_dock_item_is_placeholder (GdlDockItem *item)
{
- return item->child == NULL;
+ return item->priv->child == NULL;
}
/**
@@ -2368,11 +2550,103 @@ gdl_dock_item_is_placeholder (GdlDockItem *item)
* Since: 3.6
*/
gboolean
-gdl_dock_item_is_closed (GdlDockItem *item)
+gdl_dock_item_is_closed (GdlDockItem *item)
{
+ g_return_val_if_fail (GDL_IS_DOCK_ITEM (item), FALSE);
+
return gdl_dock_object_is_closed (GDL_DOCK_OBJECT (item));
}
+/**
+ * gdl_dock_item_is_iconified:
+ * @item: The dock item to be checked
+ *
+ * Checks whether a given #GdlDockItem is iconified.
+ *
+ * Returns: %TRUE if the dock item is iconified.
+ *
+ * Since: 3.6
+ */
+gboolean
+gdl_dock_item_is_iconified (GdlDockItem *item)
+{
+ g_return_val_if_fail (GDL_IS_DOCK_ITEM (item), FALSE);
+
+ return item->priv->iconified;
+}
+
+/**
+ * gdl_dock_item_set_child:
+ * @item: a #GdlDockItem
+ * @widget: (allow-none): a #GtkWidget
+ *
+ * Set a new child for the #GdlDockItem. This child is different from the
+ * children using the #GtkContainer interface. It is a private child reserved
+ * for the widget implementation.
+ *
+ * If a child is already present, it will be replaced. If @widget is %NULL the
+ * child will be removed.
+ *
+ * Since: 3.6
+ */
+void
+gdl_dock_item_set_child (GdlDockItem *item,
+ GtkWidget *child)
+{
+ g_return_if_fail (GDL_IS_DOCK_ITEM (item));
+
+ if (item->priv->child != NULL) {
+ gtk_widget_unparent (item->priv->child);
+ item->priv->child = NULL;
+ }
+
+ if (child != NULL) {
+ gtk_widget_set_parent (child, GTK_WIDGET (item));
+ item->priv->child = child;
+ }
+}
+
+/**
+ * gdl_dock_item_get_child:
+ * @item: a #GdlDockItem
+ *
+ * Gets the child of the #GdlDockItem, or %NULL if the item contains
+ * no child widget. The returned widget does not have a reference
+ * added, so you do not need to unref it.
+ *
+ * Return value: (transfer none): pointer to child of the #GdlDockItem
+ *
+ * Since: 3.6
+ */
+GtkWidget*
+gdl_dock_item_get_child (GdlDockItem *item)
+{
+ g_return_val_if_fail (GDL_IS_DOCK_ITEM (item), NULL);
+
+ return item->priv->child;
+}
+
+
+/**
+ * gdl_dock_item_class_set_has_grip:
+ * @item: a #GdlDockItemClass
+ * @has_grip: %TRUE is the dock item has a grip
+ *
+ * Define in the corresponding kind of dock item has a grip. Even if an item
+ * has a grip it can be hidden.
+ *
+ * Since: 3.6
+ */
+void
+gdl_dock_item_class_set_has_grip (GdlDockItemClass *item_class,
+ gboolean has_grip)
+{
+ g_return_if_fail (GDL_IS_DOCK_ITEM_CLASS (item_class));
+
+ item_class->priv->has_grip = has_grip;
+}
+
+
/* ----- gtk orientation type exporter/importer ----- */
diff --git a/gdl/gdl-dock-item.h b/gdl/gdl-dock-item.h
index ccf3bfb..a5ae07a 100644
--- a/gdl/gdl-dock-item.h
+++ b/gdl/gdl-dock-item.h
@@ -79,6 +79,7 @@ typedef enum {
} GdlDockItemBehavior;
+#ifndef GDL_DISABLE_DEPRECATED
/**
* GdlDockItemFlags:
* @GDL_DOCK_IN_DRAG: item is in a drag operation
@@ -88,6 +89,7 @@ typedef enum {
*
* Status flag of a GdlDockItem. Don't use unless you derive a widget from GdlDockItem
*
+ * Deprecated: 3.6: Use your own private data instead.
**/
typedef enum {
GDL_DOCK_IN_DRAG = 1 << GDL_DOCK_OBJECT_FLAGS_SHIFT,
@@ -95,6 +97,7 @@ typedef enum {
GDL_DOCK_ICONIFIED = 1 << (GDL_DOCK_OBJECT_FLAGS_SHIFT + 2),
GDL_DOCK_USER_ACTION = 1 << (GDL_DOCK_OBJECT_FLAGS_SHIFT + 3)
} GdlDockItemFlags;
+#endif
typedef struct _GdlDockItem GdlDockItem;
typedef struct _GdlDockItemPrivate GdlDockItemPrivate;
@@ -103,16 +106,8 @@ typedef struct _GdlDockItemClassPrivate GdlDockItemClassPrivate;
struct _GdlDockItem {
GdlDockObject object;
-
- GtkWidget *child;
- GdlDockItemBehavior behavior;
- GtkOrientation orientation;
-
- guint resize : 1;
-
- gint dragoff_x, dragoff_y; /* these need to be
- accesible from
- outside */
+
+ /* < private> */
GdlDockItemPrivate *priv;
};
@@ -121,8 +116,6 @@ struct _GdlDockItemClass {
GdlDockItemClassPrivate *priv;
- gboolean has_grip;
-
/* virtuals */
void (* set_orientation) (GdlDockItem *item,
GtkOrientation orientation);
@@ -148,8 +141,10 @@ struct _GdlDockItemClass {
* Deprecated: 3.6: Use GDL_DOCK_OBJECT_FLAGS instead
*/
#define GDL_DOCK_ITEM_FLAGS(item) (GDL_DOCK_OBJECT (item)->flags)
+#endif
+#ifndef GDL_DISABLE_DEPRECATED
/**
* GDL_DOCK_ITEM_SET_FLAGS:
* @item: A #GdlDockObject
@@ -161,7 +156,9 @@ struct _GdlDockItemClass {
*/
#define GDL_DOCK_ITEM_SET_FLAGS(item,flag) \
G_STMT_START { (GDL_DOCK_OBJECT_FLAGS (item) |= (flag)); } G_STMT_END
+#endif
+#ifndef GDL_DISABLE_DEPRECATED
/**
* GDL_DOCK_ITEM_UNSET_FLAGS:
* @item: A #GdlDockObject
@@ -173,47 +170,62 @@ struct _GdlDockItemClass {
*/
#define GDL_DOCK_ITEM_UNSET_FLAGS(item,flag) \
G_STMT_START { (GDL_DOCK_OBJECT_FLAGS (item) &= ~(flag)); } G_STMT_END
-
#endif
+#ifndef GDL_DISABLE_DEPRECATED
/**
* GDL_DOCK_ITEM_IN_DRAG:
* @item: A #GdlDockObject
*
* Evaluates to %TRUE if the user is dragging the item.
+ *
+ * Deprecated: 3.6: Use a private flag instead
*/
#define GDL_DOCK_ITEM_IN_DRAG(item) \
((GDL_DOCK_OBJECT_FLAGS (item) & GDL_DOCK_IN_DRAG) != 0)
+#endif
+#ifndef GDL_DISABLE_DEPRECATED
/**
* GDL_DOCK_ITEM_IN_PREDRAG:
* @item: A #GdlDockObject
*
* Evaluates to %TRUE if the user has clicked on the item but hasn't made a big
* enough move to start the drag operation.
+ *
+ * Deprecated: 3.6: Use a private flag instead
*/
#define GDL_DOCK_ITEM_IN_PREDRAG(item) \
((GDL_DOCK_OBJECT_FLAGS (item) & GDL_DOCK_IN_PREDRAG) != 0)
+#endif
+#ifndef GDL_DISABLE_DEPRECATED
/**
* GDL_DOCK_ITEM_ICONIFIED:
* @item: A #GdlDockObject
*
* Evaluates to %TRUE if the item is iconified, appearing only as a button in
* the dock bar.
+ *
+ * Deprecated: 3.6: Use GDL_DOCK_OBJECT_UNSET_FLAGS instead
*/
#define GDL_DOCK_ITEM_ICONIFIED(item) \
((GDL_DOCK_OBJECT_FLAGS (item) & GDL_DOCK_ICONIFIED) != 0)
+#endif
+#ifndef GDL_DISABLE_DEPRECATED
/**
* GDL_DOCK_ITEM_USER_ACTION:
* @item: A #GdlDockObject
*
* Evaluates to %TRUE if the user currently use the item, by example dragging
* division of a #GdlDockPaned object.
+ *
+ * Deprecated: 3.6: Use a private flag instead
*/
#define GDL_DOCK_ITEM_USER_ACTION(item) \
((GDL_DOCK_OBJECT_FLAGS (item) & GDL_DOCK_USER_ACTION) != 0)
+#endif
/**
* GDL_DOCK_ITEM_NOT_LOCKED:
@@ -221,16 +233,20 @@ struct _GdlDockItemClass {
*
* Evaluates to %TRUE the item can be moved, closed, or iconified.
*/
-#define GDL_DOCK_ITEM_NOT_LOCKED(item) !((item)->behavior & GDL_DOCK_ITEM_BEH_LOCKED)
+#define GDL_DOCK_ITEM_NOT_LOCKED(item) ((gdl_dock_item_get_behavior_flags(item) & GDL_DOCK_ITEM_BEH_LOCKED) == 0)
+
+#ifndef GDL_DISABLE_DEPRECATED
/**
* GDL_DOCK_ITEM_NO_GRIP:
* @item: A #GdlDockObject
*
* Evaluates to %TRUE the item has not handle, so it cannot be moved.
+ *
+ * Deprecated: 3.6: Use !GDL_DOCK_ITEM_HAS_GRIP instead
*/
-#define GDL_DOCK_ITEM_NO_GRIP(item) ((item)->behavior & GDL_DOCK_ITEM_BEH_NO_GRIP)
-
+#define GDL_DOCK_ITEM_NO_GRIP(item) ((gdl_dock_item_get_behavior_flags(item) & GDL_DOCK_ITEM_BEH_NO_GRIP) != 0)
+#endif
/**
* GDL_DOCK_ITEM_HAS_GRIP:
@@ -238,8 +254,7 @@ struct _GdlDockItemClass {
*
* Evaluates to %TRUE the item has a handle, so it can be moved.
*/
-#define GDL_DOCK_ITEM_HAS_GRIP(item) ((GDL_DOCK_ITEM_GET_CLASS (item)->has_grip)&& \
- ! GDL_DOCK_ITEM_NO_GRIP (item))
+#define GDL_DOCK_ITEM_HAS_GRIP(item) ((gdl_dock_item_get_behavior_flags (item) & GDL_DOCK_ITEM_BEH_NO_GRIP) == 0)
/**
* GDL_DOCK_ITEM_CANT_CLOSE:
@@ -247,9 +262,7 @@ struct _GdlDockItemClass {
*
* Evaluates to %TRUE the item cannot be closed.
*/
-#define GDL_DOCK_ITEM_CANT_CLOSE(item) \
- ((((item)->behavior & GDL_DOCK_ITEM_BEH_CANT_CLOSE) != 0)|| \
- ! GDL_DOCK_ITEM_NOT_LOCKED(item))
+#define GDL_DOCK_ITEM_CANT_CLOSE(item) ((gdl_dock_item_get_behavior_flags(item) & GDL_DOCK_ITEM_BEH_CANT_CLOSE) != 0)
/**
* GDL_DOCK_ITEM_CANT_ICONIFY:
@@ -257,71 +270,89 @@ struct _GdlDockItemClass {
*
* Evaluates to %TRUE the item cannot be iconifyed.
*/
-#define GDL_DOCK_ITEM_CANT_ICONIFY(item) \
- ((((item)->behavior & GDL_DOCK_ITEM_BEH_CANT_ICONIFY) != 0)|| \
- ! GDL_DOCK_ITEM_NOT_LOCKED(item))
+#define GDL_DOCK_ITEM_CANT_ICONIFY(item) ((gdl_dock_item_get_behavior_flags(item) & GDL_DOCK_ITEM_BEH_CANT_ICONIFY) != 0)
/* public interface */
-GtkWidget *gdl_dock_item_new (const gchar *name,
- const gchar *long_name,
- GdlDockItemBehavior behavior);
-GtkWidget *gdl_dock_item_new_with_stock (const gchar *name,
- const gchar *long_name,
- const gchar *stock_id,
- GdlDockItemBehavior behavior);
-
-GtkWidget *gdl_dock_item_new_with_pixbuf_icon (const gchar *name,
- const gchar *long_name,
- const GdkPixbuf *pixbuf_icon,
- GdlDockItemBehavior behavior);
-
-GType gdl_dock_item_get_type (void);
-
-void gdl_dock_item_dock_to (GdlDockItem *item,
- GdlDockItem *target,
- GdlDockPlacement position,
- gint docking_param);
-
-void gdl_dock_item_set_orientation (GdlDockItem *item,
- GtkOrientation orientation);
-
-GtkWidget *gdl_dock_item_get_tablabel (GdlDockItem *item);
-void gdl_dock_item_set_tablabel (GdlDockItem *item,
- GtkWidget *tablabel);
-GtkWidget *gdl_dock_item_get_grip (GdlDockItem *item);
-void gdl_dock_item_hide_grip (GdlDockItem *item);
-void gdl_dock_item_show_grip (GdlDockItem *item);
-void gdl_dock_item_notify_selected (GdlDockItem *item);
-void gdl_dock_item_notify_deselected (GdlDockItem *item);
+GtkWidget *gdl_dock_item_new (const gchar *name,
+ const gchar *long_name,
+ GdlDockItemBehavior behavior);
+GtkWidget *gdl_dock_item_new_with_stock (const gchar *name,
+ const gchar *long_name,
+ const gchar *stock_id,
+ GdlDockItemBehavior behavior);
+
+GtkWidget *gdl_dock_item_new_with_pixbuf_icon (const gchar *name,
+ const gchar *long_name,
+ const GdkPixbuf *pixbuf_icon,
+ GdlDockItemBehavior behavior);
+
+GType gdl_dock_item_get_type (void);
+
+void gdl_dock_item_dock_to (GdlDockItem *item,
+ GdlDockItem *target,
+ GdlDockPlacement position,
+ gint docking_param);
+
+void gdl_dock_item_set_orientation (GdlDockItem *item,
+ GtkOrientation orientation);
+GtkOrientation gdl_dock_item_get_orientation (GdlDockItem *item);
+
+void gdl_dock_item_set_behavior_flags (GdlDockItem *item,
+ GdlDockItemBehavior behavior,
+ gboolean clear);
+void gdl_dock_item_unset_behavior_flags (GdlDockItem *item,
+ GdlDockItemBehavior behavior);
+GdlDockItemBehavior gdl_dock_item_get_behavior_flags (GdlDockItem *item);
+
+GtkWidget *gdl_dock_item_get_tablabel (GdlDockItem *item);
+void gdl_dock_item_set_tablabel (GdlDockItem *item,
+ GtkWidget *tablabel);
+GtkWidget *gdl_dock_item_get_grip (GdlDockItem *item);
+void gdl_dock_item_hide_grip (GdlDockItem *item);
+void gdl_dock_item_show_grip (GdlDockItem *item);
+void gdl_dock_item_notify_selected (GdlDockItem *item);
+void gdl_dock_item_notify_deselected (GdlDockItem *item);
/* bind and unbind items to a dock */
-void gdl_dock_item_bind (GdlDockItem *item,
- GtkWidget *dock);
+void gdl_dock_item_bind (GdlDockItem *item,
+ GtkWidget *dock);
+
+void gdl_dock_item_unbind (GdlDockItem *item);
+
+void gdl_dock_item_hide_item (GdlDockItem *item);
+
+void gdl_dock_item_iconify_item (GdlDockItem *item);
+
+void gdl_dock_item_show_item (GdlDockItem *item);
-void gdl_dock_item_unbind (GdlDockItem *item);
+void gdl_dock_item_lock (GdlDockItem *item);
-void gdl_dock_item_hide_item (GdlDockItem *item);
+void gdl_dock_item_unlock (GdlDockItem *item);
-void gdl_dock_item_iconify_item (GdlDockItem *item);
+void gdl_dock_item_set_default_position (GdlDockItem *item,
+ GdlDockObject *reference);
-void gdl_dock_item_show_item (GdlDockItem *item);
+void gdl_dock_item_preferred_size (GdlDockItem *item,
+ GtkRequisition *req);
+void gdl_dock_item_get_drag_area (GdlDockItem *item,
+ GdkRectangle *rect);
-void gdl_dock_item_lock (GdlDockItem *item);
+gboolean gdl_dock_item_or_child_has_focus (GdlDockItem *item);
-void gdl_dock_item_unlock (GdlDockItem *item);
+gboolean gdl_dock_item_is_placeholder (GdlDockItem *item);
-void gdl_dock_item_set_default_position (GdlDockItem *item,
- GdlDockObject *reference);
+gboolean gdl_dock_item_is_closed (GdlDockItem *item);
-void gdl_dock_item_preferred_size (GdlDockItem *item,
- GtkRequisition *req);
+gboolean gdl_dock_item_is_iconified (GdlDockItem *item);
-gboolean gdl_dock_item_or_child_has_focus (GdlDockItem *item);
+void gdl_dock_item_set_child (GdlDockItem *item,
+ GtkWidget *child);
+GtkWidget* gdl_dock_item_get_child (GdlDockItem *item);
-gboolean gdl_dock_item_is_placeholder (GdlDockItem *item);
+void gdl_dock_item_class_set_has_grip (GdlDockItemClass *item_class,
+ gboolean has_grip);
-gboolean gdl_dock_item_is_closed (GdlDockItem *item);
G_END_DECLS
diff --git a/gdl/gdl-dock-master.c b/gdl/gdl-dock-master.c
index 09df6d3..55912f8 100644
--- a/gdl/gdl-dock-master.c
+++ b/gdl/gdl-dock-master.c
@@ -601,10 +601,9 @@ gdl_dock_master_drag_motion (GdlDockItem *item,
if (!may_dock) {
- GtkRequisition req;
/* Special case for GdlDockItems : they must respect the flags */
if(GDL_IS_DOCK_ITEM(item)
- && GDL_DOCK_ITEM(item)->behavior & GDL_DOCK_ITEM_BEH_NEVER_FLOATING)
+ && gdl_dock_item_get_behavior_flags (GDL_DOCK_ITEM(item)) & GDL_DOCK_ITEM_BEH_NEVER_FLOATING)
return;
dock = NULL;
@@ -612,12 +611,9 @@ gdl_dock_master_drag_motion (GdlDockItem *item,
gdl_dock_object_get_toplevel (request->applicant));
my_request.position = GDL_DOCK_FLOATING;
- gdl_dock_item_preferred_size (GDL_DOCK_ITEM (request->applicant), &req);
- my_request.rect.width = req.width;
- my_request.rect.height = req.height;
-
- my_request.rect.x = root_x - GDL_DOCK_ITEM (request->applicant)->dragoff_x;
- my_request.rect.y = root_y - GDL_DOCK_ITEM (request->applicant)->dragoff_y;
+ gdl_dock_item_get_drag_area (GDL_DOCK_ITEM (request->applicant), &my_request.rect);
+ my_request.rect.x = root_x - my_request.rect.x;
+ my_request.rect.y = root_y - my_request.rect.y;
/* setup extra docking information */
if (G_IS_VALUE (&my_request.extra))
@@ -631,7 +627,7 @@ gdl_dock_master_drag_motion (GdlDockItem *item,
/* it could be inserted in another floating dock */
/* so check for the flag at this moment */
else if(GDL_IS_DOCK_ITEM(item)
- && GDL_DOCK_ITEM(item)->behavior & GDL_DOCK_ITEM_BEH_NEVER_FLOATING
+ && gdl_dock_item_get_behavior_flags (GDL_DOCK_ITEM(item)) & GDL_DOCK_ITEM_BEH_NEVER_FLOATING
&& dock != GDL_DOCK(master->priv->controller))
return;
@@ -886,9 +882,9 @@ gdl_dock_master_add (GdlDockMaster *master,
/* If the item is notebook, set the switcher style */
if (GDL_IS_DOCK_NOTEBOOK (object) &&
- GDL_IS_SWITCHER (GDL_DOCK_ITEM (object)->child))
+ GDL_IS_SWITCHER (gdl_dock_item_get_child (GDL_DOCK_ITEM (object))))
{
- g_object_set (GDL_DOCK_ITEM (object)->child, "switcher-style",
+ g_object_set (gdl_dock_item_get_child (GDL_DOCK_ITEM (object)), "switcher-style",
master->priv->switcher_style, NULL);
}
@@ -1098,7 +1094,7 @@ set_switcher_style_foreach (GtkWidget *obj, gpointer user_data)
if (GDL_IS_DOCK_NOTEBOOK (obj)) {
- GtkWidget *child = GDL_DOCK_ITEM (obj)->child;
+ GtkWidget *child = gdl_dock_item_get_child (GDL_DOCK_ITEM (obj));
if (GDL_IS_SWITCHER (child)) {
g_object_set (child, "switcher-style", style, NULL);
diff --git a/gdl/gdl-dock-notebook.c b/gdl/gdl-dock-notebook.c
index 013dffe..a0705e5 100644
--- a/gdl/gdl-dock-notebook.c
+++ b/gdl/gdl-dock-notebook.c
@@ -148,7 +148,7 @@ gdl_dock_notebook_class_init (GdlDockNotebookClass *klass)
object_class->present = gdl_dock_notebook_present;
object_class->reorder = gdl_dock_notebook_reorder;
- item_class->has_grip = FALSE;
+ gdl_dock_item_class_set_has_grip (item_class, FALSE);
item_class->set_orientation = gdl_dock_notebook_set_orientation;
g_object_class_install_property (
@@ -194,6 +194,7 @@ static void
gdl_dock_notebook_init (GdlDockNotebook *notebook)
{
GdlDockItem *item = GDL_DOCK_ITEM (notebook);
+ GtkWidget *child;
notebook->priv = G_TYPE_INSTANCE_GET_PRIVATE (notebook,
GDL_TYPE_DOCK_NOTEBOOK,
@@ -201,19 +202,19 @@ gdl_dock_notebook_init (GdlDockNotebook *notebook)
notebook->priv->user_action = FALSE;
/* create the container notebook */
- item->child = gdl_switcher_new ();
- gtk_widget_set_parent (item->child, GTK_WIDGET (notebook));
- gtk_notebook_set_tab_pos (GTK_NOTEBOOK (item->child), GTK_POS_BOTTOM);
- g_signal_connect (item->child, "switch-page",
+ child = gdl_switcher_new ();
+ gdl_dock_item_set_child (item, child);
+ gtk_notebook_set_tab_pos (GTK_NOTEBOOK (child), GTK_POS_BOTTOM);
+ g_signal_connect (child, "switch-page",
(GCallback) gdl_dock_notebook_switch_page_cb, (gpointer) item);
- g_signal_connect (item->child, "notify::page",
+ g_signal_connect (child, "notify::page",
(GCallback) gdl_dock_notebook_notify_cb, (gpointer) item);
- g_signal_connect (item->child, "button-press-event",
+ g_signal_connect (child, "button-press-event",
(GCallback) gdl_dock_notebook_button_cb, (gpointer) item);
- g_signal_connect (item->child, "button-release-event",
+ g_signal_connect (child, "button-release-event",
(GCallback) gdl_dock_notebook_button_cb, (gpointer) item);
- gtk_notebook_set_scrollable (GTK_NOTEBOOK (item->child), TRUE);
- gtk_widget_show (item->child);
+ gtk_notebook_set_scrollable (GTK_NOTEBOOK (child), TRUE);
+ gtk_widget_show (child);
}
static void
@@ -223,11 +224,13 @@ gdl_dock_notebook_set_property (GObject *object,
GParamSpec *pspec)
{
GdlDockItem *item = GDL_DOCK_ITEM (object);
+ GtkWidget *child;
switch (prop_id) {
case PROP_PAGE:
- if (item->child && GTK_IS_NOTEBOOK (item->child)) {
- gtk_notebook_set_current_page (GTK_NOTEBOOK (item->child),
+ child = gdl_dock_item_get_child (item);
+ if (child && GTK_IS_NOTEBOOK (child)) {
+ gtk_notebook_set_current_page (GTK_NOTEBOOK (child),
g_value_get_int (value));
}
@@ -245,12 +248,14 @@ gdl_dock_notebook_get_property (GObject *object,
GParamSpec *pspec)
{
GdlDockItem *item = GDL_DOCK_ITEM (object);
+ GtkWidget *child;
switch (prop_id) {
case PROP_PAGE:
- if (item->child && GTK_IS_NOTEBOOK (item->child)) {
+ child = gdl_dock_item_get_child (item);
+ if (child && GTK_IS_NOTEBOOK (child)) {
g_value_set_int (value, gtk_notebook_get_current_page
- (GTK_NOTEBOOK (item->child)));
+ (GTK_NOTEBOOK (child)));
}
break;
@@ -271,10 +276,7 @@ gdl_dock_notebook_destroy (GtkWidget *object)
GTK_WIDGET_CLASS (gdl_dock_notebook_parent_class)->destroy (object);
/* after that we can remove the GtkNotebook */
- if (item->child) {
- gtk_widget_unparent (item->child);
- item->child = NULL;
- };
+ gdl_dock_item_set_child (item, NULL);
}
static void
@@ -326,6 +328,7 @@ gdl_dock_notebook_forall (GtkContainer *container,
gpointer callback_data)
{
GdlDockItem *item;
+ GtkWidget *child;
g_return_if_fail (container != NULL);
g_return_if_fail (GDL_IS_DOCK_NOTEBOOK (container));
@@ -338,8 +341,9 @@ gdl_dock_notebook_forall (GtkContainer *container,
}
else {
item = GDL_DOCK_ITEM (container);
- if (item->child)
- gtk_container_foreach (GTK_CONTAINER (item->child), callback, callback_data);
+ child = gdl_dock_item_get_child (GDL_DOCK_ITEM (container));
+ if (child)
+ gtk_container_foreach (GTK_CONTAINER (child), callback, callback_data);
}
}
@@ -412,7 +416,7 @@ gdl_dock_notebook_dock (GdlDockObject *object,
if (other_data && G_VALUE_HOLDS (other_data, G_TYPE_INT))
position = g_value_get_int (other_data);
- position = gdl_switcher_insert_page (GDL_SWITCHER (item->child),
+ position = gdl_switcher_insert_page (GDL_SWITCHER (gdl_dock_item_get_child (item)),
GTK_WIDGET (requestor), label,
long_name, long_name,
stock_id, pixbuf_icon, position);
@@ -421,7 +425,7 @@ gdl_dock_notebook_dock (GdlDockObject *object,
/* Set current page to the newly docked widget. set current page
* really doesn't work if the page widget is not shown
*/
- gtk_notebook_set_current_page (GTK_NOTEBOOK (item->child),
+ gtk_notebook_set_current_page (GTK_NOTEBOOK (gdl_dock_item_get_child (item)),
position);
}
g_free (long_name);
@@ -436,11 +440,13 @@ static void
gdl_dock_notebook_set_orientation (GdlDockItem *item,
GtkOrientation orientation)
{
- if (item->child && GTK_IS_NOTEBOOK (item->child)) {
+ GtkWidget *child = gdl_dock_item_get_child (item);
+
+ if (child && GTK_IS_NOTEBOOK (child)) {
if (orientation == GTK_ORIENTATION_HORIZONTAL)
- gtk_notebook_set_tab_pos (GTK_NOTEBOOK (item->child), GTK_POS_TOP);
+ gtk_notebook_set_tab_pos (GTK_NOTEBOOK (child), GTK_POS_TOP);
else
- gtk_notebook_set_tab_pos (GTK_NOTEBOOK (item->child), GTK_POS_LEFT);
+ gtk_notebook_set_tab_pos (GTK_NOTEBOOK (child), GTK_POS_LEFT);
}
GDL_DOCK_ITEM_CLASS (gdl_dock_notebook_parent_class)->set_orientation (item, orientation);
@@ -454,10 +460,10 @@ gdl_dock_notebook_child_placement (GdlDockObject *object,
GdlDockItem *item = GDL_DOCK_ITEM (object);
GdlDockPlacement pos = GDL_DOCK_NONE;
- if (item->child) {
+ if (gdl_dock_item_get_child (item)) {
GList *children, *l;
- children = gtk_container_get_children (GTK_CONTAINER (item->child));
+ children = gtk_container_get_children (GTK_CONTAINER (gdl_dock_item_get_child (item)));
for (l = children; l; l = l->next) {
if (l->data == (gpointer) child) {
pos = GDL_DOCK_CENTER;
@@ -480,13 +486,13 @@ static void
gdl_dock_notebook_present (GdlDockObject *object,
GdlDockObject *child)
{
- GdlDockItem *item = GDL_DOCK_ITEM (object);
+ GtkWidget *notebook = gdl_dock_item_get_child (GDL_DOCK_ITEM (object));
int i;
- i = gtk_notebook_page_num (GTK_NOTEBOOK (item->child),
+ i = gtk_notebook_page_num (GTK_NOTEBOOK (notebook),
GTK_WIDGET (child));
if (i >= 0)
- gtk_notebook_set_current_page (GTK_NOTEBOOK (item->child), i);
+ gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), i);
GDL_DOCK_OBJECT_CLASS (gdl_dock_notebook_parent_class)->present (object, child);
}
@@ -497,12 +503,12 @@ gdl_dock_notebook_reorder (GdlDockObject *object,
GdlDockPlacement new_position,
GValue *other_data)
{
- GdlDockItem *item = GDL_DOCK_ITEM (object);
+ GtkWidget *child = gdl_dock_item_get_child (GDL_DOCK_ITEM (object));
gint current_position, new_pos = -1;
gboolean handled = FALSE;
- if (item->child && new_position == GDL_DOCK_CENTER) {
- current_position = gtk_notebook_page_num (GTK_NOTEBOOK (item->child),
+ if (child && new_position == GDL_DOCK_CENTER) {
+ current_position = gtk_notebook_page_num (GTK_NOTEBOOK (child),
GTK_WIDGET (requestor));
if (current_position >= 0) {
handled = TRUE;
@@ -510,7 +516,7 @@ gdl_dock_notebook_reorder (GdlDockObject *object,
if (other_data && G_VALUE_HOLDS (other_data, G_TYPE_INT))
new_pos = g_value_get_int (other_data);
- gtk_notebook_reorder_child (GTK_NOTEBOOK (item->child),
+ gtk_notebook_reorder_child (GTK_NOTEBOOK (child),
GTK_WIDGET (requestor),
new_pos);
}
diff --git a/gdl/gdl-dock-paned.c b/gdl/gdl-dock-paned.c
index b446924..ed8637e 100644
--- a/gdl/gdl-dock-paned.c
+++ b/gdl/gdl-dock-paned.c
@@ -138,7 +138,7 @@ gdl_dock_paned_class_init (GdlDockPanedClass *klass)
object_class->dock = gdl_dock_paned_dock;
object_class->child_placement = gdl_dock_paned_child_placement;
- item_class->has_grip = FALSE;
+ gdl_dock_item_class_set_has_grip (item_class, FALSE);
item_class->set_orientation = gdl_dock_paned_set_orientation;
g_object_class_install_property (
@@ -212,25 +212,23 @@ gdl_dock_paned_create_child (GdlDockPaned *paned,
GtkOrientation orientation)
{
GdlDockItem *item;
+ GtkWidget *child;
item = GDL_DOCK_ITEM (paned);
- if (item->child)
- gtk_widget_unparent (GTK_WIDGET (item->child));
-
/* create the container paned */
- item->child = gtk_paned_new (orientation);
+ child = gtk_paned_new (orientation);
+ gdl_dock_item_set_child (item, child);
/* get notification for propagation */
- g_signal_connect (item->child, "notify::position",
+ g_signal_connect (child, "notify::position",
(GCallback) gdl_dock_paned_notify_cb, (gpointer) item);
- g_signal_connect (item->child, "button-press-event",
+ g_signal_connect (child, "button-press-event",
(GCallback) gdl_dock_paned_button_cb, (gpointer) item);
- g_signal_connect (item->child, "button-release-event",
+ g_signal_connect (child, "button-release-event",
(GCallback) gdl_dock_paned_button_cb, (gpointer) item);
- gtk_widget_set_parent (item->child, GTK_WIDGET (item));
- gtk_widget_show (item->child);
+ gtk_widget_show (child);
}
static GObject *
@@ -246,9 +244,9 @@ gdl_dock_paned_constructor (GType type,
if (g_object) {
GdlDockItem *item = GDL_DOCK_ITEM (g_object);
- if (!item->child)
+ if (!gdl_dock_item_get_child (item))
gdl_dock_paned_create_child (GDL_DOCK_PANED (g_object),
- item->orientation);
+ gdl_dock_item_get_orientation (item));
/* otherwise, the orientation was set as a construction
parameter and the child is already created */
}
@@ -263,11 +261,13 @@ gdl_dock_paned_set_property (GObject *object,
GParamSpec *pspec)
{
GdlDockItem *item = GDL_DOCK_ITEM (object);
+ GtkWidget *child;
switch (prop_id) {
case PROP_POSITION:
- if (item->child && GTK_IS_PANED (item->child))
- gtk_paned_set_position (GTK_PANED (item->child),
+ child = gdl_dock_item_get_child (item);
+ if (child && GTK_IS_PANED (child))
+ gtk_paned_set_position (GTK_PANED (child),
g_value_get_uint (value));
break;
default:
@@ -283,12 +283,14 @@ gdl_dock_paned_get_property (GObject *object,
GParamSpec *pspec)
{
GdlDockItem *item = GDL_DOCK_ITEM (object);
+ GtkWidget *child;
switch (prop_id) {
case PROP_POSITION:
- if (item->child && GTK_IS_PANED (item->child))
+ child = gdl_dock_item_get_child (item);
+ if (child && GTK_IS_PANED (child))
g_value_set_uint (value,
- gtk_paned_get_position (GTK_PANED (item->child)));
+ gtk_paned_get_position (GTK_PANED (child)));
else
g_value_set_uint (value, 0);
break;
@@ -309,10 +311,7 @@ gdl_dock_paned_destroy (GtkWidget *object)
/* after that we can remove the GtkNotebook */
- if (item->child) {
- gtk_widget_unparent (item->child);
- item->child = NULL;
- };
+ gdl_dock_item_set_child (item, NULL);
}
static void
@@ -329,18 +328,18 @@ gdl_dock_paned_add (GtkContainer *container,
g_return_if_fail (GDL_IS_DOCK_ITEM (widget));
item = GDL_DOCK_ITEM (container);
- g_return_if_fail (item->child != NULL);
+ g_return_if_fail (gdl_dock_item_get_child (item) != NULL);
- paned = GTK_PANED (item->child);
+ paned = GTK_PANED (gdl_dock_item_get_child (item));
child1 = gtk_paned_get_child1 (paned);
child2 = gtk_paned_get_child2 (paned);
g_return_if_fail (!child1 || !child2);
if (!child1)
- pos = item->orientation == GTK_ORIENTATION_HORIZONTAL ?
+ pos = gdl_dock_item_get_orientation (item) == GTK_ORIENTATION_HORIZONTAL ?
GDL_DOCK_LEFT : GDL_DOCK_TOP;
else if (!child2)
- pos = item->orientation == GTK_ORIENTATION_HORIZONTAL ?
+ pos = gdl_dock_item_get_orientation (item) == GTK_ORIENTATION_HORIZONTAL ?
GDL_DOCK_RIGHT : GDL_DOCK_BOTTOM;
if (pos != GDL_DOCK_NONE)
@@ -355,7 +354,7 @@ gdl_dock_paned_forall (GtkContainer *container,
GtkCallback callback,
gpointer callback_data)
{
- GdlDockItem *item;
+ GtkWidget *child;
g_return_if_fail (container != NULL);
g_return_if_fail (GDL_IS_DOCK_PANED (container));
@@ -367,18 +366,18 @@ gdl_dock_paned_forall (GtkContainer *container,
(container, include_internals, callback, callback_data);
}
else {
- item = GDL_DOCK_ITEM (container);
- if (item->child)
- gtk_container_foreach (GTK_CONTAINER (item->child), callback, callback_data);
+ child = gdl_dock_item_get_child (GDL_DOCK_ITEM (container));
+ if (child)
+ gtk_container_foreach (GTK_CONTAINER (child), callback, callback_data);
}
}
static GType
gdl_dock_paned_child_type (GtkContainer *container)
{
- GdlDockItem *item = GDL_DOCK_ITEM (container);
+ GtkWidget *child = gdl_dock_item_get_child (GDL_DOCK_ITEM (container));
- if (gtk_container_child_type (GTK_CONTAINER (item->child)) == G_TYPE_NONE)
+ if (gtk_container_child_type (GTK_CONTAINER (child)) == G_TYPE_NONE)
return G_TYPE_NONE;
else
return GDL_TYPE_DOCK_ITEM;
@@ -510,7 +509,7 @@ gdl_dock_paned_dock_request (GdlDockObject *object,
/* the pointer is on the handle, so snap to top/bottom
or left/right */
may_dock = TRUE;
- if (item->orientation == GTK_ORIENTATION_HORIZONTAL) {
+ if (gdl_dock_item_get_orientation (item) == GTK_ORIENTATION_HORIZONTAL) {
if (rel_y < alloc.height / 2) {
my_request.position = GDL_DOCK_TOP;
my_request.rect.height *= SPLIT_RATIO;
@@ -571,9 +570,9 @@ gdl_dock_paned_dock (GdlDockObject *object,
gint temp = 0;
g_return_if_fail (GDL_IS_DOCK_PANED (object));
- g_return_if_fail (GDL_DOCK_ITEM (object)->child != NULL);
+ g_return_if_fail (gdl_dock_item_get_child (GDL_DOCK_ITEM (object)) != NULL);
- paned = GTK_PANED (GDL_DOCK_ITEM (object)->child);
+ paned = GTK_PANED (gdl_dock_item_get_child (GDL_DOCK_ITEM (object)));
if (GDL_IS_DOCK_ITEM (requestor)) {
g_object_get (G_OBJECT (requestor), "preferred_height", &temp, NULL);
@@ -589,7 +588,7 @@ gdl_dock_paned_dock (GdlDockObject *object,
child2 = gtk_paned_get_child2 (paned);
/* see if we can dock the item in our paned */
- switch (GDL_DOCK_ITEM (object)->orientation) {
+ switch (gdl_dock_item_get_orientation (GDL_DOCK_ITEM (object))) {
case GTK_ORIENTATION_HORIZONTAL:
if (!child1 && position == GDL_DOCK_LEFT) {
gtk_paned_pack1 (paned, GTK_WIDGET (requestor), TRUE, TRUE);
@@ -632,17 +631,16 @@ gdl_dock_paned_set_orientation (GdlDockItem *item,
g_return_if_fail (GDL_IS_DOCK_PANED (item));
- if (item->child) {
- old_paned = GTK_PANED (item->child);
+ if (gdl_dock_item_get_child (item)) {
+ old_paned = GTK_PANED (gdl_dock_item_get_child (item));
g_object_ref (old_paned);
- gtk_widget_unparent (GTK_WIDGET (old_paned));
- item->child = NULL;
+ gdl_dock_item_set_child (item, NULL);
}
gdl_dock_paned_create_child (GDL_DOCK_PANED (item), orientation);
if (old_paned) {
- new_paned = GTK_PANED (item->child);
+ new_paned = GTK_PANED (gdl_dock_item_get_child (item));
child1 = gtk_paned_get_child1 (old_paned);
child2 = gtk_paned_get_child2 (old_paned);
@@ -672,13 +670,13 @@ gdl_dock_paned_child_placement (GdlDockObject *object,
GtkPaned *paned;
GdlDockPlacement pos = GDL_DOCK_NONE;
- if (item->child) {
- paned = GTK_PANED (item->child);
+ if (gdl_dock_item_get_child (item)) {
+ paned = GTK_PANED (gdl_dock_item_get_child (item));
if (GTK_WIDGET (child) == gtk_paned_get_child1 (paned))
- pos = item->orientation == GTK_ORIENTATION_HORIZONTAL ?
+ pos = gdl_dock_item_get_orientation (item) == GTK_ORIENTATION_HORIZONTAL ?
GDL_DOCK_LEFT : GDL_DOCK_TOP;
else if (GTK_WIDGET (child) == gtk_paned_get_child2 (paned))
- pos = item->orientation == GTK_ORIENTATION_HORIZONTAL ?
+ pos = gdl_dock_item_get_orientation (item) == GTK_ORIENTATION_HORIZONTAL ?
GDL_DOCK_RIGHT : GDL_DOCK_BOTTOM;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]