see if freeing remaining headers (setting Show other headers turned off) plugs memleaks
[claws.git] / src / textview.c
index 531e39609eaf0b3ac99f00301828992ce555e093..222fc7aac3fb09f6842ceaaa711ab188d24562a2 100644 (file)
@@ -360,7 +360,7 @@ void textview_show_part(TextView *textview, MimeInfo *mimeinfo, FILE *fp)
        if (!boundary && (mimeinfo->mime_type == MIME_TEXT || 
                          mimeinfo->mime_type == MIME_TEXT_HTML || 
                          mimeinfo->mime_type == MIME_TEXT_ENRICHED)) {
-       
+               
                if (fseek(fp, mimeinfo->fpos, SEEK_SET) < 0)
                        perror("fseek");
                headers = textview_scan_header(textview, fp);
@@ -504,7 +504,7 @@ static void textview_add_part(TextView *textview, MimeInfo *mimeinfo, FILE *fp)
                        charset = mimeinfo->charset;
                textview_write_body(textview, mimeinfo, fp, charset);
        }
-
+       
        gtk_stext_thaw(text);
 }
 
@@ -542,7 +542,7 @@ void textview_show_mime_part(TextView *textview, MimeInfo *partinfo)
        textview_set_font(textview, NULL);
        text = GTK_STEXT(textview->text);
        textview_clear(textview);
-
+       
        gtk_stext_freeze(text);
 
        TEXT_INSERT(_("To save this part, pop up the context menu with "));
@@ -583,7 +583,7 @@ void textview_show_signature_part(TextView *textview, MimeInfo *partinfo)
        } else {
                TEXT_INSERT(partinfo->sigstatus_full);
        }
-
+               
        gtk_stext_thaw(text);
 }
 #endif /* USE_GPGME */
@@ -649,6 +649,7 @@ static void textview_show_html(TextView *textview, FILE *fp,
                        textview_write_line(textview, str, NULL);
                }
        }
+       
        html_parser_destroy(parser);
 }
 
@@ -657,7 +658,6 @@ static void textview_show_ertf(TextView *textview, FILE *fp,
 {
        ERTFParser *parser;
        gchar *str;
-       gchar* url = NULL;
 
        parser = ertf_parser_new(fp, conv);
        g_return_if_fail(parser != NULL);
@@ -665,6 +665,7 @@ static void textview_show_ertf(TextView *textview, FILE *fp,
        while ((str = ertf_parse(parser)) != NULL) {
                textview_write_line(textview, str, NULL);
        }
+       
        ertf_parser_destroy(parser);
 }
 
@@ -1297,6 +1298,11 @@ static GPtrArray *textview_scan_header(TextView *textview, FILE *fp)
                        header = g_ptr_array_index(headers, i);
                        g_ptr_array_add(sorted_headers, header);
                }
+       } else {
+               for (i = 0; i < headers->len; i++) {
+                       header = g_ptr_array_index(headers, i);
+                       procheader_header_free(header);
+               }
        }
 
        g_ptr_array_free(headers, FALSE);
@@ -1660,7 +1666,8 @@ static gint textview_key_pressed(GtkWidget *widget, GdkEventKey *event,
        case GDK_y:
        case GDK_t:
        case GDK_l:
-               if (messageview->type == MVIEW_MIME) {
+               if (messageview->type == MVIEW_MIME &&
+                   textview == messageview->mimeview->textview) {
                        KEY_PRESS_EVENT_STOP();
                        mimeview_pass_key_press_event(messageview->mimeview,
                                                      event);
@@ -1668,15 +1675,25 @@ static gint textview_key_pressed(GtkWidget *widget, GdkEventKey *event,
                }
                /* fall through */
        default:
-               if (summaryview)
-                       summary_pass_key_press_event(summaryview, event);
+               if (summaryview &&
+                   event->window != messageview->mainwin->window->window) {
+                       GdkEventKey tmpev = *event;
+
+                       tmpev.window = messageview->mainwin->window->window;
+                       KEY_PRESS_EVENT_STOP();
+                       gtk_widget_event(messageview->mainwin->window,
+                                        (GdkEvent *)&tmpev);
+               }
                break;
        }
 
        return TRUE;
 }
 
-static gint show_url_timeout_cb(TextView    *textview ){
+static gint show_url_timeout_cb(gpointer data)
+{
+       TextView *textview = (TextView *)data;
+       
        if (textview->messageview->mainwin)
                if (textview->show_url_msgid)
                        gtk_statusbar_remove(GTK_STATUSBAR(
@@ -1732,14 +1749,13 @@ static gint textview_button_released(GtkWidget *widget, GdkEventButton *event,
                                                                GTK_STATUSBAR(textview->messageview->mainwin->statusbar),
                                                                textview->messageview->mainwin->folderview_cid,
                                                                uri->uri);
-                                               textview->show_url_timeout_tag = gtk_timeout_add( 2000, show_url_timeout_cb, textview );
+                                               textview->show_url_timeout_tag = gtk_timeout_add( 4000, show_url_timeout_cb, textview );
                                                gtkut_widget_wait_for_draw(textview->messageview->mainwin->hbox_stat);
                                        }
                                } else
                                if (!g_strncasecmp(uri->uri, "mailto:", 7)) {
                                        if (event->button == 3) {
                                                gchar *fromname, *fromaddress;
-                                               GdkEventButton tmpev;   
                                                
                                                /* extract url */
                                                fromaddress = g_strdup(uri->uri + 7);
@@ -1763,8 +1779,7 @@ static gint textview_button_released(GtkWidget *widget, GdkEventButton *event,
                                                        if (folder_item->prefs && folder_item->prefs->enable_default_account)
                                                                account = account_find_from_id(folder_item->prefs->default_account);
                                                }
-                                               compose_new_with_recipient
-                                                       (account, uri->uri + 7);
+                                               compose_new(account, uri->uri + 7, NULL);
                                        }
                                } else {
                                        open_uri(uri->uri,