Add a priority field to EMailFormatterExtension and EMailParserExtension
class structs. Extension classes can then explicitly specify a priority
with respect to other extension classes with the same MIME type, so that
the order of extension registration doesn't matter.
Priority field defaults to G_PRIORITY_DEFAULT. Built-in formatters and
extensions will use G_PRIORITY_LOW. We can get more sophisticated with
priority values if we need to, but this should suffice for now.
This reverts commit bf30024dd7, because
it breaks EMailFormatter/Parser extensions, like the prefer-plain.
The thing is that the internal formatters/parsers (also extensions)
should be always added first, and only after then can be added extended
extensions, which are used before those internal. This constraint was not
satisfied with the reverted commit, the order of extension registration
was unpredictable, depended on GType.
Might be the final change for this bug, the two previous commits
were not using the right approach, causing regression in rendering
of text/* parts which were not named in the list of excluded content
types for a 'raw' formatting.
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.
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.
In e_mail_config_service_page_auto_configre(), we do detect that only
POP3 is available for MSN accounts and switch to the appropriate service
backend.
The problem was with the hack I added awhile back to momentarily skip to
the Receiving page just before skipping to the Summary page, so clicking
"Go Back" from the Summary page would return to the Receiving page.
That momentary skip triggered mail_config_assistant_prepare() on the
Receiving page, which then triggered e_mail_config_page_setup_defaults()
since the Receiving page was not yet in the visited pages hash table.
The Receiving page's setup_defaults() method reset the service backend
to IMAPX, which is the correct thing to do when not auto-configured.
The solution is add the Receiving page to the visited pages hash table
after a successful auto-configuration, but just BEFORE we momentarily
skip to it. This tricks mail_config_assistant_prepare() into thinking
the page was already visited, and it skips setting up defaults for it.
Also added the Sending page to visited pages, just for consistency.
Collect all the "config" extensions from the "addressbook", "calendar",
and "mail" modules into one place. These extensions typically just bind
GObject properties of extensible classes to app-specific GSettings keys.