--- gtk+-2.4.3/gtk/gtkspinbutton.c.old 2004-04-22 14:49:27.000000000 +0100 +++ gtk+-2.4.3/gtk/gtkspinbutton.c 2004-06-30 21:48:18.000000000 +0100 @@ -733,7 +733,7 @@ spin = GTK_SPIN_BUTTON (widget); arrow_size = spin_button_get_arrow_size (spin); - panel_width = arrow_size + 2 * widget->style->xthickness; + panel_width = (2 * arrow_size) + 4 * widget->style->xthickness; widget->allocation = *allocation; @@ -866,19 +866,16 @@ { width = spin_button_get_arrow_size (spin_button) + 2 * widget->style->xthickness; + y = widget->style->ythickness; + height = widget->requisition.height - (2 * y); + if (arrow_type == GTK_ARROW_UP) { x = 0; - y = 0; - - height = widget->requisition.height / 2; } else { - x = 0; - y = widget->requisition.height / 2; - - height = (widget->requisition.height + 1) / 2; + x = width; } if (spin_button_at_limit (spin_button, arrow_type)) @@ -908,32 +905,17 @@ shadow_type = GTK_SHADOW_OUT; } } - + gtk_paint_box (widget->style, spin_button->panel, state_type, shadow_type, NULL, widget, - (arrow_type == GTK_ARROW_UP)? "spinbutton_up" : "spinbutton_down", + NULL, x, y, width, height); height = widget->requisition.height; - 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; + height -= 3; w = width / 2; w -= w % 2 - 1; /* force odd */ @@ -1108,7 +1090,7 @@ if (GTK_ENTRY (widget)->editable) gtk_spin_button_update (spin); - if (event->y <= widget->requisition.height / 2) + if (event->x <= (spin_button_get_arrow_size (spin) + widget->style->xthickness)) { if (event->button == 1) start_spinning (spin, GTK_ARROW_UP, spin->adjustment->step_increment); @@ -1143,44 +1125,11 @@ arrow_size = spin_button_get_arrow_size (spin); - if (event->button == spin->button) - { - int click_child = spin->click_child; + gtk_spin_button_stop_spinning (spin); - gtk_spin_button_stop_spinning (spin); - - if (event->button == 3) - { - if (event->y >= 0 && event->x >= 0 && - event->y <= widget->requisition.height && - event->x <= arrow_size + 2 * widget->style->xthickness) - { - if (click_child == GTK_ARROW_UP && - event->y <= widget->requisition.height / 2) - { - gdouble diff; - - diff = spin->adjustment->upper - spin->adjustment->value; - if (diff > EPSILON) - gtk_spin_button_real_spin (spin, diff); - } - else if (click_child == GTK_ARROW_DOWN && - event->y > widget->requisition.height / 2) - { - gdouble diff; - - diff = spin->adjustment->value - spin->adjustment->lower; - if (diff > EPSILON) - gtk_spin_button_real_spin (spin, -diff); - } - } - } - spin_button_redraw (spin); + spin_button_redraw (spin); - return TRUE; - } - else - return GTK_WIDGET_CLASS (parent_class)->button_release_event (widget, event); + return TRUE; } static gint