static gboolean msg_body_focus (GtkWidget *focus, GdkEventFocus *event, gpointer userdata);
static void body_changed (GtkTextBuffer *buffer, ModestMsgEditWindow *editor);
-static void attachments_selection_changed (ModestAttachmentsView *buffer, ModestMsgEditWindow *editor);
static void recpt_field_changed (GtkTextBuffer *buffer, ModestMsgEditWindow *editor);
static void text_buffer_refresh_attributes (WPTextBuffer *buffer, ModestMsgEditWindow *window);
static void text_buffer_apply_tag (GtkTextBuffer *buffer, GtkTextTag *tag,
GtkTextIter *start, GtkTextIter *end,
gpointer userdata);
+static void text_buffer_insert_text (GtkTextBuffer *buffer,
+ GtkTextIter *location,
+ gchar *text,
+ gint len,
+ ModestMsgEditWindow *window);
static void text_buffer_delete_images_by_id (GtkTextBuffer *buffer, const gchar * image_id);
static void subject_field_changed (GtkEditable *editable, ModestMsgEditWindow *window);
static void subject_field_insert_text (GtkEditable *editable,
GtkWidget *widget,
gpointer userdata)
{
- modest_window_check_dimming_rules_group (MODEST_WINDOW (userdata), "ModestClipboardDimmingRules");
+ modest_window_check_dimming_rules_group (MODEST_WINDOW (userdata), MODEST_DIMMING_RULES_CLIPBOARD);
}
G_CALLBACK (text_buffer_can_redo), obj);
g_signal_connect (G_OBJECT (priv->text_buffer), "changed",
G_CALLBACK (body_changed), obj);
- g_signal_connect (G_OBJECT (priv->attachments_view), "selection-changed",
- G_CALLBACK (attachments_selection_changed), obj);
+ g_signal_connect (G_OBJECT (priv->text_buffer), "insert-text",
+ G_CALLBACK (text_buffer_insert_text), obj);
g_signal_connect (G_OBJECT (obj), "window-state-event",
G_CALLBACK (modest_msg_edit_window_window_state_event),
NULL);
modest_msg_edit_window_reset_modified (self);
- modest_ui_actions_check_window_dimming_rules (MODEST_WINDOW (self));
+ modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (self));
+ modest_ui_actions_check_menu_dimming_rules (MODEST_WINDOW (self));
text_buffer_can_undo (priv->text_buffer, FALSE, self);
text_buffer_can_redo (priv->text_buffer, FALSE, self);
ModestWindowPrivate *parent_priv;
ModestMsgEditWindowPrivate *priv;
ModestPair *account_pair = NULL;
- ModestDimmingRulesGroup *window_rules_group = NULL;
+ ModestDimmingRulesGroup *menu_rules_group = NULL;
+ ModestDimmingRulesGroup *toolbar_rules_group = NULL;
ModestDimmingRulesGroup *clipboard_rules_group = NULL;
ModestWindowMgr *mgr = NULL;
modest_combo_box_set_active_id (MODEST_COMBO_BOX (priv->from_field), account_pair->first);
parent_priv->ui_dimming_manager = modest_ui_dimming_manager_new ();
- window_rules_group = modest_dimming_rules_group_new ("ModestWindowDimmingRules", TRUE);
- clipboard_rules_group = modest_dimming_rules_group_new ("ModestClipboardDimmingRules", FALSE);
+ menu_rules_group = modest_dimming_rules_group_new (MODEST_DIMMING_RULES_MENU, FALSE);
+ toolbar_rules_group = modest_dimming_rules_group_new (MODEST_DIMMING_RULES_TOOLBAR, TRUE);
+ clipboard_rules_group = modest_dimming_rules_group_new (MODEST_DIMMING_RULES_CLIPBOARD, FALSE);
/* Add common dimming rules */
- modest_dimming_rules_group_add_rules (window_rules_group,
- modest_msg_edit_window_toolbar_dimming_entries,
- G_N_ELEMENTS (modest_msg_edit_window_toolbar_dimming_entries),
- MODEST_WINDOW (obj));
- modest_dimming_rules_group_add_rules (window_rules_group,
+ modest_dimming_rules_group_add_rules (menu_rules_group,
modest_msg_edit_window_menu_dimming_entries,
G_N_ELEMENTS (modest_msg_edit_window_menu_dimming_entries),
MODEST_WINDOW (obj));
- modest_dimming_rules_group_add_widget_rule (window_rules_group, priv->font_color_button,
+ modest_dimming_rules_group_add_rules (toolbar_rules_group,
+ modest_msg_edit_window_toolbar_dimming_entries,
+ G_N_ELEMENTS (modest_msg_edit_window_toolbar_dimming_entries),
+ MODEST_WINDOW (obj));
+ modest_dimming_rules_group_add_widget_rule (toolbar_rules_group, priv->font_color_button,
G_CALLBACK (modest_ui_dimming_rules_on_set_style),
MODEST_WINDOW (obj));
- modest_dimming_rules_group_add_widget_rule (window_rules_group, priv->font_size_toolitem,
+ modest_dimming_rules_group_add_widget_rule (toolbar_rules_group, priv->font_size_toolitem,
G_CALLBACK (modest_ui_dimming_rules_on_set_style),
MODEST_WINDOW (obj));
- modest_dimming_rules_group_add_widget_rule (window_rules_group, priv->font_face_toolitem,
+ modest_dimming_rules_group_add_widget_rule (toolbar_rules_group, priv->font_face_toolitem,
G_CALLBACK (modest_ui_dimming_rules_on_set_style),
MODEST_WINDOW (obj));
modest_dimming_rules_group_add_rules (clipboard_rules_group,
G_N_ELEMENTS (modest_msg_edit_window_clipboard_dimming_entries),
MODEST_WINDOW (obj));
/* Insert dimming rules group for this window */
- modest_ui_dimming_manager_insert_rules_group (parent_priv->ui_dimming_manager, window_rules_group);
+ modest_ui_dimming_manager_insert_rules_group (parent_priv->ui_dimming_manager, menu_rules_group);
+ modest_ui_dimming_manager_insert_rules_group (parent_priv->ui_dimming_manager, toolbar_rules_group);
modest_ui_dimming_manager_insert_rules_group (parent_priv->ui_dimming_manager, clipboard_rules_group);
/* Checks the dimming rules */
- g_object_unref (window_rules_group);
+ g_object_unref (menu_rules_group);
+ g_object_unref (toolbar_rules_group);
g_object_unref (clipboard_rules_group);
gtk_widget_show_all (GTK_WIDGET (obj));
text_buffer_refresh_attributes (WP_TEXT_BUFFER (priv->text_buffer), MODEST_MSG_EDIT_WINDOW (obj));
- modest_ui_actions_check_window_dimming_rules (MODEST_WINDOW (obj));
- modest_window_check_dimming_rules_group (MODEST_WINDOW (obj), "ModestClipboardDimmingRules");
+ modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (obj));
+ modest_ui_actions_check_menu_dimming_rules (MODEST_WINDOW (obj));
+ modest_window_check_dimming_rules_group (MODEST_WINDOW (obj), MODEST_DIMMING_RULES_CLIPBOARD);
priv->update_caption_visibility = TRUE;
modest_msg_edit_window_reset_modified (MODEST_MSG_EDIT_WINDOW (obj));
}
break;
}
- modest_ui_actions_check_window_dimming_rules (MODEST_WINDOW (window));
+ modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (window));
}
}
wp_text_buffer_undo (WP_TEXT_BUFFER (priv->text_buffer));
- modest_ui_actions_check_window_dimming_rules (MODEST_WINDOW (window));
+ modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (window));
+ modest_ui_actions_check_menu_dimming_rules (MODEST_WINDOW (window));
}
wp_text_buffer_redo (WP_TEXT_BUFFER (priv->text_buffer));
- modest_ui_actions_check_window_dimming_rules (MODEST_WINDOW (window));
+ modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (window));
+ modest_ui_actions_check_menu_dimming_rules (MODEST_WINDOW (window));
}
gpointer userdata)
{
- modest_ui_actions_check_window_dimming_rules (MODEST_WINDOW (userdata));
- modest_window_check_dimming_rules_group (MODEST_WINDOW (userdata), "ModestClipboardDimmingRules");
+ modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (userdata));
+ modest_ui_actions_check_menu_dimming_rules (MODEST_WINDOW (userdata));
+ modest_window_check_dimming_rules_group (MODEST_WINDOW (userdata), MODEST_DIMMING_RULES_CLIPBOARD);
return FALSE;
}
recpt_field_changed (GtkTextBuffer *buffer,
ModestMsgEditWindow *editor)
{
- modest_ui_actions_check_window_dimming_rules (MODEST_WINDOW (editor));
+ modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (editor));
+ modest_ui_actions_check_menu_dimming_rules (MODEST_WINDOW (editor));
}
static void
body_changed (GtkTextBuffer *buffer, ModestMsgEditWindow *editor)
{
- modest_ui_actions_check_window_dimming_rules (MODEST_WINDOW (editor));
-}
-
-static void
-attachments_selection_changed (ModestAttachmentsView *atts_view, ModestMsgEditWindow *window)
-{
- modest_ui_actions_check_window_dimming_rules (MODEST_WINDOW (window));
+ modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (editor));
+ modest_ui_actions_check_menu_dimming_rules (MODEST_WINDOW (editor));
}
void
}
priv->clipboard_text = text;
- modest_window_check_dimming_rules_group (MODEST_WINDOW (window), "ModestClipboardDimmingRules");
+ modest_window_check_dimming_rules_group (MODEST_WINDOW (window), MODEST_DIMMING_RULES_CLIPBOARD);
}
static void
subject_field_move_cursor (GtkEntry *entry,
if (!GTK_WIDGET_VISIBLE (window))
return;
- modest_window_check_dimming_rules_group (MODEST_WINDOW (window), "ModestClipboardDimmingRules");
+ modest_window_check_dimming_rules_group (MODEST_WINDOW (window), MODEST_DIMMING_RULES_CLIPBOARD);
}
static void
ModestMsgEditWindowPrivate *priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
update_window_title (window);
gtk_text_buffer_set_modified (priv->text_buffer, TRUE);
- modest_ui_actions_check_window_dimming_rules (MODEST_WINDOW (window));
+ modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (window));
+ modest_ui_actions_check_menu_dimming_rules (MODEST_WINDOW (window));
}
static void
g_string_free (result, TRUE);
}
+static void
+text_buffer_insert_text (GtkTextBuffer *buffer,
+ GtkTextIter *iter,
+ gchar *new_text,
+ gint new_text_length,
+ ModestMsgEditWindow *window)
+{
+ GString *result = g_string_new ("");
+ gchar *current;
+ gint result_len = 0;
+ gboolean changed = FALSE;
+
+ for (current = new_text; current != NULL && *current != '\0'; current = g_utf8_next_char (current)) {
+ gunichar c = g_utf8_get_char_validated (current, 8);
+ /* Invalid unichar, stop */
+ if (c == -1)
+ break;
+ /* a bullet */
+ switch (c) {
+ case 0x2022:
+ result = g_string_append_c (result, ' ');
+ changed = TRUE;
+ break;
+ default:
+ result = g_string_append_unichar (result, c);
+ }
+ result_len++;
+ }
+
+ if (changed) {
+ g_signal_stop_emission_by_name (G_OBJECT (buffer), "insert-text");
+ g_signal_handlers_block_by_func(G_OBJECT(buffer), G_CALLBACK(text_buffer_insert_text), window);
+ g_signal_emit_by_name (buffer, "insert-text",
+ (gpointer) iter,
+ (gpointer) result->str, (gpointer) result->len,
+ (gpointer) window);
+ g_signal_handlers_unblock_by_func(G_OBJECT(buffer), G_CALLBACK(text_buffer_insert_text), window);
+ }
+
+ g_string_free (result, TRUE);
+}
+
void
modest_msg_edit_window_toggle_find_toolbar (ModestMsgEditWindow *window,
gboolean show)