rendered paste bodystatic void kiba_volume_get_dock_position (KibaVolume *volume,
gint *x,
gint *y) {
GtkWidget *dock;
gint width, height;
const KibaLayoutData *d;
dock = GTK_WIDGET(volume->icon)->parent;
d = &kiba_layout_data[KIBA_DOCK(dock)->d.position];
gtk_window_get_size (GTK_WINDOW (volume->scrollbar), &width, &height);
*x = KIBA_OBJECT(volume->icon)->allocation.x + dock->parent->allocation.x;
*y = KIBA_OBJECT(volume->icon)->allocation.y + dock->parent->allocation.y;
/* switch coordinates ;) */
struct {
gint *x, *y;
gint w, h;
gint alignment;
} layout_magic[2] = {
{ x, y, width, height, d->valignment }, /**< GTK_ORIENTATION_HORIZONTAL. */
{ y, x, height, width, d->halignment } /**< GTK_ORIENTATION_VERTICAL. */
};
*layout_magic[d->orientation].x -=
(layout_magic[d->orientation].w - KIBA_OBJECT(volume->icon)->allocation.width) / 2.0;
*layout_magic[d->orientation].y -=
layout_magic[d->orientation].alignment == 0 ?
-KIBA_OBJECT(volume->icon)->allocation.width : layout_magic[d->orientation].h;
}