add gtk_knob_key_press
This commit is contained in:
38
gtkknob.c
38
gtkknob.c
@@ -24,6 +24,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <gtk/gtkmain.h>
|
#include <gtk/gtkmain.h>
|
||||||
#include <gtk/gtksignal.h>
|
#include <gtk/gtksignal.h>
|
||||||
|
#include <gdk/gdkkeysyms.h>
|
||||||
|
|
||||||
#include "gtkknob.h"
|
#include "gtkknob.h"
|
||||||
|
|
||||||
@@ -53,6 +54,7 @@ static gint gtk_knob_expose(GtkWidget *widget, GdkEventExpose *event);
|
|||||||
static gint gtk_knob_scroll(GtkWidget *widget, GdkEventScroll *event);
|
static gint gtk_knob_scroll(GtkWidget *widget, GdkEventScroll *event);
|
||||||
static gint gtk_knob_button_press(GtkWidget *widget, GdkEventButton *event);
|
static gint gtk_knob_button_press(GtkWidget *widget, GdkEventButton *event);
|
||||||
static gint gtk_knob_button_release(GtkWidget *widget, GdkEventButton *event);
|
static gint gtk_knob_button_release(GtkWidget *widget, GdkEventButton *event);
|
||||||
|
static gint gtk_knob_key_press(GtkWidget *widget, GdkEventKey *event);
|
||||||
static gint gtk_knob_motion_notify(GtkWidget *widget, GdkEventMotion *event);
|
static gint gtk_knob_motion_notify(GtkWidget *widget, GdkEventMotion *event);
|
||||||
static gint gtk_knob_timer(GtkKnob *knob);
|
static gint gtk_knob_timer(GtkKnob *knob);
|
||||||
|
|
||||||
@@ -118,6 +120,7 @@ gtk_knob_class_init (GtkKnobClass *class) {
|
|||||||
widget_class->scroll_event = gtk_knob_scroll;
|
widget_class->scroll_event = gtk_knob_scroll;
|
||||||
widget_class->button_press_event = gtk_knob_button_press;
|
widget_class->button_press_event = gtk_knob_button_press;
|
||||||
widget_class->button_release_event = gtk_knob_button_release;
|
widget_class->button_release_event = gtk_knob_button_release;
|
||||||
|
widget_class->key_press_event = gtk_knob_key_press;
|
||||||
widget_class->motion_notify_event = gtk_knob_motion_notify;
|
widget_class->motion_notify_event = gtk_knob_motion_notify;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -535,6 +538,41 @@ gtk_knob_button_release(GtkWidget *widget, GdkEventButton *event) {
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gint gtk_knob_key_press(GtkWidget *widget, GdkEventKey *event)
|
||||||
|
{
|
||||||
|
GtkKnob *knob;
|
||||||
|
|
||||||
|
g_return_val_if_fail (widget != NULL, FALSE);
|
||||||
|
g_return_val_if_fail (GTK_IS_KNOB (widget), FALSE);
|
||||||
|
g_return_val_if_fail (event != NULL, FALSE);
|
||||||
|
|
||||||
|
knob = GTK_KNOB (widget);
|
||||||
|
|
||||||
|
switch (event->keyval) {
|
||||||
|
|
||||||
|
case GDK_Up:
|
||||||
|
if (GTK_WIDGET_HAS_FOCUS (widget))
|
||||||
|
{
|
||||||
|
gtk_adjustment_set_value (knob->adjustment,
|
||||||
|
knob->old_value + knob->adjustment->step_increment);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
case GDK_Down:
|
||||||
|
if (GTK_WIDGET_HAS_FOCUS (widget))
|
||||||
|
{
|
||||||
|
gtk_adjustment_set_value (knob->adjustment,
|
||||||
|
knob->old_value - knob->adjustment->step_increment);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return GTK_WIDGET_CLASS (parent_class)->key_press_event (widget, event);
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user