aboutsummaryrefslogtreecommitdiffstats
path: root/composer
Commit message (Collapse)AuthorAgeFilesLines
* Reduce the memory used by DOM variablesTomas Popela2014-08-072-0/+7
| | | | | Free some of the DOM variables when they are not needed, before they are automatically freed when the frame is destroyed
* Bug 734023 - Critical warnings from e_html_editor_view_set_changed() when ↵Tomas Popela2014-08-011-0/+2
| | | | | | | sending message Disconnect the notify callbacks on the headers in the EMsgComposer dispose method to avoid calling them after the EEditor was destroyed.
* Bug 733776 - Should not digitally sign the draft messagesMilan Crha2014-08-011-8/+10
|
* Bug 733724 - Paste of a text can produce runtime warning "Gtk-CRITICAL **: ↵Tomas Popela2014-07-311-0/+3
| | | | | | | gtk_targets_include_uri: assertion 'targets != NULL || n_targets == 0' failed" Check if the returned targets and their count is valid before passing them further.
* Add missing chain-up-s to parent's constructed() methodMilan Crha2014-07-176-10/+8
| | | | Plus a little code cleanup for easier grepping.
* Bug 732608 - Composer paste issuesTomas Popela2014-07-151-8/+3
| | | | | | We have to treat the pasting into the normal and the quoted content separately. We have to also correctly process the new lines on the beginning/end of the pasted content to avoid their lose.
* EMsgComposer - Correctly save the composer mode into the message headersTomas Popela2014-07-151-12/+11
|
* When setting some content into the composer body we have to specify if it is ↵Tomas Popela2014-07-011-11/+28
| | | | | | | | | a HTML content Code paths for HTML content and plain text content are different. When we will try to load plain text content as a HTML content we will lose the new line characters. In the opposite case when HTML content is load as a plain text at least the whole structure is lost.
* EMsgComposer - Remove unneeded GtkHTML codeTomas Popela2014-07-011-9/+0
|
* Bug 473198 - evolution should ignore signature when checking for missing ↵Tomas Popela2014-06-303-0/+41
| | | | | | attachments Introduce method that returns body inner text without signature text.
* Bug 731507 - [webkit-composer] paste does not work, shift-ins or CTRL-V worksTomas Popela2014-06-251-2/+4
| | | | | | | Together with previous commit that removes the usage of deprecated gtk-stock items and unregistering the Ctrl+v shorcut this solves the issue. When the action is triggered and WebView doesn't have focus we have to focus it to insert the clipboard content there.
* EMsgComposer - Emit clipboard related signals just when EHTMLEditorView has ↵Tomas Popela2014-06-191-16/+23
| | | | focus
* EMsgComposer - Allow drag and drop of text or html/text into composerTomas Popela2014-06-171-0/+44
|
* Bug 731758 - [webkit-composer] Formatting/fonts not reset on paste into ↵Tomas Popela2014-06-171-0/+15
| | | | | | | | | | plain text The cause of this bug was that WebKitWebView is not emitting signal paste-clipboard for Shift + Insert (neither for Ctrl + Insert for copy or Shift + Delete for cut) so we didn't get a change to process the content of clipboard. As a workaround we are emitting paste-clipboard signal when we trigger these shortcuts.
* Bug 702703 - Be able to overwrite domain in Message IDsMilan Crha2014-06-171-3/+20
|
* EMsgComposer - Return body's innerText instead of plain text in ↵Tomas Popela2014-06-131-1/+5
| | | | | | | | | e_msg_composer_get_raw_message_text The only consumer of e_msg_composer_get_raw_message_text is the Attachment Reminder plugin that is just searching for given words in message's text. For this purpose the innerText is enough and getting it is a lot faster than generating the plain text version of composer's content.
* Bug 540362: [webkit-composer] Use webkit for composerTomas Popela2014-06-0911-1311/+1280
| | | | Merge wip/webkit-composer branch into master.
* Ignore false GObject property change notificationsMilan Crha2014-06-053-10/+10
| | | | | | | | | | | | | | | | | | | | | | This is related to bug 698275, which did not cover all cases. The problem here is that the dconf can in certain situation claim that everything changed (path "/" changed), which GSettingsBinding propagates to a GObject property unconditionally and GObject's property setter (g_object_set_property()) also notifies about the property change unconditionally, despite the real descendant property setter properly checks for the value change. After all these false notifications a callback on "notify" signal is called and possibly an expensive operation is run. Checking whether the value really changed helps in performance, for which were added new e-util functions: e_signal_connect_notify() e_signal_connect_notify_after() e_signal_connect_notify_swapped() e_signal_connect_notify_object() which have the same prototype as their GLib counterparts, but they allow only "notify::..." signals and they test whether the value really changed before they call the registered callback.
* Bug 604346 - Ctrl+Enter sends mail without asking confirmationMilan Crha2014-06-032-0/+84
|
* Bug 729519 - [Composer] Do not show 'Untitled Message' in Discard questionMilan Crha2014-05-302-3/+13
|
* Add an --enable-code-coverage configure option to enable gcov supportMilan Crha2014-03-251-2/+3
| | | | | When enabled, this will compile all libraries/binaries with the necessary gcc and ld flags to enable code coverage support using gcov.
* Miscellaneous cleanups.Matthew Barnes2014-03-033-24/+24
|
* EMailFormatter: Use GOutputStream instead of CamelStream.Matthew Barnes2014-03-011-12/+13
|
* Replace 'interface' with 'iface' in the codeTarnyko2014-02-261-3/+3
| | | | | | Win32 headers have a #define for 'interface', which breaks the build when this word is used in the code, thus replace it to 'iface', the same way as GLib or GTK+ code use to have it. (See bug #722068.)
* Fix few more memory leaksMilan Crha2014-02-211-10/+8
|
* Stop using deprecated gtk-stock itemsMilan Crha2014-02-131-10/+10
|
* Fix duplicate #includesKjartan Maraas2014-01-221-1/+0
|
* Bug 721545 - License text contains obsolete FSF postal addressMatthew Barnes2014-01-0823-230/+207
|
* Coding style and whitespace cleanup.Matthew Barnes2013-12-071-17/+27
|
* Bug #712738 - Recovered message doesn't restore optionsMilan Crha2013-11-201-9/+40
|
* Fix/mute issues found by Coverity scanMilan Crha2013-11-151-65/+59
| | | | | | | | | | | | This makes the code free of Coverity scan issues. It is sometimes quite pedantic and expects/suggests some coding habits, thus certain changes may look weird, but for a good thing, I hope. The code is also tagged with Coverity scan suppressions, to keep the code as is and hide the warning too. Also note that Coverity treats g_return_if_fail(), g_assert() and similar macros as unreliable, and it's true these can be disabled during the compile time, thus it brings in other set of 'weird' changes.
* Miscellaeous cleanups.Matthew Barnes2013-10-201-1/+1
|
* Bug #709396 - Quoted text truncated when "Keep signature above" is setMilan Crha2013-10-182-0/+23
| | | | | | | | | | | The GtkComboBox::changed signal is not called only on active-id change, but also on any content change, including each row add/change/removal into its model. These signals are delivered on the main thread, thus the result of e_mail_signature_combo_box_load_selected() is delivered later, which means that a call like gtk_list_store_clear() queues as many 'load_selected' operations as is the list items count. Such thing confused GtkHTML editor enough to garble the message body. This change is kind of workaround, which avoids unnecessary signature updates.
* Bug #689787 - Prefer-plain can hide message body for composerMilan Crha2013-09-271-14/+36
|
* Miscellaneous cleanups.Matthew Barnes2013-09-081-3/+7
|
* Miscellaneous cleanups.Matthew Barnes2013-07-071-5/+5
|
* Add e_composer_header_table_ref_source().Matthew Barnes2013-06-023-64/+47
| | | | | | Convenience function that works like e_source_registry_ref_source(), but spares the caller from digging out the ESourceRegistry from the header table.
* EComposerHeaderTable: Remove "shell" property.Matthew Barnes2013-06-023-62/+4
| | | | | | | | No longer needed. Removed functions: e_composer_header_table_get_shell()
* EComposeHeaderTable: Replace "registry" property with "client-cache".Matthew Barnes2013-06-024-60/+114
| | | | | | | | | | | | | | | | | | | | The ESourceRegistry can still be obtained from the EClientCache: client_cache = e_composer_header_table_ref_client_cache (table); registry = e_client_cache_ref_registry (client_cache); ... g_object_unref (client_cache); g_object_unref (registry); Added functions: e_composer_header_table_ref_client_cache() Removed functions: e_composer_header_table_get_registry()
* Rename libcomposer to libevolution-mail-composer.Matthew Barnes2013-05-284-11/+13
| | | | | | To make Evolution's shared libraries more consistent. Also add an evolution-mail-composer documentation module.
* Rename libemformat to libevolution-mail-formatter.Matthew Barnes2013-05-281-1/+1
| | | | | | To make Evolution's shared libraries more consistent. Also add an evolution-mail-formatter documentation module.
* Rename libeshell to libevolution-shell.Matthew Barnes2013-05-281-1/+1
| | | | | | To make Evolution's shared libraries more consistent. Also rename the documentation module to evolution-shell.
* Rename libeutil to libevolution-util.Matthew Barnes2013-05-281-1/+1
| | | | | | To make Evolution's shared libraries more consistent. Also rename the documentation module to evolution-util.
* Convert EMailPart to a GObject.Matthew Barnes2013-05-201-1/+1
| | | | | EMailPart is reference-counted, subclassed, and allows a custom finalize function. There's no excuse for it not to use GObject.
* Bug #301323 - "Edit as new message" doesn't strip signature properlyMilan Crha2013-05-072-26/+38
|
* [EMailFormatter] Use GdkRGBA and GtkStyleContext to get theme colorsMilan Crha2013-04-231-3/+2
| | | | | | | | | | It could happen that header text color had been picked white one time, but the other time black as expected (for me usually when I started Evolution in Calendar and moved to Mail view, the header text color was white, while when starting in Mail view it was black). The change to use GtkStyleContext is there only as a cleanup from deprecated GtkStyle, and to make things easier too, because both GtkStyle and the GtkStyleContext had set white color for some reason.
* Bug #271262 - Allow Send/Receive of local stores in offlineMilan Crha2013-04-092-18/+2
|
* Remove more Express Mode hacks.Matthew Barnes2013-04-013-36/+3
| | | | | | This removes all traces of Express Mode from all but the contact editor and calendar appointment editor. Need to evaluate the remaining cases individually.
* Remove e_shell_adapt_window_size().Matthew Barnes2013-04-011-2/+0
| | | | Its preconditions are never TRUE, and is therefore a no-op function.
* EShell: Remove "small-screen-mode" property.Matthew Barnes2013-04-012-128/+11
| | | | | | The property is always FALSE. Remove both the property itself and any logic predicated on it.
* Add e_msg_composer_ref_session().Matthew Barnes2013-03-173-29/+27
| | | | Replaces e_msg_composer_get_session().
* Remove EMailShellSettings.Matthew Barnes2013-03-172-36/+47
| | | | | | | | EShellSettings predates GSettings and is no longer necessary. GSettings allows binding GObject properties to GSettings keys, with optional mapping functions. That fulfills the purpose of EShellSettings.
* Add ESettingsSpellEntry.Matthew Barnes2013-03-121-9/+0
| | | | | Automatically configures the "checking-enabled" property on all ESpellEntry instances.
* Use EClientComboBox where appropriate.Matthew Barnes2013-03-021-1/+3
| | | | Basically any place where we use both EClient and ESourceComboBox.
* Bug #693250 - Signature HTML problem using <...>Milan Crha2013-02-271-0/+12
|
* EMsgComposer: Fix packing of content area.Matthew Barnes2013-01-211-1/+1
| | | | | | | | | | Using gtk_box_new() instead of gtk_vbox_new() changes the way child widgets are packed by default via gtk_container_add(). gtk_vbox_new() expands them by default, gtk_box_new() does not, and the preview pane was being packed with gtk_container_add(). Packing widgets into a GtkBox with gtk_container_add() is usually the wrong way. Use gtk_box_pack_start() instead, with expand=TRUE.
* Bump GDK_VERSION_MIN_REQUIRED to GDK_VERSION_3_2.Matthew Barnes2013-01-202-5/+5
| | | | | Clean up resulting deprecation warnings, which were all related to GtkOrientable consolidation (e.g. gtk_hbox_new() -> gtk_box_new()).
* Use g_hash_table_add() when using a hash table as a set.Matthew Barnes2013-01-121-8/+7
| | | | | | | g_hash_table_add(table, key) uses less memory than g_hash_table_insert(table, key, GINT_TO_POINTER (1)). Also use g_hash_table_contains() when testing for membership.
* Reduce diff noise with webkit-composer branch.Matthew Barnes2013-01-111-8/+15
|
* e-composer-header-table.c: Remove redundant #define.Matthew Barnes2013-01-111-4/+0
|
* Move the contact map widgets to addressbook/gui/widgets.Matthew Barnes2012-12-131-2/+0
| | | | | | | | | | | | Move the supporting widgets for the contact maps feature alongside EABContactDisplay. Removing them from libeutil helps isolate our usage of libchamplain so it's not imposed on the entire application, and even 3rd party software. That libchamplain is an optional dependency only further complicates the matter. Ideally I'd like to somehow isolate this feature in an extension module, but we currently lack sufficient hooks for such an extension. So this arrangement will have to suffice for now.
* Consolidate base utility libraries into libeutil.Matthew Barnes2012-12-1312-42/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Evolution consists of entirely too many small utility libraries, which increases linking and loading time, places a burden on higher layers of the application (e.g. modules) which has to remember to link to all the small in-tree utility libraries, and makes it difficult to generate API documentation for these utility libraries in one Gtk-Doc module. Merge the following utility libraries under the umbrella of libeutil, and enforce a single-include policy on libeutil so we can reorganize the files as desired without disrupting its pseudo-public API. libemail-utils/libemail-utils.la libevolution-utils/libevolution-utils.la filter/libfilter.la widgets/e-timezone-dialog/libetimezonedialog.la widgets/menus/libmenus.la widgets/misc/libemiscwidgets.la widgets/table/libetable.la widgets/text/libetext.la This also merges libedataserverui from the Evolution-Data-Server module, since Evolution is its only consumer nowadays, and I'd like to make some improvements to those APIs without concern for backward-compatibility. And finally, start a Gtk-Doc module for libeutil. It's going to be a project just getting all the symbols _listed_ much less _documented_. But the skeletal structure is in place and I'm off to a good start.
* EMailParserExtension: Collect EMailParts in a GQueue.Matthew Barnes2012-12-081-8/+7
| | | | | | | | | | | | | | | Collect EMailParts in a GQueue provided to the EMailParserExtension, and change the return type of parse() to gboolean to indicate whether the given CamelMimePart was handled (even if no parts were added to the output GQueue). This avoids the awkward corner case of a parser extension returning a linked list node with a NULL data member to indicate the CamelMimePart was handled but no EMailParts produced, and then having to watch out for that NULL data member corner case throughout the application. Also, remove the GCancellable parameter from e_mail_parser_error() and e_mail_parser_wrap_as_attachment() since neither function blocks.
* Make EMailPartList thread-safe.Matthew Barnes2012-12-081-7/+17
| | | | | | Exposing data members in the public struct is unwise, especially when EMailPartList is used from multiple threads. Instead keep the members private and provide a set of thread-safe functions to manipulate them.
* Bug #687998 - Attachment dialog shown when storing assigned taskMilan Crha2012-11-121-3/+1
|
* Coding style and whitespace cleanup.Matthew Barnes2012-11-113-5/+9
|
* Replace deprecated GLib symbols (as of GLib 2.34.x)Milan Crha2012-11-061-57/+30
|
* Bug #681314 - Add address dialog should follow composer's view settingsMilan Crha2012-10-161-0/+18
|
* Bug 684249 - Signatures get compounded, not replacedMatthew Barnes2012-10-041-1/+1
|
* Composer could start with empty FromMilan Crha2012-09-052-3/+45
|
* Coding style and whitespace cleanup.Matthew Barnes2012-09-012-9/+12
|
* Coding style and whitespace cleanup.Matthew Barnes2012-08-201-3/+3
|
* composer: Remove redundant tooltips.Matthew Barnes2012-08-031-17/+0
| | | | These are defined in GtkhtmlEditor now (bug #681087).
* Trust attachments from ~/.kde and ~/.kde4.Matthew Barnes2012-07-021-0/+16
| | | | | | | | | This came about from a mailing list thread entitled: Sending photos from digKam: "Skipping suspicious attachment" Apparently KDE still uses dot-folders quite heavily, despite having helped draft the XDG Base Directory Specification.
* Bug #617557 - Can close composer while message is sendingMilan Crha2012-06-261-0/+5
|
* Do not call g_object_notify() when property didn't changeMilan Crha2012-06-182-0/+9
|
* Bug #678304 - Save Draft prevents Evolution's quitMilan Crha2012-06-181-0/+15
|
* Mail formatter rewriteDan Vrátil2012-06-061-29/+34
| | | | | | | | All mail-parsing and formatting code has been moved to em-format. Parsing is handeled by EMailParser class, formatting by EMailFormatter. Both classes have registry which hold extensions - simple classes that do actual parsing and formatting. Each supported mime-type has it's own parser and formatter extension class.
* Adapt to single-include E-D-S libraries.Matthew Barnes2012-06-046-16/+8
|
* Adapt composer to the new ESource API.Matthew Barnes2012-06-0318-1110/+1206
|
* Use g_simple_async_result_set_check_cancellable().Matthew Barnes2012-05-131-0/+8
| | | | Always call it immediately after g_simple_async_result_new().
* Whitespace cleanups.Matthew Barnes2012-05-132-2/+2
|
* Bug #200683 - Composer subject spell checkingMilan Crha2012-05-107-8/+196
|
* Bug #674248 - Lost new lines from text/plainDan Vrátil2012-04-191-2/+8
|
* Bug 673895 - "Send To..." doesn't work anymoreMatthew Barnes2012-04-111-1/+23
| | | | | | Our hidden file/directory blacklist went a little too far. Evolution was blacklisting its own temporary files. This changes the blacklist function to trust the user's own XDG Base Directories.
* Whitespace cleanup.Matthew Barnes2012-04-021-1/+1
| | | | | Replace 8-space indentation with tab characters, and various other automated cleanups.
* EMFormat: Add "session" as a constructor property.Matthew Barnes2012-04-011-7/+24
| | | | Pass it in instead of digging it out of EShellSettings.
* WebKit port - port addressbook, calendar and update composer to keep working ↵Dan Vrátil2012-03-296-29/+31
| | | | with GtkHtml
* Bug #665106 - Memory leak from composer setup when opening PreferencesMilan Crha2012-03-161-2/+2
|
* Add missing linker flags.Matthew Barnes2012-03-041-1/+2
|
* Move EAlert* and e-xml-utils references from other part of the code to ↵Srinivasa Ragavan2012-03-033-3/+3
| | | | libevolution-utils.
* Bug #617557 - Can lost message after send failedMilan Crha2012-03-011-8/+8
|
* Coding style and whitespace cleanup.Matthew Barnes2012-02-203-6/+11
|
* Bug 670280 - Remove "Recent Documents" attachment featureMatthew Barnes2012-02-172-35/+0
| | | | | | | GTK's file chooser dialog provides one-click access to recently used documents now, so we can remove the redundancy from Evolution's mail composer main menu and calendar component editor main menu and leave it at "Insert -> Attachment".
* Bug #591436 - Add -avoid-version to LDFLAGSH. Habighorst2012-02-151-1/+1
|
* Introduce libemail-engine and libemail-utils.Matthew Barnes2012-01-193-9/+10
| | | | | | | These libraries are bound for E-D-S so they live at the lowest layer of Evolution for now -- even libeutil can link to them (but please don't). This is the first step toward moving mail handing to a D-Bus service.
* EComposerHeaderTable: Rearrange initialization code.Matthew Barnes2012-01-011-153/+154
| | | | Prefer GObjectClass.constructed() over GObjectClass.constructor().
* Move gtkhtml data encoding/decoding to e-composer-private.c.Matthew Barnes2012-01-013-97/+89
| | | | Simplify the algorithms, trading efficiency for readability.
* Composer cleanups.Matthew Barnes2012-01-018-41/+70
|
* Composer: "mailto" blacklist touch ups.Matthew Barnes2011-11-301-12/+17
|
* Bug #664708 - Composer's headers preference is reset on From changeMilan Crha2011-11-291-6/+8
|
* Use e_restore_window() and "org.gnome.evolution.window".Matthew Barnes2011-11-281-8/+5
| | | | Apply it to all windows with persistent size and/or position.
* Miscellaneous cleanups.Matthew Barnes2011-11-232-41/+13
|
* Miscellaneous cleanups.Matthew Barnes2011-11-231-4/+4
|
* Fix compiler warnings.Matthew Barnes2011-11-231-3/+1
|
* Migrate most of the composer to GSettingsRodrigo Moya2011-10-143-92/+33
|
* Port EComposerHeaderTable to GSettingsRodrigo Moya2011-10-131-35/+21
|
* Prefer g_simple_async_result_take_error().Matthew Barnes2011-10-061-6/+3
| | | | | | | | | Slightly more efficient and convenient than: g_simple_async_result_set_from_error (simple, error); g_error_free (error); One less GError to copy and destroy.
* Let GtkFileChooser track its own last-used-folder.Matthew Barnes2011-10-063-10/+1
| | | | | | GtkFileChooser in GTK+ 3.2 now keeps track of the last-used-folder itself, even across applications, so get out of its way and let it handle it.
* GtkApplication has some new EShell-like features.Matthew Barnes2011-10-061-3/+10
| | | | | | | | | | | | | | | | | | I pushed a few EShell features up to GtkApplication for GTK+ 3.2, so we can now trim off the redundancies in EShell. 1) GtkApplication has a new "window-added" signal which replaces EShell's own "window-created" signal. 2) GtkApplication has a new "window-removed" signal which replaces EShell's own "window-destroyed" signal. 3) gtk_application_get_windows() now returns a list of windows sorted by most recently focused, replacing e_shell_get_watched_windows(). 4) GtkApplication now provides enough hooks to subclasses that we can remove e_shell_watch_window() and call gtk_application_add_window() directly.
* Simplify library dependency flags.Matthew Barnes2011-10-051-3/+5
| | | | | | | | | We have a confusing array of nearly-identical CFLAGS/LIBS definitions in configure.ac. Time to simplify. Instead let's just have one definition that includes all the libraries provided by Evolution-Data-Server (incl. Camel). That, in combination with GNOME_PLATFORM, gives us most of what we need for compliation and linking, and we can sprinkle definitions for additional library dependencies in Makefile.am's as needed.
* Bug #657374 - mailto: attachment parameter can lead to accidental data ↵Vibha Yadav2011-10-041-0/+30
| | | | | | exfiltration Through warning on attaching Hidden/security files by mailto command.
* Bug 659486 - EAlert default response is ignored by EAlertDialogMatthew Barnes2011-10-011-1/+1
|
* Prefer G_VALUE_INIT over memset().Matthew Barnes2011-09-301-5/+2
| | | | | G_VALUE_INIT is new in GLib 2.30. More convenient than zero-filling a statically declared GValue with memset().
* Miscellaneous cleanups from the account-mgmt branch.Matthew Barnes2011-09-2712-63/+69
| | | | | Reducing diff noise so I can see important changes easier when comparing branches. A few API changes, but nothing that affects functionality.
* The EExtension framework is now in libebackend.Matthew Barnes2011-09-261-1/+2
| | | | | | | | The EModule, EExtensible and EExtension classes as well as the e_type_traverse() function have been moved to Evolution-Data-Server's libebackend library to replace e-data-server-module.c. Now Evolution-Data-Server modules use the same framework as Evolution.
* Reverting the previous commit.Vibha Yadav2011-09-151-30/+0
|
* Bug #657374 - mailto: attachment parameter can lead to accidental data ↵Vibha Yadav2011-09-151-0/+30
| | | | | | exfiltration Through warning on attaching Hidden/security files by mailto command.
* Bug 635347 - Message lacks ID when submitted for sendingMatthew Barnes2011-09-141-0/+4
|
* Bug #657611 - Hidden error of invalid attendee on sendMilan Crha2011-09-071-1/+7
|
* Coding style and whitespace cleanup.Matthew Barnes2011-09-041-13/+18
|
* Coding style and whitespace cleanup.Matthew Barnes2011-08-132-10/+23
|
* Bug #656290 - "Always carbon-copy (cc) to:" option not honoredMilan Crha2011-08-121-0/+48
|
* Bug 653568 - Forward as Redirect doesn't workMatthew Barnes2011-07-111-29/+24
| | | | | X-Evolution-Account and X-Evolution-Transport headers were not getting set in redirected messages.
* EMsgComposer: Minor cleanups.Matthew Barnes2011-07-111-13/+14
|
* Postpone ENameSelector loading as much as possibleMilan Crha2011-06-241-0/+15
| | | | | Also fixes few memory leaks around ENameSelector and cancels loading of its address books when not needed any more.
* Do not use deprecated EBook/ECal APIMilan Crha2011-06-141-4/+4
|
* Coding style and whitespace cleanups.Matthew Barnes2011-06-092-8/+23
|
* Bug #646109 - Fix use of include <config.h> to make sure translations workMilan Crha2011-05-2710-4/+36
|
* Bug #651039 - Always update signature in composer on account changeMilan Crha2011-05-251-0/+1
|
* Revert "Correct garbled mailto: uris passed in through GApplication interface"Matthew Barnes2011-05-231-4/+0
| | | | | | This reverts commit 94d5fb1b664ab38790ba620f7d2c6d585b666c91. Wrong solution. See bug #650491.
* Coding style and whitespace cleanup.Matthew Barnes2011-05-221-26/+49
|
* Correct garbled mailto: uris passed in through GApplication interfaceMilan Crha2011-05-161-0/+4
|
* Add e_activity_handle_cancellation().Matthew Barnes2011-05-121-8/+4
| | | | | | | | Convenience function for use in GAsyncReadyCallback functions. This acknowledges the cancellation, so that the activity's description changes from "(cancelling)" to "(cancelled)" and the description appears crossed out in the UI for a moment before disappearing.
* Coding style cleanups.Matthew Barnes2011-05-092-16/+16
|
* Whitespace and coding style cleanups.Matthew Barnes2011-05-081-4/+8
|
* Adapt to CamelService changes.Matthew Barnes2011-04-211-1/+6
|
* Coding style and whitespace cleanup.Matthew Barnes2011-03-066-7/+16
|
* Bug #641805 - Clicking links in mail composer opens URL twiceMilan Crha2011-03-011-20/+1
|
* Bug #614480 - Avoid using G_TYPE_INSTANCE_GET_PRIVATE repeatedlyMilan Crha2011-02-257-45/+21
|
* Remove NULL checks for GObject methods.Matthew Barnes2011-02-131-4/+3
| | | | | As of GLib 2.28 all GObject virtual methods, including constructed(), are safe to chain up to unconditionally. Remove unnecessary checks.
* Composer: Add Edit -> PreferencesMatthew Barnes2011-02-043-20/+60
| | | | Opens the Preferences window to the Composer Preferences section.
* Fix image dropping in composer while in HTML mode.Matthew Barnes2011-02-033-1/+92
| | | | | | Dragging image data or an image URI to the message body while in HTML mode should insert the image inline, not attach it. Without this the Picture Gallery feature is pointless.
* Bug #635144 - Using external editor duplicates signatureMilan Crha2011-02-022-3/+5
|
* Drop backward-compatibility cruft.Matthew Barnes2011-01-251-3/+0
|
* Bug 640091 - Improve error handling during send post-processingMatthew Barnes2011-01-221-0/+5
| | | | | | If a newly-composed message was successfully sent but an error occurred during post-processing (outgoing filters or appending to a Sent folder), close the composer window and show an alert in the main window.
* Bug #553438 - Deletes lines of a reply when changing addressMilan Crha2011-01-181-6/+4
|
* GtkSelectionData is sealed in GTK3.Matthew Barnes2011-01-091-1/+4
| | | | Have to use accessor functions, no pointer deferencing.
* Bug #567879 - Add View >> Gallery Option In Email ComposerMilan Crha2010-12-226-7/+135
|
* Free/busy meeting view doesn't work due to non-working extensionMilan Crha2010-12-061-0/+3
|
* Bug #404570 - Ctrl-R / NNTP doesn't focus the new messageMilan Crha2010-11-291-2/+2
|
* EActivity: Add an "alert-sink" property.Matthew Barnes2010-11-011-7/+35
| | | | | | | This is just for convenience, EActivity does not use this property. Especially useful in async function callbacks when the operation failed and now you have to do something useful with the GError.
* Pass an EAlertSink to e_alert_sink_submit_alert().Matthew Barnes2010-11-012-6/+6
| | | | | | | Passing a random GtkWidget and then searching its ancestors for an EAlertSink turned out to be not as useful as I thought. Most of the time we know about and have access to the widget that implements EAlertSink, so just pass it directly as an EAlertSink.
* Fix build break.Matthew Barnes2010-11-011-1/+1
|
* Set Date: when building a CamelMimeMessage in composer.Matthew Barnes2010-10-311-0/+3
|
* Skip writing to Outbox when sending.Matthew Barnes2010-10-314-21/+138
| | | | | | | When sending a message from a composer window, it seems pointless to write message to Outbox only to immediately read it back and mark it for deletion. Instead, bypass the Outbox folder when sending, and if an error occurs, offer to save the message to Outbox instead.
* Simplify EActivity.Matthew Barnes2010-10-231-18/+0
| | | | | | | | | | | | | | | | | | | | | | With unintrusive error dialogs gone, we can cut some unnecessary bits out of EActivity. I'm also adding a new enum property called "state", which is one of: E_ACTIVITY_RUNNING E_ACTIVITY_WAITING E_ACTIVITY_CANCELLED E_ACTIVITY_COMPLETED The state of an activity must be explicitly changed. In particular, when the user cancels an activity the state should be set only after confirming the operation has been cancelled and not when cancellation is requested (e.g. after receiving a G_IO_ERROR_CANCELLED, not when the GCancellable emits "cancelled"). EActivityBar and EActivityProxy widgets have been updated to make this distinction clearer in the UI. E_ACTIVITY_WAITING will be used when activities have to be queued and dispatched in sequence, which I haven't written yet.
* Bug 632127 - Composer is editable while sending messageMatthew Barnes2010-10-155-53/+113
|
* Replace EBinding with GBinding.Matthew Barnes2010-10-143-14/+20
| | | | | | GObject now does property bindings itself. Requires GLib >= 2.26.
* Composer: Show cancellable operations and errors inline.Matthew Barnes2010-10-139-865/+1671
| | | | | | | | | | | | | | | 'Send' and 'Save Draft' are now asynchronous and run outside of Evolution's MailMsg infrastructure. Add an EActivityBar to the composer window so these asynchronous operations can be tracked and cancelled even in the absense of a main window. Also add an EAlertBar to the composer window so error messages can be shown directly in the window. Instead of calling e_alert_dialog_run_for_args(), call e_alert_submit() and pass the EMsgComposer as the widget argument. The EMsgComposer will decide whether to show an EAlertDialog or use the EAlertBar, depending on the GtkMessageType of the alert.
* Bug #631320 - GtkObject is gone in GTK3Milan Crha2010-10-071-18/+6
|
* Messin around with EAlerts.Matthew Barnes2010-09-301-0/+2
| | | | | | | | | | | | | | | | | | | Trying out a new interface called EAlertSink. The idea is to centralize how errors are shown to the user. A GtkWindow subclass would implement the EAlertSink interface, which consists of a single method: void (*submit_alert) (EAlertSink *alert_sink, EAlert *alert); The subclass has complete control over what to do with the EAlert, although I imagine we'll wind up implementing various alert-handling policies as standalone widgets such as EAlertDialog. I'd like to try an EAlertInfoBar. Code that would otherwise display an error dialog itself would instead pass the EAlert to an appropriate EAlertSink and be done with it. Nothing is final yet. Still hacking on EAlert trying to find an API that feels right for these use cases.
* Adapt to Camel API changes.Matthew Barnes2010-09-283-96/+88
|
* Pass GCancellable to Camel.Matthew Barnes2010-09-281-33/+102
|
* Use new GDK keysym names if available.Matthew Barnes2010-09-181-3/+6
| | | | | | | In GTK+ 2.21.8, the keysym names were renamed from GDK_* to GDK_KEY_*. I've added backward-compatibility macors to gtk-compat.h, which can be dumped as soon as we require GTK+ >= 2.22.0.
* Bug 616073 - Various translation issuesMatthew Barnes2010-09-111-1/+1
|
* Bug 629049 - Memory leak in e_composer_pose_header_set_account()Matthew Barnes2010-09-081-0/+1
|
* Various memory leaksMilan Crha2010-09-081-10/+15
|
* Convert composer autosave to an EExtension.Matthew Barnes2010-09-036-689/+17
| | | | | | | | | | | | | | | | | | | Given the way the autosave feature was awkwardly bolted on to the composer, an EExtension seemed like a natural fit. And it helped clean up some object lifecycle hacks (and bugs). What we have now is a new module consisting of two EExtensions: EComposerAutosave extends EMsgComposer and determines when to kick off an asynchronous autosave operation. EComposerRegistry extends EShell and offers to restore orphaned autosave files on startup (which is also asynchronous now). e-autosave-utils.c holds the actual asynchronous functions and a few other miscellaneous utility functions. Source code for the new module lives in /modules/composer-autosave.
* Composer autosave cleanups.Matthew Barnes2010-08-313-107/+66
| | | | | | This simplifies the async autosave logic and improves error handling. Hoping this will solve bug #616987 but I've yet to reproduce it myself.
* Coding style and whitespace cleanup.Matthew Barnes2010-08-294-18/+21
|
* GObject boilerplate cleanup.Matthew Barnes2010-08-257-230/+64
| | | | | | | Prefer thread-safe G_DEFINE_TYPE and G_DEFINE_INTERFACE macros over manual GType registration. This is just a start... lots more to do.
* Pass an EShell to EMsgComposer instances.Matthew Barnes2010-08-146-141/+224
| | | | Reduce the composer's dependency on e_shell_get_default().
* Bug 624913 - Disallow drag-and-drop within the same attachment barMatthew Barnes2010-08-131-80/+46
| | | | | | | | | | | | Adds a boolean "dragging" property to the EAttachmentView interface, which becomes TRUE when the user start a drag from the attachment view. e_attachment_view_drag_motion() and e_attachment_view_drag_drop() both return FALSE when this property is set. Also, do not register the entire EMsgComposer window as a drag destination. Just intercept drag signals from the GtkHTML widget. Requires gtkhtml commit 344eb5e to fully work correctly.
* Bug 323142 - Signature missing when handling mailto: URI with body partMatthew Barnes2010-08-131-1/+1
|
* EMsgComposer cleanups.Matthew Barnes2010-08-131-51/+58
|
* Bug #624891 - Various compiler warnings in git/masterMilan Crha2010-07-221-1/+1
|
* Coding style and whitespace cleanup.Matthew Barnes2010-07-121-16/+16
|
* Bug 623702 - SEGV on redirecting messageMatthew Barnes2010-07-101-0/+5
|
* Migrate from CamelException to GError.Matthew Barnes2010-07-093-36/+42
|
* Fix transience problems with ENameSelectorDialogs ...Michael Meeks2010-07-081-0/+1
|
* Bug #620815 - Memory leaks with EvolutionMilan Crha2010-06-252-0/+4
|
* Composer: Append drag dest targets to the GtkHTML widget.Matthew Barnes2010-06-231-0/+32
| | | | | | This is so that GtkHTML doesn't have to register drag destination targets that that it can't handle itself, like "text/calendar" and "text/x-vcard".
* Composer: Only hide single From account in express mode.Matthew Barnes2010-06-213-20/+82
| | | | | | At least until we have another way to insert signatures. Obvious solution: Insert -> Signature -> (list of your signatures)
* Coding style and whitespace cleanup.Matthew Barnes2010-06-201-8/+19
|
* Bug #617557 - Quits without asking user to save unfinished messagesMilan Crha2010-06-153-47/+114
| | | | The second attempt.
* Coding style and whitespace cleanups.Matthew Barnes2010-06-071-80/+186
|
* Coding style and whitespace cleanup.Matthew Barnes2010-05-271-1/+3
|
* Merge branch 'express2'Matthew Barnes2010-05-2715-278/+123
|\
| * Coding style and whitespace cleanup.Matthew Barnes2010-05-251-4/+4
| |
| * Merge branch 'gnome-2-30' into express2Matthew Barnes2010-05-251-14/+15
| |\
| | * Bug #617557 - Quits without asking user to save unfinished messagesMilan Crha2010-05-211-13/+14
| | |
| * | get the composer dialog size right on MeeGoMichael Meeks2010-05-211-1/+2
| | |
| * | Don't hide the composer's menu bar in lite modeFederico Mena Quintero2010-05-081-1/+10
| | | | | | | | | | | | | | | | | | | | | We are not ready to hide it just yet, as there are useful commands there that are not available from the composer's other widgets. Signed-off-by: Federico Mena Quintero <federico@novell.com>
| * | Pack the header-table's headers closer together for small screensFederico Mena Quintero2010-05-081-5/+19
| | | | | | | | | | | | Signed-off-by: Federico Mena Quintero <federico@novell.com>
| * | Use the lite-composer when the shell is in small-screen modeFederico Mena Quintero2010-05-082-23/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | Remove various utility functions that conditionally create a lite composer, and just use the normal functions to create a composer. The composer will know by itself whether it needs to adjust for small screens. Signed-off-by: Federico Mena Quintero <federico@novell.com>
| * | Merge express2 into relayout-composerFederico Mena Quintero2010-05-081-0/+7
| |\ \
| | * | Set transient prop in express mode so that composer appears in the sameSrinivasa Ragavan2010-04-301-0/+6
| | | | | | | | | | | | | | | | zone as the mail window.
| * | | Hide the From header if only one account is set upFederico Mena Quintero2010-05-051-9/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This lets us save vertical space in the mail composer in the common case where the user has only a single email account configured - then he doesn't need to choose which account to send from. Signed-off-by: Federico Mena Quintero <federico@novell.com>
| * | | Remove the 'View From' menu item from the composerFederico Mena Quintero2010-05-054-15/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Now the From header will only be shown if you have more than one mail account. Signed-off-by: Federico Mena Quintero <federico@novell.com>
| * | | Right-align the labels of the composer's headersFederico Mena Quintero2010-05-041-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is so that the colons of the labels will align vertically. Although the labels inside buttons don't align 100% perfectly with the buttonless labels, this looks good enough for now, and certainly much better than all-centered labels. Signed-off-by: Federico Mena Quintero <federico@novell.com>
| * | | Always show a button in the label of name selectorsFederico Mena Quintero2010-05-041-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is so that the address picker will be available; there is no good reason to hide it. This basically reverts commit 70c799f348cc366668cac2510294f68fb5d8f6a8 Signed-off-by: Federico Mena Quintero <federico@novell.com>
| * | | Don't lay out the headers differently for the lite composerFederico Mena Quintero2010-05-019-200/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is basically a selective revert of these commits: 9b0e9dc0aeffd627ce2bdea049cc7c47bb7418f0 631da1b6baf2204ebb844a1d3962c2c7d811eb41 5d4e8994e83c9ab650981c332eaef57f4fab2788 Instead of having buttons to show/hide headers in the same row as the 'To:' header, we will have expanders or something prettier, a la googlemail. Signed-off-by: Federico Mena Quintero <federico@novell.com>
| * | | Remove unused functionFederico Mena Quintero2010-05-012-11/+0
| | | | | | | | | | | | | | | | Signed-off-by: Federico Mena Quintero <federico@novell.com>
| * | | Use e_msg_composer_get_lite() instead of a global variable or struct fieldsFederico Mena Quintero2010-05-014-15/+12
| |/ / | | | | | | | | | | | | | | | | | | This will also make 'grep' easier when we remove the lite stuff by refactoring. Signed-off-by: Federico Mena Quintero <federico@novell.com>
| * | Express: Composer always defaults to HTML modeMatthew Barnes2010-04-071-4/+0
| | | | | | | | | | | | | | | | | | Composer and signature editor always default to HTML in Express mode. Hide the corresponding composer preference. This will not affect the user preference in normal mode.
| * | Fix mismatched quotes.Matthew Barnes2010-04-072-3/+3
| |/
| * Bug 614892 - String leak in the composerPaolo Borelli2010-04-071-0/+2
| |
* | Bug #617557 - Quits without asking user to save unfinished messagesMilan Crha2010-05-211-13/+14
| |
* | Bug #220672 - Excessive autosaving uses lots of resourcesMilan Crha2010-05-201-25/+53
| |
* | Bug #304415 - Allow change of signature hash algorithmMilan Crha2010-05-201-5/+24
| |
* | Coding style and whitespace cleanup.Matthew Barnes2010-05-021-1/+1
| |
* | Camel is now GObject-based.Matthew Barnes2010-04-244-65/+65
| |
* | Bug #360461 - Avoid markup in translatable messagesMilan Crha2010-04-231-1/+4
| |
* | Adapt to libedataserverui API changes.Matthew Barnes2010-04-201-2/+5
| |
* | Bug #494047 - Unescape uris in composer's Post-ToMilan Crha2010-04-191-3/+13
| |
* | Use accessor functions instead direct access (GSEAL work)Javier Jardón2010-04-131-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Still remaining: GtkAccessible::widget GtkAssistant::forward GtkAssistant::back GtkObject::flags GtkTreeStore::stamp The GtkAssistant fields are related to bug #596428. We don't need accessor functions so much as the enhancement described there implemented. https://bugzilla.gnome.org/show_bug.cgi?id=615613
* | Giant leap towards GSEAL compliance.Matthew Barnes2010-04-082-2/+6
| |
* | Bug 614892 - String leak in the composerPaolo Borelli2010-04-071-0/+2
| |
* | Adapt to Camel API changes.Matthew Barnes2010-04-042-34/+37
| |
* | Generate ChangeLog files for tarball releases.Matthew Barnes2010-04-033-6507/+1
| | | | | | | | Remove old ChangeLog files that predate our switch to git.
* | Only #include Camel's top-level header.Matthew Barnes2010-04-035-26/+2
| |
* | Express: Composer always defaults to HTML modeMatthew Barnes2010-03-301-4/+0
| | | | | | | | | | | | Composer and signature editor always default to HTML in Express mode. Hide the corresponding composer preference. This will not affect the user preference in normal mode.
* | Fix mismatched quotes.Matthew Barnes2010-03-292-3/+3
|/
* Revert some bad assumptions I made in EPluginUI.Matthew Barnes2010-03-161-2/+2
| | | | | | | | | We can't require the use of EUIManager everywhere because we don't control all the UI manager instances -- the most compelling example being the composer, whose UI manager comes from GtkhtmlEditor. Instead, EPluginUI will check the instance type and pick an appropriate "load_from_string" function.
* Prevent future bugs like #612792.Matthew Barnes2010-03-151-3/+3
| | | | | | Add G_GNUC_NULL_TERMINATED to EAlert functions with variable-length parameter lists and drop the unnecessary "arg0" parameter so the function attribute works correctly.
* Shell and UI manager cleanups.Matthew Barnes2010-03-141-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | Replace the EVO_EXPRESS environment variable with an --express command line option. (Note, this adds a new translatable string for --help.) Add an EUIManager class with an "express-mode" property and custom load functions that use our new "express" preprocessor. This replaces the UI manager functions in e-utils.c. (Also going to see if I can get GTK+ to add an "add_ui_from_string" method to GtkUIManagerClass that we can override. Then we could just call gtk_ui_manager_add_ui_from_string() and the preprocessor would automatically do its thing and chain up.) Add an "express-mode" read-only GObject property to EShell. Add e_shell_configure_ui_manager() to e-shell-utils.c. For now this just creates a one-way property binding: EShell:express-mode -> EUIManager:express-mode Call this immediately after e_ui_manager_new(). (EUIManager can't do this itself because it lives too low in the dependency hierarchy and doesn't know about EShell.)
* Coding style and whitespace cleanup.Matthew Barnes2010-03-081-1/+1
|
* Bug 593789 - Most of the toolbar buttons in the Evolution composer window ↵Marcel Stimberg2010-02-221-0/+17
| | | | have no tooltips.
* Bug 610124 - Autosave errors dialogues can't be dismissedMatthew Barnes2010-02-171-7/+27
|
* Bug 554663 - Swap "Save" and "Save as Draft" accelerators in composerMatthew Barnes2010-02-161-2/+2
|
* Rearrange composer options.Matthew Barnes2010-01-233-13/+9
| | | | | | | | Renamed the "Security" menu to "Options" moved other options there: Request Read Receipt Prioritize Message Character Encoding
* Coding style and whitespace cleanups.Matthew Barnes2010-01-231-9/+17
|
* Don't stomp on GConf's identifier namespace.Jan Holesovsky2010-01-191-8/+7
|
* Improve clipboard behavior.Matthew Barnes2010-01-183-70/+111
| | | | | | | | | | | | | | | | | | | | | Add "copy-target-list" and "paste-target-list" to the ESelectable interface. These are underutilized for the moment, but will eventually be used to help integrate drag-and-drop support into ESelectable. Add cut and paste support to EWebView, along with a new "editable" property and new clipboard signals "copy-clipboard", "cut-clipboard" and "paste-clipboard". In EFocusTracker, listen for "owner-changed" signals from the default clipboard as another trigger to update actions, particularly the Paste action. (Unfortunately this doesn't work for EWebView since GtkHtml implements its own clipboard.) In EMsgComposer, convert GtkhtmlEditor's clipboard methods to empty stubs, since EFocusTracker will now trigger EWebView's clipboard actions. Also, intercept EWebView::paste-clipboard signals and improve the interaction between the HTML editor and the attachment bar based on use cases in bug #603715.
* Remove dead assignments found by clang.Matthew Barnes2010-01-161-10/+0
|
* Bug #606874 - mktemp disabled in latest glibc-2.11.90-8Milan Crha2010-01-141-2/+6
|
* Bug 606542 - Broken paste action on to/cc/subject fieldsMatthew Barnes2010-01-111-15/+12
|
* Bug 606344 - Clicking "Reply to All" button causes Evo to dump coreMatthew Barnes2010-01-093-72/+75
| | | | | | | | | | | | | | Adding a GtkhtmlEditor::uri-requested repeater signal was a mistake. It unnecessarily complicates URI handling and so the composer no longer uses it -- instead it connects to GtkHTML::url-requested directly. This also requires commit 203ce61e6ea19323914b9c459b2e79bde5db15be from GtkHTML to work right. That commit changes GtkHTML::url-requested to a G_SIGNAL_RUN_LAST so the composer's signal handler runs first. If the composer can handle the URI request, it stops the signal emission so that nothing else tries to use the freed GtkHTMLStream. Henceforth consider GtkhtmlEditor::uri-requested to be deprecated.
* Coding style and whitespace cleanup.Matthew Barnes2010-01-041-4/+10
|
* Compiler and linker flag cleanups.Matthew Barnes2009-12-281-1/+3
|
* Coding style and whitespace cleanup.Matthew Barnes2009-12-261-10/+21
|
* Introduce ESelectable and EFocusTracker.Matthew Barnes2009-12-264-129/+199
| | | | | | | | | | | | | | | | | | EFocusTracker tracks the input focus within a window and helps keep the sensitivity of "selectable" actions in the main menu up-to-date. Selectable actions include Cut, Copy, Paste, Select All and Delete. EFocusTracker has built-in support for widgets that implement the GtkEditable interface such as GtkEntry and GtkTextView. It also supports custom widgets that implement the ESelectable interface, which is a subset of GtkEditable and can apply to anything that displays selectable content (esp. tree views and ETables). This commit integrates EFocusTracker with EShellWindow, CompEditor, EMsgComposer, and ESignatureManager. It also bumps the GtkHTML requirement to 2.29.5 to utilize the new GtkhtmlEditor:html constructor property.
* Bug #520816 - S/MIME shares "Do not sign meeting requests" with PGPMilan Crha2009-12-241-5/+9
|
* Bug #604838 - Drop unused alert dialogPaul Bolle2009-12-201-5/+0
|
* Bug 604822 - Drop more alert titlesPaul Bolle2009-12-201-2/+0
| | | | | Drop all alert titles to be found in *.error.xml. HIG suggests alerts do not have a title.
* Merge some composer header changes for Anjal.Matthew Barnes2009-12-172-14/+31
|
* Bug #603342 - Memory leak fixesMilan Crha2009-12-151-0/+1
|
* Port all error code to use GObject-ified EAlert / EAlertDialogJonathon Jongsma2009-12-083-10/+11
| | | | | | The changes are mainly including the e-alert-header.h header instead of just e-alert.h. This allows us to include e-alert.h in non-UI situations when necessary.
* Bug 551464 - Paste files into composer as attachmentsMatthew Barnes2009-12-043-58/+118
|