let GtkKnob grab focus
This commit is contained in:
12
gtkknob.c
12
gtkknob.c
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user