diff options
-rw-r--r-- | composer/ChangeLog | 19 | ||||
-rw-r--r-- | composer/e-msg-composer-hdrs.c | 26 | ||||
-rw-r--r-- | composer/e-msg-composer-hdrs.h | 2 | ||||
-rw-r--r-- | composer/e-msg-composer.c | 45 | ||||
-rw-r--r-- | composer/e-msg-composer.h | 2 |
5 files changed, 50 insertions, 44 deletions
diff --git a/composer/ChangeLog b/composer/ChangeLog index 0def2175cc..62dbdb6e1a 100644 --- a/composer/ChangeLog +++ b/composer/ChangeLog @@ -1,3 +1,22 @@ +2003-03-18 Jeffrey Stedfast <fejj@ximian.com> + + * e-msg-composer.c (do_exit): e_msg_composer_hdrs_get_subject() + now returns const so don't g_free() it :-) + (map_default_cb): Same as above. Also, the subject entry no longer + derives from GnomeCanvas so eliminate the now unneeded casting to + grab the focus of the subject widget. + (e_msg_composer_get_subject): Return a const char * now. + + * e-msg-composer-hdrs.c (create_headers): Make the subject entry + into a GtkEntry so we don't have to worry about i18n and other + EEntry bugs anymore. Fixes numerous bugs (including #39924). + (e_msg_composer_hdrs_set_subject): Use gtk_entry_set_text(). + (e_msg_composer_hdrs_to_message_internal): + e_msg_composer_hdrs_get_subject() now returns const. + (e_msg_composer_hdrs_get_subject): Return a const char *. + (entry_changed): e_msg_composer_hdrs_get_subject() now returns + const. + 2003-03-13 Jeffrey Stedfast <fejj@ximian.com> * e-msg-composer.c (create_composer): Default the composer's title diff --git a/composer/e-msg-composer-hdrs.c b/composer/e-msg-composer-hdrs.c index 2102cf9198..2d3a9fccdc 100644 --- a/composer/e-msg-composer-hdrs.c +++ b/composer/e-msg-composer-hdrs.c @@ -487,11 +487,10 @@ header_new_recipient (EMsgComposerHdrs *hdrs, const char *name, const char *tip) static void entry_changed (GtkWidget *entry, EMsgComposerHdrs *hdrs) { - char *subject; + const char *subject; subject = e_msg_composer_hdrs_get_subject (hdrs); g_signal_emit (hdrs, signals[SUBJECT_CHANGED], 0, subject); - g_free (subject); g_signal_emit (hdrs, signals[HDRS_CHANGED], 0); } @@ -526,12 +525,7 @@ create_headers (EMsgComposerHdrs *hdrs) * Subject */ priv->subject.label = gtk_label_new (_("Subject:")); - priv->subject.entry = e_entry_new (); - g_object_set (priv->subject.entry, - "editable", TRUE, - "use_ellipsis", TRUE, - "allow_newlines", FALSE, - NULL); + priv->subject.entry = gtk_entry_new (); g_signal_connect (priv->subject.entry, "changed", G_CALLBACK (entry_changed), hdrs); @@ -939,14 +933,14 @@ e_msg_composer_hdrs_to_message_internal (EMsgComposerHdrs *hdrs, { EDestination **to_destv, **cc_destv, **bcc_destv; CamelInternetAddress *addr; - char *subject, *header; + const char *subject; + char *header; g_return_if_fail (E_IS_MSG_COMPOSER_HDRS (hdrs)); g_return_if_fail (CAMEL_IS_MIME_MESSAGE (msg)); subject = e_msg_composer_hdrs_get_subject (hdrs); camel_mime_message_set_subject (msg, subject); - g_free (subject); addr = e_msg_composer_hdrs_get_from (hdrs); if (redirect) { @@ -1127,8 +1121,7 @@ e_msg_composer_hdrs_set_subject (EMsgComposerHdrs *hdrs, g_return_if_fail (E_IS_MSG_COMPOSER_HDRS (hdrs)); g_return_if_fail (subject != NULL); - g_object_set ((GObject *) hdrs->priv->subject.entry, - "text", subject, NULL); + gtk_entry_set_text ((GtkEntry *) hdrs->priv->subject.entry, subject); } @@ -1283,17 +1276,12 @@ e_msg_composer_hdrs_get_post_to (EMsgComposerHdrs *hdrs) return folder ? g_strdup (folder->physicalUri) : NULL; } -char * +const char * e_msg_composer_hdrs_get_subject (EMsgComposerHdrs *hdrs) { - char *subject; - g_return_val_if_fail (E_IS_MSG_COMPOSER_HDRS (hdrs), NULL); - g_object_get((hdrs->priv->subject.entry), - "text", &subject, NULL); - - return subject; + return gtk_entry_get_text ((GtkEntry *) hdrs->priv->subject.entry); } diff --git a/composer/e-msg-composer-hdrs.h b/composer/e-msg-composer-hdrs.h index 7ba370140c..eae32c6ef6 100644 --- a/composer/e-msg-composer-hdrs.h +++ b/composer/e-msg-composer-hdrs.h @@ -128,7 +128,7 @@ EDestination **e_msg_composer_hdrs_get_cc (EMsgComposerHdrs *hdrs); EDestination **e_msg_composer_hdrs_get_bcc (EMsgComposerHdrs *hdrs); EDestination **e_msg_composer_hdrs_get_recipients (EMsgComposerHdrs *hdrs); char *e_msg_composer_hdrs_get_post_to (EMsgComposerHdrs *hdrs); -char *e_msg_composer_hdrs_get_subject (EMsgComposerHdrs *hdrs); +const char *e_msg_composer_hdrs_get_subject (EMsgComposerHdrs *hdrs); GtkWidget *e_msg_composer_hdrs_get_from_hbox (EMsgComposerHdrs *hdrs); GtkWidget *e_msg_composer_hdrs_get_from_omenu (EMsgComposerHdrs *hdrs); diff --git a/composer/e-msg-composer.c b/composer/e-msg-composer.c index b109767c4d..85dfc04668 100644 --- a/composer/e-msg-composer.c +++ b/composer/e-msg-composer.c @@ -1525,7 +1525,7 @@ menu_file_save_draft_cb (BonoboUIComponent *uic, void *data, const char *path) static void do_exit (EMsgComposer *composer) { - char *subject; + const char *subject; GtkWidget *dialog; int button; @@ -1535,27 +1535,27 @@ do_exit (EMsgComposer *composer) } gdk_window_raise (GTK_WIDGET (composer)->window); - + subject = e_msg_composer_hdrs_get_subject (E_MSG_COMPOSER_HDRS (composer->hdrs)); - - dialog = gtk_message_dialog_new(GTK_WINDOW(composer), - GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_ERROR, GTK_BUTTONS_NONE, - _("The message \"%s\" has not been sent.\n\n" - "Do you wish to save your changes?"), - subject); - g_free(subject); - gtk_dialog_add_buttons (GTK_DIALOG(dialog), + + dialog = gtk_message_dialog_new (GTK_WINDOW (composer), + GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, GTK_BUTTONS_NONE, + _("The message \"%s\" has not been sent.\n\n" + "Do you wish to save your changes?"), + subject); + + gtk_dialog_add_buttons (GTK_DIALOG (dialog), _("_Discard Changes"), GTK_RESPONSE_NO, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE, GTK_RESPONSE_YES, NULL); gtk_window_set_title (GTK_WINDOW (dialog), _("Warning: Modified Message")); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_YES); - button = gtk_dialog_run(GTK_DIALOG(dialog)); - gtk_widget_destroy(dialog); - - switch(button) { + button = gtk_dialog_run (GTK_DIALOG (dialog)); + gtk_widget_destroy (dialog); + + switch (button) { case GTK_RESPONSE_YES: /* Save */ g_signal_emit (GTK_OBJECT (composer), signals[SAVE_DRAFT], 0, TRUE); @@ -2687,8 +2687,9 @@ map_default_cb (EMsgComposer *composer, gpointer user_data) GtkWidget *to; BonoboControlFrame *cf; Bonobo_PropertyBag pb = CORBA_OBJECT_NIL; - char *text; CORBA_Environment ev; + const char *subject; + char *text; /* If the 'To:' field is empty, focus it (This is ridiculously complicated) */ @@ -2708,17 +2709,15 @@ map_default_cb (EMsgComposer *composer, gpointer user_data) /* If not, check the subject field */ - text = e_msg_composer_hdrs_get_subject (E_MSG_COMPOSER_HDRS (composer->hdrs)); + subject = e_msg_composer_hdrs_get_subject (E_MSG_COMPOSER_HDRS (composer->hdrs)); - if (!text || text[0] == '\0') { + if (!subject || subject[0] == '\0') { GtkWidget *widget; widget = e_msg_composer_hdrs_get_subject_entry (E_MSG_COMPOSER_HDRS (composer->hdrs)); - gtk_widget_grab_focus (GTK_WIDGET (E_ENTRY (widget)->canvas)); - g_free (text); + gtk_widget_grab_focus (widget); return; } - g_free (text); /* Jump to the editor as a last resort. */ @@ -4642,12 +4641,12 @@ e_msg_composer_get_bcc (EMsgComposer *composer) return composer->hdrs ? e_msg_composer_hdrs_get_bcc (E_MSG_COMPOSER_HDRS (composer->hdrs)) : NULL; } -char * +const char * e_msg_composer_get_subject (EMsgComposer *composer) { g_return_val_if_fail (E_IS_MSG_COMPOSER (composer), NULL); - return composer->hdrs ? e_msg_composer_hdrs_get_subject(E_MSG_COMPOSER_HDRS (composer->hdrs)) : NULL; + return composer->hdrs ? e_msg_composer_hdrs_get_subject (E_MSG_COMPOSER_HDRS (composer->hdrs)) : NULL; } diff --git a/composer/e-msg-composer.h b/composer/e-msg-composer.h index 21a1d6dc41..94be69a153 100644 --- a/composer/e-msg-composer.h +++ b/composer/e-msg-composer.h @@ -169,7 +169,7 @@ EDestination **e_msg_composer_get_recipients (EMsgCo EDestination **e_msg_composer_get_to (EMsgComposer *composer); EDestination **e_msg_composer_get_cc (EMsgComposer *composer); EDestination **e_msg_composer_get_bcc (EMsgComposer *composer); -char *e_msg_composer_get_subject (EMsgComposer *composer); +const char *e_msg_composer_get_subject (EMsgComposer *composer); EAccount *e_msg_composer_get_preferred_account (EMsgComposer *composer); void e_msg_composer_clear_inlined_table (EMsgComposer *composer); |