* src/modest-ui-dimming-rules.c:
[modest] / src / modest-ui-dimming-rules.c
index d72d3cc..aaef460 100644 (file)
@@ -1809,17 +1809,7 @@ modest_ui_dimming_rules_on_add_to_contacts (ModestWindow *win, gpointer user_dat
                                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;
@@ -2251,7 +2241,8 @@ _selected_folder_is_any_of_type (ModestWindow *win,
 
 
        /* free */
-       g_object_unref (folder);
+       if (folder)
+               g_object_unref (folder);
 
        return result;  
 }
@@ -2296,6 +2287,13 @@ _clipboard_is_empty (ModestWindow *win)
 }
 
 static gboolean
+_forward_search_image_char (gunichar ch,
+                           gpointer userdata)
+{
+       return (ch == 0xFFFC);
+}
+
+static gboolean
 _invalid_clipboard_selected (ModestWindow *win,
                             ModestDimmingRule *rule) 
 {
@@ -2312,8 +2310,23 @@ _invalid_clipboard_selected (ModestWindow *win,
                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);
                }