projects
/
modest
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
* fix precondition, which could cause a crash
[modest]
/
src
/
widgets
/
modest-recpt-editor.c
diff --git
a/src/widgets/modest-recpt-editor.c
b/src/widgets/modest-recpt-editor.c
index
c713db9
..
357c1bd
100644
(file)
--- a/
src/widgets/modest-recpt-editor.c
+++ b/
src/widgets/modest-recpt-editor.c
@@
-44,6
+44,12
@@
#include <gdk/gdkkeysyms.h>
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
#include <gtk/gtk.h>
+/* FIXNE: we should have no maemo-deps in widgets/ */
+#ifdef MODEST_PLATFORM_MAEMO
+#include "maemo/modest-hildon-includes.h"
+#endif /*MODEST_PLATFORM_MAEMO*/
+
+
static GObjectClass *parent_class = NULL;
#define RECIPIENT_TAG_ID "recpt-id"
static GObjectClass *parent_class = NULL;
#define RECIPIENT_TAG_ID "recpt-id"
@@
-333,6
+339,12
@@
modest_recpt_editor_instance_init (GTypeInstance *instance, gpointer g_class)
gtk_container_add (GTK_CONTAINER (priv->abook_button), abook_icon);
priv->text_view = gtk_text_view_new ();
gtk_container_add (GTK_CONTAINER (priv->abook_button), abook_icon);
priv->text_view = gtk_text_view_new ();
+ /* Auto-capitalization is the default, so let's turn it off: */
+#ifdef MAEMO_CHANGES
+ hildon_gtk_text_view_set_input_mode (GTK_TEXT_VIEW (priv->text_view),
+ HILDON_GTK_INPUT_MODE_FULL);
+#endif
+
priv->recipients = NULL;
priv->scrolled_window = modest_scroll_text_new (GTK_TEXT_VIEW (priv->text_view), 1024);
priv->recipients = NULL;
priv->scrolled_window = modest_scroll_text_new (GTK_TEXT_VIEW (priv->text_view), 1024);
@@
-431,7
+443,11
@@
modest_recpt_editor_on_button_release_event (GtkWidget *widget,
selection_changed = TRUE;
}
selection_changed = TRUE;
}
- gtk_text_buffer_select_range (buffer, &start, &end);
+ if (selection_changed) {
+ gtk_text_buffer_select_range (buffer, &start, &end);
+ } else {
+ GTK_TEXT_VIEW (priv->text_view)->pending_place_cursor_button = 0;
+ }
return FALSE;
}
return FALSE;
}
@@
-533,6
+549,9
@@
modest_recpt_editor_on_insert_text (GtkTextBuffer *buffer,
GtkTextIter prev;
gunichar prev_char;
ModestRecptEditorPrivate *priv = MODEST_RECPT_EDITOR_GET_PRIVATE (editor);
GtkTextIter prev;
gunichar prev_char;
ModestRecptEditorPrivate *priv = MODEST_RECPT_EDITOR_GET_PRIVATE (editor);
+
+ if (len > 1024)
+ len = 1024;
if (!is_valid_insert (text, len)) {
gchar *new_text = create_valid_text (text, len);
if (!is_valid_insert (text, len)) {
gchar *new_text = create_valid_text (text, len);
@@
-672,12
+691,14
@@
modest_recpt_editor_on_key_press_event (GtkTextView *text_view,
ModestRecptEditor *editor)
{
GtkTextMark *insert;
ModestRecptEditor *editor)
{
GtkTextMark *insert;
+ GtkTextMark *selection;
GtkTextBuffer * buffer;
GtkTextBuffer * buffer;
- GtkTextIter location;
+ GtkTextIter location, selection_loc;
GtkTextTag *tag;
buffer = gtk_text_view_get_buffer (text_view);
insert = gtk_text_buffer_get_insert (buffer);
GtkTextTag *tag;
buffer = gtk_text_view_get_buffer (text_view);
insert = gtk_text_buffer_get_insert (buffer);
+ selection = gtk_text_buffer_get_selection_bound (buffer);
/* cases to cover:
* * cursor is on resolved recipient:
/* cases to cover:
* * cursor is on resolved recipient:
@@
-699,6
+720,7
@@
modest_recpt_editor_on_key_press_event (GtkTextView *text_view,
*/
gtk_text_buffer_get_iter_at_mark (buffer, &location, insert);
*/
gtk_text_buffer_get_iter_at_mark (buffer, &location, insert);
+ gtk_text_buffer_get_iter_at_mark (buffer, &selection_loc, selection);
switch (key->keyval) {
case GDK_Left:
switch (key->keyval) {
case GDK_Left:
@@
-768,7
+790,12
@@
modest_recpt_editor_on_key_press_event (GtkTextView *text_view,
case GDK_Return:
case GDK_KP_Enter:
{
case GDK_Return:
case GDK_KP_Enter:
{
+ gint insert_offset, selection_offset;
+ insert_offset = gtk_text_iter_get_offset (&location);
+ selection_offset = gtk_text_iter_get_offset (&selection_loc);
g_signal_handlers_block_by_func (buffer, modest_recpt_editor_on_insert_text, editor);
g_signal_handlers_block_by_func (buffer, modest_recpt_editor_on_insert_text, editor);
+ if (selection_offset > insert_offset)
+ location = selection_loc;
tag = iter_has_recipient (&location);
if (tag != NULL) {
gtk_text_buffer_get_end_iter (buffer, &location);
tag = iter_has_recipient (&location);
if (tag != NULL) {
gtk_text_buffer_get_end_iter (buffer, &location);