selection = gtk_text_buffer_get_text (buffer, &start, &end, FALSE);
}
} else if (GTK_IS_LABEL (focused)) {
- gint start, end;
- if (gtk_label_get_selection_bounds (GTK_LABEL (focused), &start, &end)) {
- const gchar *start_offset;
- const gchar *end_offset;
- start_offset = gtk_label_get_text (GTK_LABEL (focused));
- start_offset = g_utf8_offset_to_pointer (start_offset, start);
- end_offset = gtk_label_get_text (GTK_LABEL (focused));
- end_offset = g_utf8_offset_to_pointer (end_offset, end);
- selection = g_strndup (start_offset, end_offset - start_offset);
- g_message (selection);
- }
+ selection = modest_text_utils_label_get_selection (GTK_LABEL (focused));
} else {
gboolean do_check = TRUE;
GtkClipboard *clipboard;
/* free */
- g_object_unref (folder);
+ if (folder)
+ g_object_unref (folder);
return result;
}
}
static gboolean
+_forward_search_image_char (gunichar ch,
+ gpointer userdata)
+{
+ return (ch == 0xFFFC);
+}
+
+static gboolean
_invalid_clipboard_selected (ModestWindow *win,
ModestDimmingRule *rule)
{
gboolean has_selection = FALSE;
if (GTK_IS_TEXT_VIEW (focused)) {
GtkTextBuffer *buffer = NULL;
+ GtkTextIter start, end;
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (focused));
has_selection = gtk_text_buffer_get_has_selection (GTK_TEXT_BUFFER (buffer));
+
+ /* check there are no images in selection */
+ if (has_selection) {
+ gtk_text_buffer_get_selection_bounds (GTK_TEXT_BUFFER (buffer), &start, &end);
+ if (gtk_text_iter_get_char (&start)== 0xFFFC)
+ has_selection = FALSE;
+ else {
+ gtk_text_iter_backward_char (&end);
+ if (gtk_text_iter_forward_find_char (&start, _forward_search_image_char,
+ NULL, &end))
+ has_selection = FALSE;
+ }
+
+ }
} else if (GTK_IS_EDITABLE (focused)) {
has_selection = gtk_editable_get_selection_bounds (GTK_EDITABLE (focused), NULL, NULL);
}