diff options
-rw-r--r-- | widgets/text/e-entry.c | 20 | ||||
-rw-r--r-- | widgets/text/e-text.c | 20 |
2 files changed, 35 insertions, 5 deletions
diff --git a/widgets/text/e-entry.c b/widgets/text/e-entry.c index 93c3ffd936..44a20bb6f9 100644 --- a/widgets/text/e-entry.c +++ b/widgets/text/e-entry.c @@ -65,6 +65,7 @@ enum { ARG_ALLOW_NEWLINES, ARG_DRAW_BORDERS, ARG_DRAW_BACKGROUND, + ARG_CURSOR_POS }; static void @@ -283,7 +284,12 @@ et_get_arg (GtkObject *o, GtkArg *arg, guint arg_id) "draw_background", >K_VALUE_BOOL (*arg), NULL); break; - + + case ARG_CURSOR_POS: + gtk_object_get (item, + "cursor_pos", >K_VALUE_INT (*arg), + NULL); + default: arg->type = GTK_TYPE_INVALID; break; @@ -418,10 +424,14 @@ et_set_arg (GtkObject *o, GtkArg *arg, guint arg_id) break; } - case ARG_DRAW_BACKGROUND: + case ARG_CURSOR_POS: gtk_object_set (item, - "draw_background", GTK_VALUE_BOOL (*arg), - NULL); + "cursor_pos", GTK_VALUE_INT (*arg), NULL); + break; + + case ARG_DRAW_BACKGROUND: + gtk_object_set (item, "draw_background", + GTK_VALUE_BOOL (*arg), NULL); break; } } @@ -497,6 +507,8 @@ e_entry_class_init (GtkObjectClass *object_class) GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_DRAW_BORDERS); gtk_object_add_arg_type ("EEntry::draw_background", GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_DRAW_BACKGROUND); + gtk_object_add_arg_type ("EEntry::cursor_pos", + GTK_TYPE_INT, GTK_ARG_READWRITE, ARG_CURSOR_POS); } E_MAKE_TYPE(e_entry, "EEntry", EEntry, e_entry_class_init, e_entry_init, PARENT_TYPE); diff --git a/widgets/text/e-text.c b/widgets/text/e-text.c index e9a448b9c2..fc07a6c78e 100644 --- a/widgets/text/e-text.c +++ b/widgets/text/e-text.c @@ -86,7 +86,8 @@ enum { ARG_HEIGHT, ARG_DRAW_BORDERS, ARG_ALLOW_NEWLINES, - ARG_DRAW_BACKGROUND + ARG_DRAW_BACKGROUND, + ARG_CURSOR_POS }; @@ -286,6 +287,8 @@ e_text_class_init (ETextClass *klass) GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_ALLOW_NEWLINES); gtk_object_add_arg_type ("EText::draw_background", GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_DRAW_BACKGROUND); + gtk_object_add_arg_type ("EText::cursor_pos", + GTK_TYPE_INT, GTK_ARG_READWRITE, ARG_CURSOR_POS); if (!clipboard_atom) clipboard_atom = gdk_atom_intern ("CLIPBOARD", FALSE); @@ -1303,6 +1306,17 @@ e_text_set_arg (GtkObject *object, GtkArg *arg, guint arg_id) NULL); break; + case ARG_CURSOR_POS: { + ETextEventProcessorCommand command; + + command.action = E_TEP_MOVE; + command.position = E_TEP_VALUE; + command.value = GTK_VALUE_INT (*arg); + command.time = GDK_CURRENT_TIME; + e_text_command (text->tep, &command, text); + break; + } + default: return; } @@ -1457,6 +1471,10 @@ e_text_get_arg (GtkObject *object, GtkArg *arg, guint arg_id) } break; + case ARG_CURSOR_POS: + GTK_VALUE_INT (*arg) = text->selection_start; + break; + default: arg->type = GTK_TYPE_INVALID; break; |