diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2010-10-15 04:31:28 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2010-10-15 04:32:29 +0800 |
commit | d4e5485e0237d1ff38b74083c304336d86cbca33 (patch) | |
tree | 20765a88160b25dfbe86f739e60e47c845c14d65 /composer/e-msg-composer.c | |
parent | 9b181e8e3d9e5a1bce51ca32245f5f013f03f881 (diff) | |
download | gsoc2013-evolution-d4e5485e0237d1ff38b74083c304336d86cbca33.tar gsoc2013-evolution-d4e5485e0237d1ff38b74083c304336d86cbca33.tar.gz gsoc2013-evolution-d4e5485e0237d1ff38b74083c304336d86cbca33.tar.bz2 gsoc2013-evolution-d4e5485e0237d1ff38b74083c304336d86cbca33.tar.lz gsoc2013-evolution-d4e5485e0237d1ff38b74083c304336d86cbca33.tar.xz gsoc2013-evolution-d4e5485e0237d1ff38b74083c304336d86cbca33.tar.zst gsoc2013-evolution-d4e5485e0237d1ff38b74083c304336d86cbca33.zip |
Bug 632127 - Composer is editable while sending message
Diffstat (limited to 'composer/e-msg-composer.c')
-rw-r--r-- | composer/e-msg-composer.c | 80 |
1 files changed, 43 insertions, 37 deletions
diff --git a/composer/e-msg-composer.c b/composer/e-msg-composer.c index cc4b3c3b08..a30a48263b 100644 --- a/composer/e-msg-composer.c +++ b/composer/e-msg-composer.c @@ -1981,9 +1981,9 @@ msg_composer_constructed (GObject *object) EAttachmentView *view; EAttachmentStore *store; EComposerHeaderTable *table; + EWebView *web_view; GtkUIManager *ui_manager; GtkToggleAction *action; - GtkHTML *html; GArray *array; const gchar *id; gboolean active; @@ -2002,7 +2002,7 @@ msg_composer_constructed (GObject *object) e_composer_private_constructed (composer); - html = gtkhtml_editor_get_html (editor); + web_view = e_msg_composer_get_web_view (composer); ui_manager = gtkhtml_editor_get_ui_manager (editor); view = e_msg_composer_get_attachment_view (composer); table = E_COMPOSER_HEADER_TABLE (composer->priv->header_table); @@ -2051,21 +2051,21 @@ msg_composer_constructed (GObject *object) /* Clipboard Support */ g_signal_connect ( - html, "paste-clipboard", + web_view, "paste-clipboard", G_CALLBACK (msg_composer_paste_clipboard_cb), composer); /* Drag-and-Drop Support */ g_signal_connect ( - html, "realize", + web_view, "realize", G_CALLBACK (msg_composer_realize_gtkhtml_cb), composer); g_signal_connect ( - html, "drag-motion", + web_view, "drag-motion", G_CALLBACK (msg_composer_drag_motion_cb), composer); g_signal_connect ( - html, "drag-data-received", + web_view, "drag-data-received", G_CALLBACK (msg_composer_drag_data_received_cb), composer); /* Configure Headers */ @@ -2193,10 +2193,11 @@ msg_composer_key_press_event (GtkWidget *widget, EMsgComposer *composer = E_MSG_COMPOSER (widget); GtkWidget *input_widget; GtkhtmlEditor *editor; - GtkHTML *html; + EWebView *web_view; editor = GTKHTML_EDITOR (widget); - html = gtkhtml_editor_get_html (editor); + composer = E_MSG_COMPOSER (widget); + web_view = e_msg_composer_get_web_view (composer); input_widget = e_composer_header_table_get_header ( @@ -2221,7 +2222,7 @@ msg_composer_key_press_event (GtkWidget *widget, } if (event->keyval == GDK_KEY_ISO_Left_Tab && - gtk_widget_is_focus (GTK_WIDGET (html))) { + gtk_widget_is_focus (GTK_WIDGET (web_view))) { gtk_widget_grab_focus (input_widget); return TRUE; } @@ -3369,30 +3370,6 @@ e_msg_composer_new_with_message (EShell *shell, return composer; } -static void -disable_editor (EMsgComposer *composer) -{ - GtkhtmlEditor *editor; - GtkAction *action; - - g_return_if_fail (E_IS_MSG_COMPOSER (composer)); - - editor = GTKHTML_EDITOR (composer); - - gtkhtml_editor_run_command (editor, "editable-off"); - - action = GTKHTML_EDITOR_ACTION_EDIT_MENU (composer); - gtk_action_set_sensitive (action, FALSE); - - action = GTKHTML_EDITOR_ACTION_FORMAT_MENU (composer); - gtk_action_set_sensitive (action, FALSE); - - action = GTKHTML_EDITOR_ACTION_INSERT_MENU (composer); - gtk_action_set_sensitive (action, FALSE); - - gtk_widget_set_sensitive (composer->priv->attachment_paned, FALSE); -} - /** * e_msg_composer_new_redirect: * @shell: an #EShell @@ -3410,6 +3387,7 @@ e_msg_composer_new_redirect (EShell *shell, { EMsgComposer *composer; EComposerHeaderTable *table; + EWebView *web_view; const gchar *subject; g_return_val_if_fail (E_IS_SHELL (shell), NULL); @@ -3427,7 +3405,8 @@ e_msg_composer_new_redirect (EShell *shell, e_composer_header_table_set_account_name (table, resent_from); e_composer_header_table_set_subject (table, subject); - disable_editor (composer); + web_view = e_msg_composer_get_web_view (composer); + e_web_view_set_editable (web_view, FALSE); return composer; } @@ -3475,6 +3454,30 @@ e_msg_composer_get_shell (EMsgComposer *composer) return E_SHELL (composer->priv->shell); } +/** + * e_msg_composer_get_web_view: + * @composer: an #EMsgComposer + * + * Returns the #EWebView widget in @composer. + * + * Returns: the #EWebView + **/ +EWebView * +e_msg_composer_get_web_view (EMsgComposer *composer) +{ + GtkHTML *html; + GtkhtmlEditor *editor; + + g_return_val_if_fail (E_IS_MSG_COMPOSER (composer), NULL); + + /* This is a convenience function to avoid + * repeating this awkwardness everywhere */ + editor = GTKHTML_EDITOR (composer); + html = gtkhtml_editor_get_html (editor); + + return E_WEB_VIEW (html); +} + static void msg_composer_send_cb (EMsgComposer *composer, GAsyncResult *result, @@ -3951,8 +3954,7 @@ e_msg_composer_set_body_text (EMsgComposer *composer, * @body: the data to initialize the composer with * @mime_type: the MIME type of data * - * Loads the given data ginto the composer as the message body. - * This function should only be used by the CORBA composer factory. + * Loads the given data into the composer as the message body. **/ void e_msg_composer_set_body (EMsgComposer *composer, @@ -3961,6 +3963,7 @@ e_msg_composer_set_body (EMsgComposer *composer, { EMsgComposerPrivate *p = composer->priv; EComposerHeaderTable *table; + EWebView *web_view; gchar *buff; g_return_if_fail (E_IS_MSG_COMPOSER (composer)); @@ -3972,8 +3975,11 @@ e_msg_composer_set_body (EMsgComposer *composer, "message body, which cannot be edited.")); set_editor_text (composer, buff, FALSE); g_free (buff); + gtkhtml_editor_set_html_mode (GTKHTML_EDITOR (composer), FALSE); - disable_editor (composer); + + web_view = e_msg_composer_get_web_view (composer); + e_web_view_set_editable (web_view, FALSE); g_free (p->mime_body); p->mime_body = g_strdup (body); |