a few comments below. Jeff On Sun, 2004-11-07 at 13:34 -0600, Jason Hildebrand wrote: > Hi Jeffrey, > > I submitted this patch way back prior to the Evo 2.0 freeze. It makes > it > possible to use an alternate editor instead of GtkHTML by setting > the /apps/evolution/mail/composer/editor_oafiid gconf key. > > The patch was reviewed at that time, but didn't actually get committed > before > the freeze. > > I've just updated it to apply cleanly to CVS head, and have compiled > and > tested it, and would appreciate it if you could review/commit it now. > > peace, > Jason > > > > > > > > text/x-patch > attachment > (gconf-editor-oafiid.patch) > > Index: composer/ChangeLog > =================================================================== > RCS file: /cvs/gnome/evolution/composer/ChangeLog,v > retrieving revision 1.669 > diff -u -p -r1.669 ChangeLog > --- composer/ChangeLog 28 Oct 2004 09:25:47 -0000 1.669 > +++ composer/ChangeLog 7 Nov 2004 19:23:11 -0000 > @@ -1,3 +1,9 @@ > +2004-11-07 Jason Hildebrand <jason peaceworks ca> > + > + * e-msg-composer.c: > use /apps/evolution/mail/composer/editor_oafiid > + gconf key to get oafiid of editor component to use. Fallback to > + using GtkHTML if there are any errors instantiating the editor. > + > 2004-10-28 Not Zed <NotZed Ximian com> > > * e-msg-composer.c (drag_data_received): fix the popup id. > Index: composer/e-msg-composer.c > =================================================================== > RCS file: /cvs/gnome/evolution/composer/e-msg-composer.c,v > retrieving revision 1.490 > diff -u -p -r1.490 e-msg-composer.c > --- composer/e-msg-composer.c 28 Oct 2004 09:25:47 -0000 1.490 > +++ composer/e-msg-composer.c 7 Nov 2004 19:23:16 -0000 > @@ -2517,6 +2517,8 @@ composer_finalise (GObject *object) > g_hash_table_destroy (composer->inline_images); > g_hash_table_destroy (composer->inline_images_by_url); > > + g_free (composer->editor_oafiid); > + > g_free (composer->charset); > g_free (composer->mime_type); > g_free (composer->mime_body); > @@ -3077,6 +3079,7 @@ static void > e_msg_composer_load_config (EMsgComposer *composer, int visible_mask) > { > GConfClient *gconf; > + GError *err = NULL; > > gconf = gconf_client_get_default (); > > @@ -3094,6 +3097,17 @@ e_msg_composer_load_config (EMsgComposer > gconf, "/apps/evolution/mail/composer/view/Bcc", > NULL); > composer->view_subject = gconf_client_get_bool ( > gconf, "/apps/evolution/mail/composer/view/Subject", > NULL); > + composer->editor_oafiid = gconf_client_get_string ( > + gconf, "/apps/evolution/mail/composer/editor_oafiid", > &err); > + /* if any error occurs reading the editor key, or if key is > empty, fallback to GtkHTML */ > + if (err || composer->editor_oafiid == NULL || ! > composer->editor_oafiid[0]) { I don't think you should check err NULLness here, you accomplish the same with checking the return value of the oafiid. > + if (composer->editor_oafiid) { > + g_free (composer->editor_oafiid); > + } just g_free (composer->editor_oafiid); no need to check non-NULL first. Also, for style - don't use braces if there is only one statement to call. > + composer->editor_oafiid = g_strdup > (GNOME_GTKHTML_EDITOR_CONTROL_ID); > + g_error_free (err); since you don't actually use err, why even bother having it? > + } > + composer->catch_escape = TRUE; > > /* if we're mailing, you cannot disable to so it should appear > checked */ > if (visible_mask & E_MSG_COMPOSER_VISIBLE_TO) > @@ -3202,7 +3216,7 @@ msg_composer_destroy_notify (void *data) > static int > composer_key_pressed (EMsgComposer *composer, GdkEventKey *event, > void *user_data) > { > - if (event->keyval == GDK_Escape) { > + if (event->keyval == GDK_Escape && composer->catch_escape) { > do_exit (composer); > g_signal_stop_emission_by_name (composer, > "key-press-event"); > return TRUE; > @@ -3325,6 +3339,7 @@ create_composer (int visible_mask) > GList *icon_list; > BonoboControlFrame *control_frame; > GdkPixbuf *attachment_pixbuf; > + gboolean editor_needs_escape = FALSE; > > composer = g_object_new (E_TYPE_MSG_COMPOSER, "win_name", > _("Compose a message"), NULL); > gtk_window_set_title ((GtkWindow *) composer, _("Compose a > message")); > @@ -3380,8 +3395,18 @@ create_composer (int visible_mask) > > /* Editor component. */ > composer->editor = bonobo_widget_new_control ( > - GNOME_GTKHTML_EDITOR_CONTROL_ID, > + composer->editor_oafiid, > bonobo_ui_component_get_container (composer->uic)); > + > + /* if activation of alternate editor failed, try falling back > to the GtkHTML editor */ > + if (!composer->editor && composer->editor_oafiid && strcmp > (GNOME_GTKHTML_EDITOR_CONTROL_ID, composer->editor_oafiid)) { > + composer->editor = bonobo_widget_new_control ( > + GNOME_GTKHTML_EDITOR_CONTROL_ID, > + bonobo_ui_component_get_container > (composer->uic)); > + } > + > + /* if activation still failed, display the error message from > the > + * _original_ activation attempt. */ > if (!composer->editor) { > e_error_run (GTK_WINDOW (composer), > "mail-composer:no-editor-control", NULL); > gtk_object_destroy (GTK_OBJECT (composer)); > @@ -3494,6 +3519,9 @@ create_composer (int visible_mask) > am = autosave_manager_new (); > > autosave_manager_register (am, composer); > + > + bonobo_widget_get_property (BONOBO_WIDGET (composer->editor), > "EditorNeedsEscape", TC_CORBA_boolean, &editor_needs_escape, NULL); > + composer->catch_escape = !editor_needs_escape; > > composer->has_changed = FALSE; > > Index: composer/e-msg-composer.h > =================================================================== > RCS file: /cvs/gnome/evolution/composer/e-msg-composer.h,v > retrieving revision 1.91 > diff -u -p -r1.91 e-msg-composer.h > --- composer/e-msg-composer.h 27 Jul 2004 16:52:17 -0000 1.91 > +++ composer/e-msg-composer.h 7 Nov 2004 19:23:17 -0000 > @@ -74,6 +74,8 @@ struct _EMsgComposer { > > GtkWidget *address_dialog; > > + char *editor_oafiid; > + gboolean catch_escape; > Bonobo_PersistFile persist_file_interface; > Bonobo_PersistStream persist_stream_interface; > GNOME_GtkHTML_Editor_Engine editor_engine; > Index: mail/ChangeLog > =================================================================== > RCS file: /cvs/gnome/evolution/mail/ChangeLog,v > retrieving revision 1.3493 > diff -u -p -r1.3493 ChangeLog > --- mail/ChangeLog 3 Nov 2004 09:47:23 -0000 1.3493 > +++ mail/ChangeLog 7 Nov 2004 19:23:27 -0000 > @@ -1,3 +1,11 @@ > +2004-11-07 Jason Hildebrand <jason peaceworks ca> > + > + * evolution-mail.schemas.in.in: added > + /apps/evolution/mail/composer/editor_oafiid gconf key which can > + be used to specify an alternate editor component. If empty or > + invalid, GtkHTML is used. > + > + > 2004-11-03 Not Zed <NotZed Ximian com> > > * em-folder-view.c (emfv_popup): Fix the popup id. > Index: mail/evolution-mail.schemas.in.in > =================================================================== > RCS file: /cvs/gnome/evolution/mail/evolution-mail.schemas.in.in,v > retrieving revision 1.17 > diff -u -p -r1.17 evolution-mail.schemas.in.in > --- mail/evolution-mail.schemas.in.in 10 May 2004 19:35:38 > -0000 1.17 > +++ mail/evolution-mail.schemas.in.in 7 Nov 2004 19:23:28 -0000 > @@ -74,6 +74,21 @@ > </schema> > > <schema> > + <key>/schemas/apps/evolution/mail/composer/editor_oafiid</key> > + <applyto>/apps/evolution/mail/composer/editor_oafiid</applyto> > + <owner>evolution-mail</owner> > + <type>string</type> > + <default></default> > + <locale name="C"> > + <short>Activation ID (OAFIID) of editor control.</short> > + <long> > + Evolution uses the GtkHTML editor by default. Change this > + ID to use an alternate (compatible) editor. > + </long> > + </locale> > + </schema> > + > + <schema> > <key>/schemas/apps/evolution/mail/composer/view/From</key> > <applyto>/apps/evolution/mail/composer/view/From</applyto> > <owner>evolution-mail</owner -- Jeffrey Stedfast Evolution Hacker - Novell, Inc. fejj ximian com - www.novell.com
Attachment:
smime.p7s
Description: S/MIME cryptographic signature