3 #include <lttv/gtkmultivpaned.h>
5 #include <lttv/mainWindow.h>
6 #include <lttv/gtkTraceSet.h>
8 static void gtk_multi_vpaned_class_init (GtkMultiVPanedClass
*klass
);
9 static void gtk_multi_vpaned_init (GtkMultiVPaned
*multi_vpaned
);
12 static void gtk_multi_vpaned_size_request (GtkWidget
*widget
,
13 GtkRequisition
*requisition
);
14 static void gtk_multi_vpaned_size_allocate (GtkWidget
*widget
,
15 GtkAllocation
*allocation
);
17 void gtk_multi_vpaned_scroll_value_changed (GtkRange
*range
, gpointer multi_vpaned
);
20 gtk_multi_vpaned_get_type (void)
22 static GType multi_vpaned_type
= 0;
24 if (!multi_vpaned_type
)
26 static const GTypeInfo multi_vpaned_info
=
28 sizeof (GtkMultiVPanedClass
),
30 NULL
, /* base_finalize */
31 (GClassInitFunc
) gtk_multi_vpaned_class_init
,
32 NULL
, /* class_finalize */
33 NULL
, /* class_data */
34 sizeof (GtkMultiVPaned
),
36 (GInstanceInitFunc
) gtk_multi_vpaned_init
,
37 NULL
, /* value_table */
40 multi_vpaned_type
= g_type_register_static (GTK_TYPE_PANED
, "GtkMultiVPaned",
41 &multi_vpaned_info
, 0);
44 return multi_vpaned_type
;
48 gtk_multi_vpaned_class_init (GtkMultiVPanedClass
*class)
50 GtkWidgetClass
*widget_class
;
52 widget_class
= (GtkWidgetClass
*) class;
54 widget_class
->size_request
= gtk_multi_vpaned_size_request
;
55 widget_class
->size_allocate
= gtk_multi_vpaned_size_allocate
;
59 gtk_multi_vpaned_init (GtkMultiVPaned
* multi_vpaned
)
63 GTK_WIDGET_SET_FLAGS (multi_vpaned
, GTK_NO_WINDOW
);
64 gtk_widget_set_redraw_on_allocate (GTK_WIDGET (multi_vpaned
), FALSE
);
66 multi_vpaned
->first_pane
= NULL
;
67 multi_vpaned
->last_pane
= NULL
;
68 multi_vpaned
->focused_pane
= NULL
;
69 multi_vpaned
->iter
= NULL
;
70 multi_vpaned
->num_children
= 0;
72 multi_vpaned
->vbox
= NULL
;
73 // multi_vpaned->scrollWindow = NULL;
74 // multi_vpaned->viewport = NULL;
75 multi_vpaned
->hscrollbar
= NULL
;
79 GtkWidget
* gtk_multi_vpaned_new ()
81 return GTK_WIDGET (g_object_new (gtk_multi_vpaned_get_type (), NULL
));
84 GtkWidget
* gtk_multi_vpaned_get_widget(GtkMultiVPaned
* multi_vpaned
)
86 if(multi_vpaned
->focused_pane
== NULL
)return NULL
;
87 return (GtkWidget
*)multi_vpaned
->focused_pane
->child2
;
90 GtkWidget
* gtk_multi_vpaned_get_first_widget(GtkMultiVPaned
* multi_vpaned
)
92 if(multi_vpaned
->first_pane
== NULL
)return NULL
;
93 multi_vpaned
->iter
= multi_vpaned
->first_pane
;
94 return multi_vpaned
->first_pane
->child2
;
97 GtkWidget
* gtk_multi_vpaned_get_next_widget(GtkMultiVPaned
* multi_vpaned
)
99 if(multi_vpaned
->iter
!= multi_vpaned
->last_pane
){
100 multi_vpaned
->iter
= (GtkPaned
*)multi_vpaned
->iter
->child1
;
101 return multi_vpaned
->iter
->child2
;
107 void gtk_multi_vpaned_set_data(GtkMultiVPaned
* multi_vpaned
,char * key
, gpointer value
)
109 g_object_set_data(G_OBJECT(multi_vpaned
->focused_pane
), key
, value
);
112 gpointer
gtk_multi_vpaned_get_data(GtkMultiVPaned
* multi_vpaned
,char * key
)
114 if(multi_vpaned
->focused_pane
== NULL
)return NULL
;
115 return g_object_get_data(G_OBJECT(multi_vpaned
->focused_pane
), key
);
118 void gtk_multi_vpaned_set_focus (GtkWidget
* widget
, gpointer user_data
)
120 GtkMultiVPaned
* multi_vpaned
= (GtkMultiVPaned
*) widget
;
122 if(!multi_vpaned
->first_pane
) return;
125 pane
= multi_vpaned
->first_pane
;
127 if((GtkWidget
*)pane
== (GtkWidget
*)user_data
){
128 multi_vpaned
->focused_pane
= pane
;
131 if(pane
== multi_vpaned
->last_pane
){
132 multi_vpaned
->focused_pane
= NULL
;
135 pane
= (GtkPaned
*)pane
->child1
;
139 void gtk_multi_vpaned_set_adjust(GtkMultiVPaned
* multi_vpaned
, gboolean first_time
)
141 TimeWindow time_window
;
142 TimeInterval
*time_span
;
146 get_time_window(multi_vpaned
->mw
,&time_window
);
148 time_span
= LTTV_TRACESET_CONTEXT(multi_vpaned
->mw
->current_tab
->traceset_info
->
149 traceset_context
)->Time_Span
;
151 multi_vpaned
->hadjust
->lower
= ltt_time_to_double(time_span
->startTime
) *
152 NANOSECONDS_PER_SECOND
;
153 multi_vpaned
->hadjust
->value
= multi_vpaned
->hadjust
->lower
;
154 multi_vpaned
->hadjust
->upper
= ltt_time_to_double(time_span
->endTime
) *
155 NANOSECONDS_PER_SECOND
;
158 /* Page increment of whole visible area */
159 if(multi_vpaned
->hadjust
== NULL
){
160 g_warning("Insert a viewer first");
164 start
= ltt_time_to_double(time_window
.start_time
) * NANOSECONDS_PER_SECOND
;
165 tmp
= multi_vpaned
->hadjust
->upper
- multi_vpaned
->hadjust
->lower
;
167 multi_vpaned
->hadjust
->page_increment
= ltt_time_to_double(
168 time_window
.time_width
) * NANOSECONDS_PER_SECOND
;
170 if(multi_vpaned
->hadjust
->page_increment
>= tmp
- range
)
171 multi_vpaned
->hadjust
->value
= multi_vpaned
->hadjust
->lower
;
172 if(start
+ multi_vpaned
->hadjust
->page_increment
>= multi_vpaned
->hadjust
->upper
- range
)
173 multi_vpaned
->hadjust
->value
= start
;
175 /* page_size to the whole visible area will take care that the
176 * scroll value + the shown area will never be more than what is
178 multi_vpaned
->hadjust
->page_size
= multi_vpaned
->hadjust
->page_increment
;
179 multi_vpaned
->hadjust
->step_increment
= multi_vpaned
->hadjust
->page_increment
/ 10;
181 gtk_adjustment_changed (multi_vpaned
->hadjust
);
184 void gtk_multi_vpaned_widget_add(GtkMultiVPaned
* multi_vpaned
, GtkWidget
* widget1
)
189 g_return_if_fail(GTK_IS_MULTI_VPANED(multi_vpaned
));
190 g_object_ref(G_OBJECT(widget1
));
193 if(!multi_vpaned
->first_pane
){
194 multi_vpaned
->first_pane
= (GtkPaned
*)gtk_vpaned_new();
195 multi_vpaned
->last_pane
= multi_vpaned
->first_pane
;
197 multi_vpaned
->hscrollbar
= gtk_hscrollbar_new (NULL
);
198 gtk_widget_show(multi_vpaned
->hscrollbar
);
200 multi_vpaned
->hadjust
= gtk_range_get_adjustment(GTK_RANGE(multi_vpaned
->hscrollbar
));
201 gtk_multi_vpaned_set_adjust(multi_vpaned
, TRUE
);
203 gtk_range_set_update_policy (GTK_RANGE(multi_vpaned
->hscrollbar
),
204 GTK_UPDATE_CONTINUOUS
);
205 //changed by Mathieu Desnoyers, was :
206 // GTK_UPDATE_DISCONTINUOUS);
207 g_signal_connect(G_OBJECT(multi_vpaned
->hscrollbar
), "value-changed",
208 G_CALLBACK(gtk_multi_vpaned_scroll_value_changed
), multi_vpaned
);
210 multi_vpaned
->vbox
= gtk_vbox_new(FALSE
,0);
211 gtk_widget_show(multi_vpaned
->vbox
);
213 // multi_vpaned->viewport = gtk_viewport_new (NULL,NULL);
214 // gtk_widget_show(multi_vpaned->viewport);
216 // gtk_container_add(GTK_CONTAINER(multi_vpaned->viewport), (GtkWidget*)multi_vpaned->vbox);
217 gtk_box_pack_end(GTK_BOX(multi_vpaned
->vbox
),(GtkWidget
*)multi_vpaned
->hscrollbar
,FALSE
,FALSE
,0);
218 gtk_box_pack_end(GTK_BOX(multi_vpaned
->vbox
),(GtkWidget
*)multi_vpaned
->first_pane
,TRUE
,TRUE
,0);
220 // multi_vpaned->scrollWindow = gtk_scrolled_window_new (NULL, NULL);
221 // gtk_widget_show(multi_vpaned->scrollWindow);
222 // gtk_container_add (GTK_CONTAINER (multi_vpaned->scrollWindow), (GtkWidget*)multi_vpaned->viewport);
223 // gtk_paned_pack1(GTK_PANED(multi_vpaned), (GtkWidget*)multi_vpaned->scrollWindow,FALSE, TRUE);
225 gtk_paned_pack1(GTK_PANED(multi_vpaned
), (GtkWidget
*)multi_vpaned
->vbox
,FALSE
, TRUE
);
227 tmpPane
= multi_vpaned
->last_pane
;
228 multi_vpaned
->last_pane
= (GtkPaned
*)gtk_vpaned_new();
229 gtk_paned_pack1 (tmpPane
,(GtkWidget
*)multi_vpaned
->last_pane
, FALSE
,TRUE
);
231 gtk_widget_show((GtkWidget
*)multi_vpaned
->last_pane
);
233 gtk_paned_pack2 (multi_vpaned
->last_pane
,widget1
, TRUE
, TRUE
);
234 multi_vpaned
->focused_pane
= multi_vpaned
->last_pane
;
235 multi_vpaned
->num_children
++;
239 void gtk_multi_vpaned_widget_delete(GtkMultiVPaned
* multi_vpaned
)
241 GtkPaned
* tmp
, *prev
, *next
;
243 if(!multi_vpaned
->focused_pane
) return;
245 tmp
= (GtkPaned
*)multi_vpaned
->focused_pane
->child2
; //widget in vpaned
246 g_object_unref(G_OBJECT(tmp
));
248 if(multi_vpaned
->focused_pane
== multi_vpaned
->first_pane
&&
249 multi_vpaned
->focused_pane
== multi_vpaned
->last_pane
){
250 // gtk_container_remove(GTK_CONTAINER(multi_vpaned),(GtkWidget*)multi_vpaned->scrollWindow);
251 gtk_container_remove(GTK_CONTAINER(multi_vpaned
),(GtkWidget
*)multi_vpaned
->vbox
);
252 multi_vpaned
->first_pane
= NULL
;
253 multi_vpaned
->last_pane
= NULL
;
254 multi_vpaned
->focused_pane
= NULL
;
255 }else if(multi_vpaned
->focused_pane
== multi_vpaned
->first_pane
&&
256 multi_vpaned
->focused_pane
!= multi_vpaned
->last_pane
){
257 next
= (GtkPaned
*)multi_vpaned
->first_pane
->child1
;
258 g_object_ref(G_OBJECT(next
));
259 gtk_container_remove(GTK_CONTAINER(multi_vpaned
->first_pane
),(GtkWidget
*)next
);
260 gtk_container_remove(GTK_CONTAINER(multi_vpaned
->vbox
),(GtkWidget
*)multi_vpaned
->first_pane
);
261 multi_vpaned
->first_pane
= next
;
262 gtk_box_pack_end(GTK_BOX(multi_vpaned
->vbox
),(GtkWidget
*)multi_vpaned
->first_pane
,TRUE
,TRUE
,0);
263 multi_vpaned
->focused_pane
= multi_vpaned
->first_pane
;
264 g_object_unref(G_OBJECT(next
));
265 }else if(multi_vpaned
->focused_pane
!= multi_vpaned
->first_pane
&&
266 multi_vpaned
->focused_pane
== multi_vpaned
->last_pane
){
267 tmp
= multi_vpaned
->last_pane
;
268 multi_vpaned
->last_pane
= (GtkPaned
*)gtk_widget_get_parent((GtkWidget
*)multi_vpaned
->last_pane
);
269 multi_vpaned
->focused_pane
= multi_vpaned
->last_pane
;
270 gtk_container_remove(GTK_CONTAINER(multi_vpaned
->last_pane
),(GtkWidget
*)tmp
);
272 tmp
= multi_vpaned
->focused_pane
;
273 prev
= (GtkPaned
*)gtk_widget_get_parent((GtkWidget
*)tmp
);
274 next
= (GtkPaned
*)tmp
->child1
;
275 g_object_ref(G_OBJECT(next
));
276 gtk_container_remove(GTK_CONTAINER(multi_vpaned
->focused_pane
),(GtkWidget
*)next
);
277 gtk_container_remove(GTK_CONTAINER(prev
),(GtkWidget
*)multi_vpaned
->focused_pane
);
278 gtk_paned_pack1(prev
, (GtkWidget
*)next
, FALSE
, TRUE
);
279 multi_vpaned
->focused_pane
= next
;
280 g_object_unref(G_OBJECT(next
));
283 multi_vpaned
->num_children
--;
287 void gtk_multi_vpaned_widget_move_up(GtkMultiVPaned
* multi_vpaned
)
289 GtkWidget
* upWidget
, *downWidget
;
290 GtkPaned
* prev
,*next
, *prevPrev
;
292 if(multi_vpaned
->last_pane
== multi_vpaned
->focused_pane
) return;
295 prev
= (GtkPaned
*)multi_vpaned
->focused_pane
->child1
;
296 g_object_ref(G_OBJECT(prev
));
297 gtk_container_remove(GTK_CONTAINER(multi_vpaned
->focused_pane
),(GtkWidget
*)prev
);
299 if(prev
== multi_vpaned
->last_pane
){
301 multi_vpaned
->last_pane
= multi_vpaned
->focused_pane
;
303 prevPrev
= (GtkPaned
*)prev
->child1
;
304 g_object_ref(G_OBJECT(prevPrev
));
305 gtk_container_remove(GTK_CONTAINER(prev
),(GtkWidget
*)prevPrev
);
308 g_object_ref(G_OBJECT(multi_vpaned
->focused_pane
));
309 if(multi_vpaned
->first_pane
== multi_vpaned
->focused_pane
){
310 gtk_container_remove(GTK_CONTAINER(multi_vpaned
->vbox
),(GtkWidget
*)multi_vpaned
->focused_pane
);
311 gtk_box_pack_end(GTK_BOX(multi_vpaned
->vbox
),(GtkWidget
*)prev
,TRUE
,TRUE
,0);
312 multi_vpaned
->first_pane
= prev
;
314 next
= (GtkPaned
*)gtk_widget_get_parent((GtkWidget
*)multi_vpaned
->focused_pane
);
315 gtk_container_remove(GTK_CONTAINER(next
),(GtkWidget
*)multi_vpaned
->focused_pane
);
316 gtk_paned_pack1(GTK_PANED(next
), (GtkWidget
*)prev
, FALSE
,TRUE
);
318 gtk_paned_pack1(GTK_PANED(prev
),(GtkWidget
*)multi_vpaned
->focused_pane
, FALSE
,TRUE
);
320 gtk_paned_pack1(GTK_PANED(multi_vpaned
->focused_pane
),(GtkWidget
*)prevPrev
, FALSE
,TRUE
);
322 g_object_unref(G_OBJECT(prev
));
323 if(prevPrev
) g_object_unref(G_OBJECT(prevPrev
));
324 g_object_unref(G_OBJECT(multi_vpaned
->focused_pane
));
328 void gtk_multi_vpaned_widget_move_down(GtkMultiVPaned
* multi_vpaned
)
330 GtkWidget
* upWidget
, *downWidget
;
331 GtkPaned
* prev
,*next
, *nextNext
;
333 if(multi_vpaned
->first_pane
== multi_vpaned
->focused_pane
) return;
336 next
= (GtkPaned
*)gtk_widget_get_parent((GtkWidget
*)multi_vpaned
->focused_pane
);
337 g_object_ref(G_OBJECT(next
));
339 if(multi_vpaned
->last_pane
== multi_vpaned
->focused_pane
){
341 multi_vpaned
->last_pane
= next
;
343 prev
= (GtkPaned
*)multi_vpaned
->focused_pane
->child1
;
344 g_object_ref(G_OBJECT(prev
));
345 gtk_container_remove(GTK_CONTAINER(multi_vpaned
->focused_pane
),(GtkWidget
*)prev
);
348 g_object_ref(G_OBJECT(multi_vpaned
->focused_pane
));
349 gtk_container_remove(GTK_CONTAINER(next
),(GtkWidget
*)multi_vpaned
->focused_pane
);
351 if(next
== multi_vpaned
->first_pane
){
352 multi_vpaned
->first_pane
= multi_vpaned
->focused_pane
;
353 gtk_container_remove(GTK_CONTAINER(multi_vpaned
->vbox
),(GtkWidget
*)next
);
354 gtk_box_pack_end(GTK_BOX(multi_vpaned
->vbox
),(GtkWidget
*)multi_vpaned
->focused_pane
,TRUE
,TRUE
,0);
356 nextNext
= (GtkPaned
*)gtk_widget_get_parent((GtkWidget
*)next
);
357 gtk_container_remove(GTK_CONTAINER(nextNext
),(GtkWidget
*)next
);
358 gtk_paned_pack1(nextNext
, (GtkWidget
*)multi_vpaned
->focused_pane
, FALSE
, TRUE
);
360 gtk_paned_pack1(multi_vpaned
->focused_pane
,(GtkWidget
*)next
, FALSE
,TRUE
);
362 gtk_paned_pack1(next
,(GtkWidget
*)prev
, FALSE
,TRUE
);
364 if(prev
)g_object_unref(G_OBJECT(prev
));
365 g_object_unref(G_OBJECT(next
));
366 g_object_unref(G_OBJECT(multi_vpaned
->focused_pane
));
369 void gtk_multi_vpaned_set_scroll_value(GtkMultiVPaned
* multi_vpaned
, double value
)
371 gtk_adjustment_set_value(multi_vpaned
->hadjust
, value
);
372 g_signal_stop_emission_by_name(G_OBJECT(multi_vpaned
->hscrollbar
), "value-changed");
375 void gtk_multi_vpaned_scroll_value_changed(GtkRange
*range
, gpointer multi_vpaned_arg
)
377 TimeWindow time_window
;
378 TimeInterval
*time_span
;
380 GtkMultiVPaned
* multi_vpaned
= (GtkMultiVPaned
*)multi_vpaned_arg
;
381 gdouble value
= gtk_range_get_value(range
);
382 gdouble upper
, lower
, ratio
;
384 time_window
= multi_vpaned
->mw
->current_tab
->time_window
;
386 time_span
= LTTV_TRACESET_CONTEXT(multi_vpaned
->mw
->current_tab
->traceset_info
->
387 traceset_context
)->Time_Span
;
388 lower
= multi_vpaned
->hadjust
->lower
;
389 upper
= multi_vpaned
->hadjust
->upper
;
390 ratio
= (value
- lower
) / (upper
- lower
);
392 time
= ltt_time_sub(time_span
->endTime
, time_span
->startTime
);
393 time
= ltt_time_mul(time
, (float)ratio
);
394 time
= ltt_time_add(time_span
->startTime
, time
);
396 time_window
.start_time
= time
;
398 time
= ltt_time_sub(time_span
->endTime
, time
);
399 if(ltt_time_compare(time
,time_window
.time_width
) < 0){
400 time_window
.time_width
= time
;
402 set_time_window(multi_vpaned
->mw
, &time_window
);
407 gtk_multi_vpaned_size_request (GtkWidget
*widget
,
408 GtkRequisition
*requisition
)
410 GtkPaned
*paned
= GTK_PANED (widget
);
411 GtkRequisition child_requisition
;
413 requisition
->width
= 0;
414 requisition
->height
= 0;
416 if (paned
->child1
&& GTK_WIDGET_VISIBLE (paned
->child1
))
418 gtk_widget_size_request (paned
->child1
, &child_requisition
);
420 requisition
->height
= child_requisition
.height
;
421 requisition
->width
= child_requisition
.width
;
424 if (paned
->child2
&& GTK_WIDGET_VISIBLE (paned
->child2
))
426 gtk_widget_size_request (paned
->child2
, &child_requisition
);
428 requisition
->width
= MAX (requisition
->width
, child_requisition
.width
);
429 requisition
->height
+= child_requisition
.height
;
432 requisition
->height
+= GTK_CONTAINER (paned
)->border_width
* 2;
433 requisition
->width
+= GTK_CONTAINER (paned
)->border_width
* 2;
435 if (paned
->child1
&& GTK_WIDGET_VISIBLE (paned
->child1
) &&
436 paned
->child2
&& GTK_WIDGET_VISIBLE (paned
->child2
))
440 gtk_widget_style_get (widget
, "handle_size", &handle_size
, NULL
);
441 requisition
->height
+= handle_size
;
447 gtk_multi_vpaned_size_allocate (GtkWidget
*widget
,
448 GtkAllocation
*allocation
)
450 GtkPaned
*paned
= GTK_PANED (widget
);
451 gint border_width
= GTK_CONTAINER (paned
)->border_width
;
453 widget
->allocation
= *allocation
;
455 if (paned
->child1
&& GTK_WIDGET_VISIBLE (paned
->child1
) &&
456 paned
->child2
&& GTK_WIDGET_VISIBLE (paned
->child2
))
458 GtkRequisition child1_requisition
;
459 GtkRequisition child2_requisition
;
460 GtkAllocation child1_allocation
;
461 GtkAllocation child2_allocation
;
464 gtk_widget_style_get (widget
, "handle_size", &handle_size
, NULL
);
466 gtk_widget_get_child_requisition (paned
->child1
, &child1_requisition
);
467 gtk_widget_get_child_requisition (paned
->child2
, &child2_requisition
);
469 gtk_paned_compute_position (paned
,
470 MAX (1, widget
->allocation
.height
473 child1_requisition
.height
,
474 child2_requisition
.height
);
476 paned
->handle_pos
.x
= widget
->allocation
.x
+ border_width
;
477 paned
->handle_pos
.y
= widget
->allocation
.y
+ paned
->child1_size
+ border_width
;
478 paned
->handle_pos
.width
= MAX (1, (gint
) widget
->allocation
.width
- 2 * border_width
);
479 paned
->handle_pos
.height
= handle_size
;
481 if (GTK_WIDGET_REALIZED (widget
))
483 if (GTK_WIDGET_MAPPED (widget
))
484 gdk_window_show (paned
->handle
);
485 gdk_window_move_resize (paned
->handle
,
488 paned
->handle_pos
.width
,
492 child1_allocation
.width
= child2_allocation
.width
= MAX (1, (gint
) allocation
->width
- border_width
* 2);
493 child1_allocation
.height
= MAX (1, paned
->child1_size
);
494 child1_allocation
.x
= child2_allocation
.x
= widget
->allocation
.x
+ border_width
;
495 child1_allocation
.y
= widget
->allocation
.y
+ border_width
;
497 child2_allocation
.y
= child1_allocation
.y
+ paned
->child1_size
+ paned
->handle_pos
.height
;
498 child2_allocation
.height
= MAX (1, widget
->allocation
.y
+ widget
->allocation
.height
- child2_allocation
.y
- border_width
);
500 if (GTK_WIDGET_MAPPED (widget
) &&
501 paned
->child1
->allocation
.height
< child1_allocation
.height
)
503 gtk_widget_size_allocate (paned
->child2
, &child2_allocation
);
504 gtk_widget_size_allocate (paned
->child1
, &child1_allocation
);
508 gtk_widget_size_allocate (paned
->child1
, &child1_allocation
);
509 gtk_widget_size_allocate (paned
->child2
, &child2_allocation
);
514 GtkAllocation child_allocation
;
516 if (GTK_WIDGET_REALIZED (widget
))
517 gdk_window_hide (paned
->handle
);
520 gtk_widget_set_child_visible (paned
->child1
, TRUE
);
522 gtk_widget_set_child_visible (paned
->child2
, TRUE
);
524 child_allocation
.x
= widget
->allocation
.x
+ border_width
;
525 child_allocation
.y
= widget
->allocation
.y
+ border_width
;
526 child_allocation
.width
= MAX (1, allocation
->width
- 2 * border_width
);
527 child_allocation
.height
= MAX (1, allocation
->height
- 2 * border_width
);
529 if (paned
->child1
&& GTK_WIDGET_VISIBLE (paned
->child1
))
530 gtk_widget_size_allocate (paned
->child1
, &child_allocation
);
531 else if (paned
->child2
&& GTK_WIDGET_VISIBLE (paned
->child2
))
532 gtk_widget_size_allocate (paned
->child2
, &child_allocation
);