static gboolean exitbutton_size_changed(XfcePanelPlugin *plugin, gint size, ExitbuttonPlugin *exitbutton)
{
   /* shrink the gtk button's image to new size -*/
#ifdef HAS_PANEL_49
   size /= xfce_panel_plugin_get_nrows (plugin);
#endif
   gtk_widget_set_size_request(GTK_WIDGET(exitbutton->button), size, size);

  /* we handled the change */
  return TRUE;
}
static void
places_button_resize(PlacesButton *self)
{
    gboolean show_label;
    gint new_size;
    gboolean vertical = FALSE;
#ifdef HAS_PANEL_49
    gboolean deskbar = FALSE;
#endif
    gint nrows = 1;

    if (self->plugin == NULL)
        return;

    new_size = xfce_panel_plugin_get_size(self->plugin);
    self->plugin_size = new_size;
    DBG("Panel size: %d", new_size);

    show_label = self->label_text != NULL;

#ifdef HAS_PANEL_49
  if (xfce_panel_plugin_get_mode(self->plugin) == XFCE_PANEL_PLUGIN_MODE_DESKBAR)
    deskbar = TRUE;
  else if (xfce_panel_plugin_get_mode(self->plugin) == XFCE_PANEL_PLUGIN_MODE_VERTICAL)
    vertical = TRUE;
  nrows = xfce_panel_plugin_get_nrows(self->plugin);
#else
  if (xfce_panel_plugin_get_orientation(self->plugin) == GTK_ORIENTATION_VERTICAL)
    vertical = TRUE;
#endif

    new_size /= nrows;

    if (show_label) {
#ifdef HAS_PANEL_49
        xfce_panel_plugin_set_small (self->plugin, deskbar ? FALSE : TRUE);
#endif
        if (vertical)
          gtk_alignment_set (GTK_ALIGNMENT (self->alignment), 0.5, 0.0, 0.0, 1.0);
        else
          gtk_alignment_set (GTK_ALIGNMENT (self->alignment), 0.0, 0.5, 1.0, 0.0);
    } else {
#ifdef HAS_PANEL_49
        xfce_panel_plugin_set_small(self->plugin, TRUE);
#endif
        gtk_alignment_set (GTK_ALIGNMENT (self->alignment), 0.5, 0.5, 1.0, 1.0);
    }

    /* label */
    places_button_resize_label(self, show_label);
}
static gboolean
xkb_calculate_sizes (t_xkb *xkb, GtkOrientation orientation, gint panel_size)
{
    guint nrows;

    nrows       = xfce_panel_plugin_get_nrows (xkb->plugin);
    panel_size /= nrows;
    TRACE ("calculate_sizes(%p: %d,%d)", xkb, panel_size, nrows);

    switch (orientation)
    {
        case GTK_ORIENTATION_HORIZONTAL:
            xkb->vsize = panel_size;
            if (nrows > 1)
            {
                xkb->hsize = xkb->vsize;
            }
            else
            {
                xkb->hsize = (int) (1.33 * panel_size);
            }

            gtk_widget_set_size_request (xkb->btn, xkb->hsize, xkb->vsize);
            break;
        case GTK_ORIENTATION_VERTICAL:
            xkb->hsize = panel_size;
            if (nrows > 1)
            {
                xkb->vsize = xkb->hsize;
            }
            else
            {
                xkb->vsize = (int) (0.75 * panel_size);
            }
            if (xkb->vsize < 10) xkb->vsize = 10;
            gtk_widget_set_size_request (xkb->btn, xkb->hsize, xkb->vsize);
            break;
        default:
            break;
    }

    DBG ("size requested: h/v (%p: %d/%d)", xkb, xkb->hsize, xkb->vsize);

    xkb_refresh_gui (xkb);
    return TRUE;
}