GtkWidget *from_field;
gchar *last_from_account;
gchar *original_account_name;
+
+ gchar *references;
+ gchar *in_reply_to;
GtkWidget *to_field;
GtkWidget *cc_field;
priv->font_dialog = NULL;
priv->app_menu = NULL;
+ priv->references = NULL;
+ priv->in_reply_to = NULL;
+
if (!is_wp_text_buffer_started) {
is_wp_text_buffer_started = TRUE;
wp_text_buffer_library_init ();
ModestMsgEditWindow *win = (ModestMsgEditWindow *) userdata;
ModestMsgEditWindowPrivate *priv;
+ /* It could happen that the window was already closed */
+ if (!GTK_WIDGET_VISIBLE (win))
+ return FALSE;
+
priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE(win);
correct_scroll_without_drag_check (win, TRUE);
GtkTextMark *insert;
GtkAdjustment *vadj;
+ /* It could happen that the window was already closed */
+ if (!GTK_WIDGET_VISIBLE (w))
+ return FALSE;
+
priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE(w);
insert = gtk_text_buffer_get_insert (priv->text_buffer);
return;
}
- priv->correct_scroll_idle = g_idle_add ((GSourceFunc) correct_scroll_without_drag_check_idle,
- (gpointer) w);
+ priv->correct_scroll_idle = g_idle_add_full (G_PRIORITY_DEFAULT_IDLE,
+ (GSourceFunc) correct_scroll_without_drag_check_idle,
+ g_object_ref (w),
+ g_object_unref);
}
static void
priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE(w);
if (gtk_grab_get_current () == priv->msg_body) {
if (priv->scroll_drag_timeout_id == 0) {
- priv->scroll_drag_timeout_id = g_timeout_add (500, (GSourceFunc) scroll_drag_timeout,
- (gpointer) w);
+ priv->scroll_drag_timeout_id = g_timeout_add_full (G_PRIORITY_DEFAULT,
+ 500,
+ (GSourceFunc) scroll_drag_timeout,
+ g_object_ref (w),
+ g_object_unref);
}
return;
}
gtk_container_add (GTK_CONTAINER (window_align), main_vbox);
hildon_pannable_area_add_with_viewport (HILDON_PANNABLE_AREA (priv->pannable), window_align);
- gtk_container_set_focus_vadjustment (GTK_CONTAINER (main_vbox),
- hildon_pannable_area_get_vadjustment (HILDON_PANNABLE_AREA (priv->pannable)));
gtk_widget_show_all (GTK_WIDGET(priv->pannable));
window_box = gtk_vbox_new (FALSE, 0);
g_free (priv->original_account_name);
g_free (priv->msg_uid);
g_free (priv->last_search);
+ g_free (priv->references);
+ g_free (priv->in_reply_to);
g_object_unref (priv->faces_model);
g_object_unref (priv->sizes_model);
g_object_unref (priv->attachments);
G_OBJECT_CLASS(parent_class)->finalize (obj);
}
+static void
+pixbuf_size_prepared (GdkPixbufLoader *loader,
+ gint width,
+ gint height,
+ ModestMsgEditWindow *self)
+{
+ gint new_height, new_width;
+ gboolean set_size;
+
+ new_height = height;
+ new_width = width;
+ set_size = FALSE;
+
+ if (width > IMAGE_MAX_WIDTH) {
+ new_height = height * IMAGE_MAX_WIDTH / width;
+ new_width = IMAGE_MAX_WIDTH;
+ }
+
+ gdk_pixbuf_loader_set_size (loader, new_width, new_height);
+}
+
static GdkPixbuf *
pixbuf_from_stream (TnyStream *stream,
const gchar *mime_type,
*stream_size = 0;
return NULL;
}
+ g_signal_connect (G_OBJECT (loader), "size-prepared", G_CALLBACK (pixbuf_size_prepared), self);
hildon_gtk_window_set_progress_indicator (GTK_WINDOW (self), TRUE);
cc = tny_header_dup_cc (header);
bcc = tny_header_dup_bcc (header);
subject = tny_header_dup_subject (header);
+
+ modest_tny_msg_get_references (TNY_MSG (msg), NULL, &(priv->references), &(priv->in_reply_to));
priority_flags = tny_header_get_priority (header);
if (to)
GtkWidget *sizes_menu;
GtkWidget *fonts_menu;
gchar *markup;
+ GtkWidget *arrow;
+ GtkWidget *hbox;
/* Toolbar */
parent_priv->toolbar = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar");
markup = g_strconcat ("<span font_family='", DEFAULT_SIZE_BUTTON_FONT_FAMILY, "'>",
size_text, "</span>", NULL);
gtk_label_set_markup (GTK_LABEL (priv->size_tool_button_label), markup);
+ gtk_misc_set_alignment (GTK_MISC (priv->size_tool_button_label), 1.0, 0.5);
g_free (markup);
hildon_helper_set_logical_font (priv->size_tool_button_label, "LargeSystemFont");
- gtk_tool_button_set_label_widget (GTK_TOOL_BUTTON (tool_item), priv->size_tool_button_label);
+ hbox = gtk_hbox_new (MODEST_MARGIN_DEFAULT, FALSE);
+ gtk_box_pack_start (GTK_BOX (hbox), priv->size_tool_button_label, TRUE, TRUE, 0);
+ arrow = gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_NONE);
+ gtk_misc_set_alignment (GTK_MISC (arrow), 0.0, 0.5);
+ gtk_box_pack_start (GTK_BOX (hbox), arrow, TRUE, TRUE, 0);
+ gtk_widget_set_sensitive (arrow, FALSE);
+ gtk_tool_button_set_label_widget (GTK_TOOL_BUTTON (tool_item), hbox);
sizes_menu = gtk_menu_new ();
priv->sizes_model = GTK_TREE_MODEL (gtk_list_store_new (1, G_TYPE_STRING));
for (size_index = 0; size_index < WP_FONT_SIZE_COUNT; size_index++) {
priv->font_tool_button_label = gtk_label_new (NULL);
markup = g_strconcat ("<span font_family='", wp_get_font_name(DEFAULT_FONT), "'>Tt</span>", NULL);
gtk_label_set_markup (GTK_LABEL (priv->font_tool_button_label), markup);
+ gtk_misc_set_alignment (GTK_MISC (priv->font_tool_button_label), 1.0, 0.5);
g_free(markup);
hildon_helper_set_logical_font (priv->font_tool_button_label, "LargeSystemFont");
- gtk_tool_button_set_label_widget (GTK_TOOL_BUTTON (tool_item), priv->font_tool_button_label);
+ hbox = gtk_hbox_new (MODEST_MARGIN_DEFAULT, FALSE);
+ gtk_box_pack_start (GTK_BOX (hbox), priv->font_tool_button_label, TRUE, TRUE, 0);
+ arrow = gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_NONE);
+ gtk_misc_set_alignment (GTK_MISC (arrow), 0.0, 0.5);
+ gtk_box_pack_start (GTK_BOX (hbox), arrow, TRUE, TRUE, 0);
+ gtk_widget_set_sensitive (arrow, FALSE);
+ gtk_tool_button_set_label_widget (GTK_TOOL_BUTTON (tool_item), hbox);
fonts_menu = gtk_menu_new ();
priv->faces_model = GTK_TREE_MODEL (gtk_list_store_new (1, G_TYPE_STRING));
for (font_index = 0; font_index < wp_get_font_count (); font_index++) {
data->cc = g_strdup (modest_recpt_editor_get_recipients (MODEST_RECPT_EDITOR (priv->cc_field)));
data->bcc = g_strdup (modest_recpt_editor_get_recipients (MODEST_RECPT_EDITOR (priv->bcc_field)));
data->subject = g_strdup (gtk_entry_get_text (GTK_ENTRY (priv->subject_field)));
+ data->references = g_strdup (priv->references);
+ data->in_reply_to = g_strdup (priv->in_reply_to);
if (priv->draft_msg) {
data->draft_msg = g_object_ref (priv->draft_msg);
} else if (priv->outbox_msg) {
g_free (data->plain_body);
g_free (data->html_body);
g_free (data->account_name);
+ g_free (data->references);
+ g_free (data->in_reply_to);
if (data->draft_msg != NULL) {
g_object_unref (data->draft_msg);
{
ModestMsgEditFormatState *format_state = NULL;
ModestMsgEditWindowPrivate *priv;
- WPTextBufferFormat *buffer_format = g_new0 (WPTextBufferFormat, 1);
+ WPTextBufferFormat *buffer_format;
g_return_val_if_fail (MODEST_IS_MSG_EDIT_WINDOW (self), NULL);
+
+ buffer_format = g_new0 (WPTextBufferFormat, 1);
priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (self);
wp_text_buffer_get_attributes (WP_TEXT_BUFFER (priv->text_buffer), buffer_format, TRUE);
const ModestMsgEditFormatState *format_state)
{
ModestMsgEditWindowPrivate *priv;
- WPTextBufferFormat *buffer_format = g_new0 (WPTextBufferFormat, 1);
- WPTextBufferFormat *current_format = g_new0 (WPTextBufferFormat, 1);
+ WPTextBufferFormat *buffer_format;
+ WPTextBufferFormat *current_format;
+
g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (self));
g_return_if_fail (format_state != NULL);
+ buffer_format = g_new0 (WPTextBufferFormat, 1);
+ current_format = g_new0 (WPTextBufferFormat, 1);
+
priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (self);
gtk_widget_grab_focus (priv->msg_body);
buffer_format->bold = (format_state->bold != FALSE);
dialog = hildon_picker_dialog_new (GTK_WINDOW (window));
hildon_picker_dialog_set_selector (HILDON_PICKER_DIALOG (dialog), HILDON_TOUCH_SELECTOR (selector));
+ gtk_window_set_title (GTK_WINDOW (dialog), _("mcen_ti_font_size"));
if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK) {
gint new_index;
dialog = hildon_picker_dialog_new (GTK_WINDOW (window));
hildon_picker_dialog_set_selector (HILDON_PICKER_DIALOG (dialog), HILDON_TOUCH_SELECTOR (selector));
+ gtk_window_set_title (GTK_WINDOW (dialog), _("mcen_ti_font_face"));
if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK) {
gint new_font_index;
ModestMsgEditWindowPrivate *priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
GtkClipboard *selection_clipboard = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD);
gchar *text = NULL;
+
+ /* It could happen that the window was already closed */
if (!GTK_WIDGET_VISIBLE (window))
return;
}
priv->clipboard_text = text;
- if (GTK_WIDGET_VISIBLE (window)) {
- modest_window_check_dimming_rules_group (MODEST_WINDOW (window), MODEST_DIMMING_RULES_CLIPBOARD);
- }
+ modest_window_check_dimming_rules_group (MODEST_WINDOW (window), MODEST_DIMMING_RULES_CLIPBOARD);
+
g_object_unref (window);
}
{
ModestMsgEditWindowPrivate *priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
if (priv->clipboard_owner_idle == 0) {
- priv->clipboard_owner_idle = g_idle_add (clipboard_owner_change_idle, window);
+ priv->clipboard_owner_idle = g_idle_add_full (G_PRIORITY_DEFAULT_IDLE,
+ clipboard_owner_change_idle,
+ g_object_ref (window),
+ g_object_unref);
}
}
gboolean a2,
gpointer window)
{
+ /* It could happen that the window was already closed */
if (!GTK_WIDGET_VISIBLE (window))
return;
if (!g_utf8_collate (range_subtext, str_casefold)) {
gchar *found_text = g_strndup (range_text + offset, str_chars_n);
result = TRUE;
- gtk_text_iter_forward_search (iter, found_text, GTK_TEXT_SEARCH_VISIBLE_ONLY|GTK_TEXT_SEARCH_TEXT_ONLY,
- match_start, match_end, NULL);
+ if (!gtk_text_iter_forward_search (iter, found_text, GTK_TEXT_SEARCH_VISIBLE_ONLY|GTK_TEXT_SEARCH_TEXT_ONLY,
+ match_start, match_end, NULL)) {
+ g_warning ("Matched string with collate, but not matched in model");
+ }
g_free (found_text);
}
g_free (range_subtext);
g_return_if_fail ((draft == NULL)||(TNY_IS_MSG (draft)));
priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
- ModestWindowMgr *mgr = modest_runtime_get_window_mgr ();
if (priv->draft_msg != NULL) {
g_object_unref (priv->draft_msg);
priv->msg_uid = NULL;
}
priv->msg_uid = modest_tny_folder_get_header_unique_id (header);
- if (GTK_WIDGET_REALIZED (window)) {
- if (!modest_window_mgr_register_window (mgr, MODEST_WINDOW (window), NULL)) {
- gtk_widget_destroy (GTK_WIDGET (window));
- return;
- }
- }
}
priv->draft_msg = draft;