aboutsummaryrefslogtreecommitdiff
path: root/src/tool_text.c
diff options
context:
space:
mode:
authorThomas White <taw@bitwiz.org.uk>2011-10-04 23:57:01 +0200
committerThomas White <taw@bitwiz.org.uk>2011-10-04 23:57:01 +0200
commit48cbffa2da42612a242f96fa0fd09683e9d1442b (patch)
tree42e16e5a9021c3e6f850f1b2c512f203e933d506 /src/tool_text.c
parent064482aaaf0857cc0ad01b845558d84e1f684d58 (diff)
Move key press stuff into tool callbacks
Diffstat (limited to 'src/tool_text.c')
-rw-r--r--src/tool_text.c35
1 files changed, 33 insertions, 2 deletions
diff --git a/src/tool_text.c b/src/tool_text.c
index f4df9a3..c5555b6 100644
--- a/src/tool_text.c
+++ b/src/tool_text.c
@@ -28,6 +28,7 @@
#include <stdlib.h>
#include <string.h>
#include <assert.h>
+#include <gdk/gdkkeysyms.h>
#include "presentation.h"
#include "objects.h"
@@ -452,13 +453,13 @@ static void create_default(struct presentation *p, struct style *sty,
}
-static void select_object(struct object *o,struct toolinfo *tip)
+static void select_object(struct object *o, struct toolinfo *tip)
{
/* Do nothing */
}
-static int deselect_object(struct object *o,struct toolinfo *tip)
+static int deselect_object(struct object *o, struct toolinfo *tip)
{
if ( (o != NULL) && o->empty ) {
delete_object(o);
@@ -477,6 +478,34 @@ static void draw_overlay(cairo_t *cr, struct object *o)
}
+static void key_pressed(struct object *o, guint keyval, struct toolinfo *tip)
+{
+ if ( o == NULL ) return;
+
+ switch ( keyval ) {
+
+ case GDK_KEY_BackSpace :
+ handle_text_backspace(o);
+ break;
+
+ case GDK_KEY_Left :
+ move_cursor_left(o);
+ break;
+
+ case GDK_KEY_Right :
+ move_cursor_right(o);
+ break;
+
+ }
+}
+
+
+static void im_commit(struct object *o, gchar *str, struct toolinfo *tip)
+{
+ insert_text(o, str);
+}
+
+
struct toolinfo *initialise_text_tool(GtkWidget *w)
{
struct text_toolinfo *ti;
@@ -492,6 +521,8 @@ struct toolinfo *initialise_text_tool(GtkWidget *w)
ti->base.deselect = deselect_object;
ti->base.drag_object = drag_object;
ti->base.draw_editing_overlay = draw_overlay;
+ ti->base.key_pressed = key_pressed;
+ ti->base.im_commit = im_commit;
return (struct toolinfo *)ti;
}