public static void GetSize(this Gtk.CellRenderer cr, Gtk.Widget widget, ref Gdk.Rectangle cell_area, out int x_offset, out int y_offset, out int width, out int height)
        {
            cr.GetPadding(out x_offset, out y_offset);
            var minimum_size = Gtk.Requisition.Zero;
            var natural_size = Gtk.Requisition.Zero;

            cr.GetPreferredHeightForWidth(widget, cell_area.Width, out minimum_size.Height, out natural_size.Height);
            cr.GetPreferredWidthForHeight(widget, cell_area.Height, out minimum_size.Width, out natural_size.Width);
            width     = Math.Max(minimum_size.Width, natural_size.Width);
            height    = Math.Max(minimum_size.Height, natural_size.Height);
            x_offset += (int)(cr.Xalign * (cell_area.Width - width));
            y_offset += (int)(cr.Yalign * (cell_area.Height - height));
        }