Overview

screenshot.png

Style Properties

Name

Default

Description

shadow-type

GTK_SHADOW_IN

Style of bevel around the spin button

Geometry

geometry.png

For the entry part of the spinbutton, refere to ../GtkEntry. arrow-size is calculated from the font (rounded down to be even) and has a minimum of 6 pixel. In the case that the height for the two stepper buttons is not a multiple of two, the down one will be one pixel larger. (XXX: is this true?)

Drawing

The entry part of the spinbutton is simply that. The buttons are inside their own X window (not sure if this matters for theming much). If the shadow-type style property is not NONE, then a box with the given shadow type will be drawn over the whole button area. The detail is "spinbutton" and the state always NORMAL.

For the stepper buttons, a box with detail "spinbutton_up" or "spinbutton_down" is drawn first. After that an arrow gets drawn (hmm, there is some weird placement code for the arrow ...)

The shadow and state is as follows:

shadow

state

at the limit

OUT

INSENSITIVE

pressed

IN

ACTIVE

mouse above

OUT

PRELIGHT

others

OUT

state of the widget, ie. NORMAL or INSENSITIVE

Coped from gtkspinbutton.c (http://svn.gnome.org/viewvc/gtk%2B/trunk/gtk/gtkspinbutton.c?view=markup)

height is the height of the whole widget and width is the width of the spinbuttons.

      if (arrow_type == GTK_ARROW_DOWN)
        {
          y = height / 2;
          height = height - y - 2;
        }
      else
        {
          y = 2;
          height = height / 2 - 2;
        }

      width -= 3;

      if (widget && gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL)
        x = 2;
      else
        x = 1;

      w = width / 2;
      w -= w % 2 - 1; /* force odd */
      h = (w + 1) / 2;

      x += (width - w) / 2;
      y += (height - h) / 2;

      height = h;
      width = w;

      gtk_paint_arrow (widget->style, spin_button->panel,
                       state_type, shadow_type,
                       NULL, widget, "spinbutton",
                       arrow_type, TRUE,
                       x, y, width, height);

GTK+ API Documentation

http://library.gnome.org/devel/gtk/stable/GtkSpinButton.html

Attic/GnomeArt/Tutorials/GtkThemes/GtkSpinButton (last edited 2013-11-27 14:33:52 by WilliamJonMcCann)