From 57546880c8e3470834bb7012aee9d892e3ac6708 Mon Sep 17 00:00:00 2001 From: Radek Doulik Date: Thu, 3 May 2001 19:34:28 +0000 Subject: signature editing fixes * signature editing fixes 2001-05-03 Radek Doulik * e-msg-composer.c (get_signature_html): put signature in 100% width table (delete_old_signature): look only for first flow with signature == 1 (e_msg_composer_new): don't insert
(e_msg_composer_new_with_sig_file): ditto (delete_old_signature): don't delete whole signature paragraph, but just it's content (delete_old_signature): if signature isn't found, insert new empty paragraph to end of document for new signature (e_msg_composer_set_sig_file): delete signature always (e_msg_composer_set_sig_file): don't place signature to the end of document, but place it where previous one was (if there wasn't then new one is appended to the document) 2001-05-02 Radek Doulik * listener.c (impl_event): do automagic indenting only when in_signature_insert is FALSE * e-msg-composer.c (e_msg_composer_set_sig_file): do indent-zero before signature inserting (e_msg_composer_set_sig_file): use in_signature_insert flag 2001-05-01 Radek Doulik * listener.c (impl_event): set signature to 0 in newly created empty paragraphs (clear_signature): new helper function svn path=/trunk/; revision=9658 --- composer/e-msg-composer.c | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) (limited to 'composer/e-msg-composer.c') diff --git a/composer/e-msg-composer.c b/composer/e-msg-composer.c index 8565d9becf..dfd63ebf39 100644 --- a/composer/e-msg-composer.c +++ b/composer/e-msg-composer.c @@ -592,7 +592,10 @@ get_signature_html (EMsgComposer *composer) } if (text) { - html = g_strdup_printf ("%s%s%s%s", + html = g_strdup_printf ("" + "
" + "%s%s%s%s" + "
", format_html ? "" : "
\n",
 					format_html || !strncmp ("-- \n", text, 3) ? "" : "--\n",
 					text,
@@ -1845,7 +1848,7 @@ e_msg_composer_new (void)
 	
 	new = create_composer ();
 	if (new)
-		set_editor_text (new, "
"); + set_editor_text (new, ""); return new; } @@ -1865,7 +1868,7 @@ e_msg_composer_new_with_sig_file (const char *sig_file, gboolean send_html) new = create_composer (); if (new) { e_msg_composer_set_send_html (new, send_html); - set_editor_text (new, "
"); + set_editor_text (new, ""); e_msg_composer_set_sig_file (new, sig_file); } @@ -2376,21 +2379,20 @@ static void delete_old_signature (EMsgComposer *composer) { CORBA_Environment ev; - CORBA_boolean rv; /* printf ("delete_old_signature\n"); */ CORBA_exception_init (&ev); GNOME_GtkHTML_Editor_Engine_runCommand (composer->editor_engine, "cursor-bod", &ev); - while (GNOME_GtkHTML_Editor_Engine_searchByData (composer->editor_engine, 1, "ClueFlow", "signature", "1", &ev)) { + if (GNOME_GtkHTML_Editor_Engine_searchByData (composer->editor_engine, 1, "ClueFlow", "signature", "1", &ev)) { /* printf ("found\n"); */ GNOME_GtkHTML_Editor_Engine_runCommand (composer->editor_engine, "select-paragraph", &ev); - rv = GNOME_GtkHTML_Editor_Engine_runCommand (composer->editor_engine, "selection-move-right", &ev); GNOME_GtkHTML_Editor_Engine_runCommand (composer->editor_engine, "delete", &ev); /* selection-move-right doesn't succeed means that we are already on the end of document */ - if (!rv) - break; - } - GNOME_GtkHTML_Editor_Engine_setParagraphData (composer->editor_engine, "signature", "0", &ev); + /* if (!rv) + break; */ + GNOME_GtkHTML_Editor_Engine_setParagraphData (composer->editor_engine, "signature", "0", &ev); + } else + GNOME_GtkHTML_Editor_Engine_runCommand (composer->editor_engine, "insert-paragraph", &ev); CORBA_exception_free (&ev); } @@ -2412,12 +2414,13 @@ e_msg_composer_set_sig_file (EMsgComposer *composer, const char *sig_file) /* printf ("set sig '%s' '%s'\n", sig_file, composer->sig_file); */ + composer->in_signature_insert = TRUE; CORBA_exception_init (&ev); GNOME_GtkHTML_Editor_Engine_freeze (composer->editor_engine, &ev); GNOME_GtkHTML_Editor_Engine_runCommand (composer->editor_engine, "cursor-position-save", &ev); GNOME_GtkHTML_Editor_Engine_undo_begin (composer->editor_engine, "Set signature", "Reset signature", &ev); - if (composer->sig_file) - delete_old_signature (composer); + + delete_old_signature (composer); if (composer->sig_file != sig_file && (!sig_file || !composer->sig_file || strcmp (composer->sig_file, sig_file))) { g_free (composer->sig_file); @@ -2426,10 +2429,10 @@ e_msg_composer_set_sig_file (EMsgComposer *composer, const char *sig_file) html = get_signature_html (composer); if (html) { - GNOME_GtkHTML_Editor_Engine_runCommand (composer->editor_engine, "cursor-eod", &ev); if (!GNOME_GtkHTML_Editor_Engine_isParagraphEmpty (composer->editor_engine, &ev)) GNOME_GtkHTML_Editor_Engine_runCommand (composer->editor_engine, "insert-paragraph", &ev); /* printf ("insert %s\n", html); */ + GNOME_GtkHTML_Editor_Engine_runCommand (composer->editor_engine, "indent-zero", &ev); GNOME_GtkHTML_Editor_Engine_insertHTML (composer->editor_engine, html, &ev); g_free (html); } @@ -2437,6 +2440,7 @@ e_msg_composer_set_sig_file (EMsgComposer *composer, const char *sig_file) GNOME_GtkHTML_Editor_Engine_runCommand (composer->editor_engine, "cursor-position-restore", &ev); GNOME_GtkHTML_Editor_Engine_thaw (composer->editor_engine, &ev); CORBA_exception_free (&ev); + composer->in_signature_insert = FALSE; } /** -- cgit v1.2.3