Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Dorota Czaplejewicz
gtk
Commits
83372be9
Commit
83372be9
authored
Aug 11, 2010
by
Javier Jardón
Browse files
gtk/gtkcontainer.c: use accessor functions to access GtkWidget
parent
4def73b3
Changes
1
Hide whitespace changes
Inline
Side-by-side
gtk/gtkcontainer.c
View file @
83372be9
...
...
@@ -324,7 +324,8 @@ gtk_container_buildable_add_child (GtkBuildable *buildable,
{
GTK_BUILDER_WARN_INVALID_CHILD_TYPE
(
buildable
,
type
);
}
else
if
(
GTK_IS_WIDGET
(
child
)
&&
GTK_WIDGET
(
child
)
->
parent
==
NULL
)
else
if
(
GTK_IS_WIDGET
(
child
)
&&
gtk_widget_get_parent
(
GTK_WIDGET
(
child
))
==
NULL
)
{
gtk_container_add
(
GTK_CONTAINER
(
buildable
),
GTK_WIDGET
(
child
));
}
...
...
@@ -610,7 +611,7 @@ gtk_container_child_get_valist (GtkContainer *container,
g_return_if_fail
(
GTK_IS_CONTAINER
(
container
));
g_return_if_fail
(
GTK_IS_WIDGET
(
child
));
g_return_if_fail
(
child
->
parent
==
GTK_WIDGET
(
container
));
g_return_if_fail
(
gtk_widget_get_parent
(
child
)
==
GTK_WIDGET
(
container
));
g_object_ref
(
container
);
g_object_ref
(
child
);
...
...
@@ -679,7 +680,7 @@ gtk_container_child_get_property (GtkContainer *container,
g_return_if_fail
(
GTK_IS_CONTAINER
(
container
));
g_return_if_fail
(
GTK_IS_WIDGET
(
child
));
g_return_if_fail
(
child
->
parent
==
GTK_WIDGET
(
container
));
g_return_if_fail
(
gtk_widget_get_parent
(
child
)
==
GTK_WIDGET
(
container
));
g_return_if_fail
(
property_name
!=
NULL
);
g_return_if_fail
(
G_IS_VALUE
(
value
));
...
...
@@ -755,7 +756,7 @@ gtk_container_child_set_valist (GtkContainer *container,
g_return_if_fail
(
GTK_IS_CONTAINER
(
container
));
g_return_if_fail
(
GTK_IS_WIDGET
(
child
));
g_return_if_fail
(
child
->
parent
==
GTK_WIDGET
(
container
));
g_return_if_fail
(
gtk_widget_get_parent
(
child
)
==
GTK_WIDGET
(
container
));
g_object_ref
(
container
);
g_object_ref
(
child
);
...
...
@@ -828,7 +829,7 @@ gtk_container_child_set_property (GtkContainer *container,
g_return_if_fail
(
GTK_IS_CONTAINER
(
container
));
g_return_if_fail
(
GTK_IS_WIDGET
(
child
));
g_return_if_fail
(
child
->
parent
==
GTK_WIDGET
(
container
));
g_return_if_fail
(
gtk_widget_get_parent
(
child
)
==
GTK_WIDGET
(
container
));
g_return_if_fail
(
property_name
!=
NULL
);
g_return_if_fail
(
G_IS_VALUE
(
value
));
...
...
@@ -876,14 +877,14 @@ gtk_container_add_with_properties (GtkContainer *container,
{
g_return_if_fail
(
GTK_IS_CONTAINER
(
container
));
g_return_if_fail
(
GTK_IS_WIDGET
(
widget
));
g_return_if_fail
(
widget
->
parent
==
NULL
);
g_return_if_fail
(
gtk_
widget
_get_
parent
(
widget
)
==
NULL
);
g_object_ref
(
container
);
g_object_ref
(
widget
);
gtk_widget_freeze_child_notify
(
widget
);
g_signal_emit
(
container
,
container_signals
[
ADD
],
0
,
widget
);
if
(
widget
->
parent
)
if
(
gtk_
widget
_get_
parent
(
widget
)
)
{
va_list
var_args
;
...
...
@@ -917,7 +918,7 @@ gtk_container_child_set (GtkContainer *container,
g_return_if_fail
(
GTK_IS_CONTAINER
(
container
));
g_return_if_fail
(
GTK_IS_WIDGET
(
child
));
g_return_if_fail
(
child
->
parent
==
GTK_WIDGET
(
container
));
g_return_if_fail
(
gtk_widget_get_parent
(
child
)
==
GTK_WIDGET
(
container
));
va_start
(
var_args
,
first_prop_name
);
gtk_container_child_set_valist
(
container
,
child
,
first_prop_name
,
var_args
);
...
...
@@ -944,7 +945,7 @@ gtk_container_child_get (GtkContainer *container,
g_return_if_fail
(
GTK_IS_CONTAINER
(
container
));
g_return_if_fail
(
GTK_IS_WIDGET
(
child
));
g_return_if_fail
(
child
->
parent
==
GTK_WIDGET
(
container
));
g_return_if_fail
(
gtk_widget_get_parent
(
child
)
==
GTK_WIDGET
(
container
));
va_start
(
var_args
,
first_prop_name
);
gtk_container_child_get_valist
(
container
,
child
,
first_prop_name
,
var_args
);
...
...
@@ -1208,10 +1209,14 @@ void
gtk_container_add
(
GtkContainer
*
container
,
GtkWidget
*
widget
)
{
GtkWidget
*
parent
;
g_return_if_fail
(
GTK_IS_CONTAINER
(
container
));
g_return_if_fail
(
GTK_IS_WIDGET
(
widget
));
if
(
widget
->
parent
!=
NULL
)
parent
=
gtk_widget_get_parent
(
widget
);
if
(
parent
!=
NULL
)
{
g_warning
(
"Attempting to add a widget with type %s to a container of "
"type %s, but the widget is already inside a container of type %s, "
...
...
@@ -1219,7 +1224,7 @@ gtk_container_add (GtkContainer *container,
"explains how to reparent a widget."
,
g_type_name
(
G_OBJECT_TYPE
(
widget
)),
g_type_name
(
G_OBJECT_TYPE
(
container
)),
g_type_name
(
G_OBJECT_TYPE
(
widget
->
parent
)));
g_type_name
(
G_OBJECT_TYPE
(
parent
)));
return
;
}
...
...
@@ -1253,8 +1258,8 @@ gtk_container_remove (GtkContainer *container,
* a direct child of the container.
*/
g_return_if_fail
(
GTK_IS_TOOLBAR
(
container
)
||
widget
->
parent
==
GTK_WIDGET
(
container
));
gtk_
widget
_get_
parent
(
widget
)
==
GTK_WIDGET
(
container
));
g_signal_emit
(
container
,
container_signals
[
REMOVE
],
0
,
widget
);
}
...
...
@@ -1344,11 +1349,12 @@ gtk_container_set_reallocate_redraws (GtkContainer *container,
static
GtkContainer
*
gtk_container_get_resize_container
(
GtkContainer
*
container
)
{
GtkWidget
*
parent
;
GtkWidget
*
widget
=
GTK_WIDGET
(
container
);
while
(
widget
->
parent
)
while
(
parent
=
gtk_
widget
_get_
parent
(
widget
)
)
{
widget
=
widget
->
parent
;
widget
=
parent
;
if
(
GTK_IS_RESIZE_CONTAINER
(
widget
))
break
;
}
...
...
@@ -1389,6 +1395,7 @@ _gtk_container_queue_resize (GtkContainer *container)
{
GtkContainerPriv
*
priv
;
GtkContainer
*
resize_container
;
GtkWidget
*
parent
;
GtkWidget
*
widget
;
g_return_if_fail
(
GTK_IS_CONTAINER
(
container
));
...
...
@@ -1406,10 +1413,10 @@ _gtk_container_queue_resize (GtkContainer *container)
GTK_PRIVATE_SET_FLAG
(
widget
,
GTK_HEIGHT_REQUEST_NEEDED
);
if
((
resize_container
&&
widget
==
GTK_WIDGET
(
resize_container
))
||
!
widget
->
parent
)
!
(
parent
=
gtk_
widget
_get_
parent
(
widget
))
)
break
;
widget
=
widget
->
parent
;
widget
=
parent
;
}
if
(
resize_container
)
...
...
@@ -1464,16 +1471,20 @@ static void
gtk_container_real_check_resize
(
GtkContainer
*
container
)
{
GtkWidget
*
widget
=
GTK_WIDGET
(
container
);
GtkAllocation
allocation
;
GtkRequisition
requisition
;
gtk_widget_size_request
(
widget
,
&
requisition
);
if
(
requisition
.
width
>
widget
->
allocation
.
width
||
requisition
.
height
>
widget
->
allocation
.
height
)
gtk_widget_get_allocation
(
widget
,
&
allocation
);
if
(
requisition
.
width
>
allocation
.
width
||
requisition
.
height
>
allocation
.
height
)
{
if
(
GTK_IS_RESIZE_CONTAINER
(
container
))
gtk_widget_size_allocate
(
GTK_WIDGET
(
container
),
&
GTK_WIDGET
(
container
)
->
allocation
);
{
gtk_widget_size_allocate
(
widget
,
&
allocation
);
gtk_widget_set_allocation
(
widget
,
&
allocation
);
}
else
gtk_widget_queue_resize
(
widget
);
}
...
...
@@ -1493,6 +1504,7 @@ gtk_container_real_check_resize (GtkContainer *container)
void
gtk_container_resize_children
(
GtkContainer
*
container
)
{
GtkAllocation
allocation
;
GtkWidget
*
widget
;
/* resizing invariants:
...
...
@@ -1503,7 +1515,10 @@ gtk_container_resize_children (GtkContainer *container)
g_return_if_fail
(
GTK_IS_CONTAINER
(
container
));
widget
=
GTK_WIDGET
(
container
);
gtk_widget_size_allocate
(
widget
,
&
widget
->
allocation
);
gtk_widget_get_allocation
(
widget
,
&
allocation
);
gtk_widget_size_allocate
(
widget
,
&
allocation
);
gtk_widget_set_allocation
(
widget
,
&
allocation
);
}
/**
...
...
@@ -1673,7 +1688,7 @@ _gtk_container_child_composite_name (GtkContainer *container,
g_return_val_if_fail
(
GTK_IS_CONTAINER
(
container
),
NULL
);
g_return_val_if_fail
(
GTK_IS_WIDGET
(
child
),
NULL
);
g_return_val_if_fail
(
child
->
parent
==
GTK_WIDGET
(
container
),
NULL
);
g_return_val_if_fail
(
gtk_widget_get_parent
(
child
)
==
GTK_WIDGET
(
container
),
NULL
);
g_object_get
(
child
,
"composite-child"
,
&
composite_child
,
NULL
);
if
(
composite_child
)
...
...
@@ -1729,6 +1744,7 @@ gtk_container_real_set_focus_child (GtkContainer *container,
{
GtkAdjustment
*
hadj
;
GtkAdjustment
*
vadj
;
GtkAllocation
allocation
;
GtkWidget
*
focus_child
;
gint
x
,
y
;
...
...
@@ -1746,14 +1762,17 @@ gtk_container_real_set_focus_child (GtkContainer *container,
gtk_widget_translate_coordinates
(
focus_child
,
priv
->
focus_child
,
0
,
0
,
&
x
,
&
y
);
x
+=
priv
->
focus_child
->
allocation
.
x
;
y
+=
priv
->
focus_child
->
allocation
.
y
;
gtk_widget_get_allocation
(
priv
->
focus_child
,
&
allocation
);
x
+=
allocation
.
x
;
y
+=
allocation
.
y
;
gtk_widget_get_allocation
(
focus_child
,
&
allocation
);
if
(
vadj
)
gtk_adjustment_clamp_page
(
vadj
,
y
,
y
+
focus_child
->
allocation
.
height
);
gtk_adjustment_clamp_page
(
vadj
,
y
,
y
+
allocation
.
height
);
if
(
hadj
)
gtk_adjustment_clamp_page
(
hadj
,
x
,
x
+
focus_child
->
allocation
.
width
);
gtk_adjustment_clamp_page
(
hadj
,
x
,
x
+
allocation
.
width
);
}
}
}
...
...
@@ -1839,18 +1858,22 @@ tab_compare (gconstpointer a,
gconstpointer
b
,
gpointer
data
)
{
GtkAllocation
child1_allocation
,
child2_allocation
;
const
GtkWidget
*
child1
=
a
;
const
GtkWidget
*
child2
=
b
;
GtkTextDirection
text_direction
=
GPOINTER_TO_INT
(
data
);
gint
y1
=
child1
->
allocation
.
y
+
child1
->
allocation
.
height
/
2
;
gint
y2
=
child2
->
allocation
.
y
+
child2
->
allocation
.
height
/
2
;
gtk_widget_get_allocation
((
GtkWidget
*
)
child1
,
&
child1_allocation
);
gtk_widget_get_allocation
((
GtkWidget
*
)
child2
,
&
child2_allocation
);
gint
y1
=
child1_allocation
.
y
+
child1_allocation
.
height
/
2
;
gint
y2
=
child2_allocation
.
y
+
child2_allocation
.
height
/
2
;
if
(
y1
==
y2
)
{
gint
x1
=
child1
->
allocation
.
x
+
child1
->
allocation
.
width
/
2
;
gint
x2
=
child2
->
allocation
.
x
+
child2
->
allocation
.
width
/
2
;
gint
x1
=
child1
_
allocation
.
x
+
child1
_
allocation
.
width
/
2
;
gint
x2
=
child2
_
allocation
.
x
+
child2
_
allocation
.
width
/
2
;
if
(
text_direction
==
GTK_TEXT_DIR_RTL
)
return
(
x1
<
x2
)
?
1
:
((
x1
==
x2
)
?
0
:
-
1
);
else
...
...
@@ -1886,7 +1909,7 @@ get_allocation_coords (GtkContainer *container,
GtkWidget
*
widget
,
GdkRectangle
*
allocation
)
{
*
allocation
=
widget
->
allocation
;
gtk_widget_set_
allocation
(
widget
,
allocation
)
;
return
gtk_widget_translate_coordinates
(
widget
,
GTK_WIDGET
(
container
),
0
,
0
,
&
allocation
->
x
,
&
allocation
->
y
);
...
...
@@ -1908,7 +1931,9 @@ find_old_focus (GtkContainer *container,
while
(
widget
&&
widget
!=
(
GtkWidget
*
)
container
)
{
GtkWidget
*
parent
=
widget
->
parent
;
GtkWidget
*
parent
;
parent
=
gtk_widget_get_parent
(
widget
);
if
(
parent
&&
(
gtk_container_get_focus_child
(
GTK_CONTAINER
(
parent
))
!=
widget
))
goto
next
;
...
...
@@ -2050,9 +2075,12 @@ gtk_container_focus_sort_up_down (GtkContainer *container,
{
/* No old focus widget, need to figure out starting x,y some other way
*/
GtkAllocation
allocation
;
GtkWidget
*
widget
=
GTK_WIDGET
(
container
);
GdkRectangle
old_focus_rect
;
gtk_widget_get_allocation
(
widget
,
&
allocation
);
if
(
old_focus_coords
(
container
,
&
old_focus_rect
))
{
compare
.
x
=
old_focus_rect
.
x
+
old_focus_rect
.
width
/
2
;
...
...
@@ -2060,15 +2088,15 @@ gtk_container_focus_sort_up_down (GtkContainer *container,
else
{
if
(
!
gtk_widget_get_has_window
(
widget
))
compare
.
x
=
widget
->
allocation
.
x
+
widget
->
allocation
.
width
/
2
;
compare
.
x
=
allocation
.
x
+
allocation
.
width
/
2
;
else
compare
.
x
=
widget
->
allocation
.
width
/
2
;
compare
.
x
=
allocation
.
width
/
2
;
}
if
(
!
gtk_widget_get_has_window
(
widget
))
compare
.
y
=
(
direction
==
GTK_DIR_DOWN
)
?
widget
->
allocation
.
y
:
widget
->
allocation
.
y
+
widget
->
allocation
.
height
;
compare
.
y
=
(
direction
==
GTK_DIR_DOWN
)
?
allocation
.
y
:
allocation
.
y
+
allocation
.
height
;
else
compare
.
y
=
(
direction
==
GTK_DIR_DOWN
)
?
0
:
+
widget
->
allocation
.
height
;
compare
.
y
=
(
direction
==
GTK_DIR_DOWN
)
?
0
:
+
allocation
.
height
;
}
children
=
g_list_sort_with_data
(
children
,
up_down_compare
,
&
compare
);
...
...
@@ -2177,9 +2205,12 @@ gtk_container_focus_sort_left_right (GtkContainer *container,
{
/* No old focus widget, need to figure out starting x,y some other way
*/
GtkAllocation
allocation
;
GtkWidget
*
widget
=
GTK_WIDGET
(
container
);
GdkRectangle
old_focus_rect
;
gtk_widget_get_allocation
(
widget
,
&
allocation
);
if
(
old_focus_coords
(
container
,
&
old_focus_rect
))
{
compare
.
y
=
old_focus_rect
.
y
+
old_focus_rect
.
height
/
2
;
...
...
@@ -2187,15 +2218,15 @@ gtk_container_focus_sort_left_right (GtkContainer *container,
else
{
if
(
!
gtk_widget_get_has_window
(
widget
))
compare
.
y
=
widget
->
allocation
.
y
+
widget
->
allocation
.
height
/
2
;
compare
.
y
=
allocation
.
y
+
allocation
.
height
/
2
;
else
compare
.
y
=
widget
->
allocation
.
height
/
2
;
compare
.
y
=
allocation
.
height
/
2
;
}
if
(
!
gtk_widget_get_has_window
(
widget
))
compare
.
x
=
(
direction
==
GTK_DIR_RIGHT
)
?
widget
->
allocation
.
x
:
widget
->
allocation
.
x
+
widget
->
allocation
.
width
;
compare
.
x
=
(
direction
==
GTK_DIR_RIGHT
)
?
allocation
.
x
:
allocation
.
x
+
allocation
.
width
;
else
compare
.
x
=
(
direction
==
GTK_DIR_RIGHT
)
?
0
:
widget
->
allocation
.
width
;
compare
.
x
=
(
direction
==
GTK_DIR_RIGHT
)
?
0
:
allocation
.
width
;
}
children
=
g_list_sort_with_data
(
children
,
left_right_compare
,
&
compare
);
...
...
@@ -2653,7 +2684,7 @@ gtk_container_map_child (GtkWidget *child,
gpointer
client_data
)
{
if
(
gtk_widget_get_visible
(
child
)
&&
GTK_WIDGET_CHILD_VISIBLE
(
child
)
&&
gtk_widget_get_child_visible
(
child
)
&&
!
gtk_widget_get_mapped
(
child
))
gtk_widget_map
(
child
);
}
...
...
@@ -2668,7 +2699,7 @@ gtk_container_map (GtkWidget *widget)
NULL
);
if
(
gtk_widget_get_has_window
(
widget
))
gdk_window_show
(
widget
->
window
);
gdk_window_show
(
gtk_
widget
_get_
window
(
widget
)
);
}
static
void
...
...
@@ -2677,7 +2708,7 @@ gtk_container_unmap (GtkWidget *widget)
gtk_widget_set_mapped
(
widget
,
FALSE
);
if
(
gtk_widget_get_has_window
(
widget
))
gdk_window_hide
(
widget
->
window
);
gdk_window_hide
(
gtk_
widget
_get_
window
(
widget
)
);
else
gtk_container_forall
(
GTK_CONTAINER
(
widget
),
(
GtkCallback
)
gtk_widget_unmap
,
...
...
@@ -2715,11 +2746,11 @@ gtk_container_propagate_expose (GtkContainer *container,
g_return_if_fail
(
GTK_IS_WIDGET
(
child
));
g_return_if_fail
(
event
!=
NULL
);
g_assert
(
child
->
parent
==
GTK_WIDGET
(
container
));
g_assert
(
gtk_widget_get_parent
(
child
)
==
GTK_WIDGET
(
container
));
if
(
gtk_widget_is_drawable
(
child
)
&&
!
gtk_widget_get_has_window
(
child
)
&&
(
child
->
window
==
event
->
window
)
)
gtk_widget_get_window
(
child
)
==
event
->
window
)
{
child_event
=
gdk_event_new
(
GDK_EXPOSE
);
child_event
->
expose
=
*
event
;
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment