let GtkKnob grab focus

This commit is contained in:
Tomasz Moń
2009-03-09 19:57:13 +01:00
parent 3f717a51cd
commit f8e35ff685

View File

@@ -299,6 +299,7 @@ gtk_knob_realize(GtkWidget *widget) {
g_return_if_fail (GTK_IS_KNOB (widget)); g_return_if_fail (GTK_IS_KNOB (widget));
GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED); GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED);
GTK_WIDGET_SET_FLAGS (widget, GTK_CAN_FOCUS);
knob = GTK_KNOB (widget); knob = GTK_KNOB (widget);
attributes.x = widget->allocation.x; attributes.x = widget->allocation.x;
@@ -407,6 +408,12 @@ gtk_knob_expose(GtkWidget *widget, GdkEventExpose *event) {
dx, 0, 0, 0, knob->width, knob->height, dx, 0, 0, 0, knob->width, knob->height,
GDK_RGB_DITHER_NONE, 0, 0); GDK_RGB_DITHER_NONE, 0, 0);
if (GTK_WIDGET_HAS_FOCUS(widget)) {
gtk_paint_focus (widget->style, widget->window, widget->state,
NULL, widget, NULL, 0, 0,
widget->allocation.width, widget->allocation.height);
}
return FALSE; return FALSE;
} }
@@ -465,7 +472,8 @@ gtk_knob_button_press(GtkWidget *widget, GdkEventButton *event) {
switch (event->button) { switch (event->button) {
case 1: case 1:
case 3: case 3:
gtk_grab_add (widget); if (!GTK_WIDGET_HAS_FOCUS(widget))
gtk_widget_grab_focus(widget);
knob->state = STATE_PRESSED; knob->state = STATE_PRESSED;
knob->saved_x = event->x; knob->saved_x = event->x;
knob->saved_y = event->y; knob->saved_y = event->y;
@@ -503,12 +511,10 @@ gtk_knob_button_release(GtkWidget *widget, GdkEventButton *event) {
switch (knob->state) { switch (knob->state) {
case STATE_PRESSED: case STATE_PRESSED:
gtk_grab_remove (widget);
knob->state = STATE_IDLE; knob->state = STATE_IDLE;
break; break;
case STATE_DRAGGING: case STATE_DRAGGING:
gtk_grab_remove (widget);
knob->state = STATE_IDLE; knob->state = STATE_IDLE;
switch (event->button) { switch (event->button) {