2001-10-25 <NotZed@Ximian.com>
* folder-browser-ui.c (fbui_sensitize_timeout): So apparently the
uicomp can just 'vanish' while we're using it. Joy. Take care of
that case here, fixes#13482.
(fbui_sensitise_item): Check here too just for kicks.
* mail-folder-cache.c (store_finalised): If we can't destroy our
async event, then queue another one to do it.
(store_finalised_finish): And handle it here, until we can, then
free it.
(mail_note_store): Queue an async event to get folderinfo, dont
use mail_get_folderinfo.
(update_folders_get): thread-async event to retrieve the
folderinfo, and build it, then queues gui-async event to update
the gui.
(add_unmatched_info): Taken from mail-ops, adds unmatched if
required.
(add_vtrash_info): From mail-ops, add trash if required.
(update_folders): Thread async event to update gui.
(mail_note_store): Ref the store and storage when created.
(update_1folder): Changed to assume we have info_lock, and store
updates in an updates list.
(setup_folder): Same.
(folder_changed): Changed to call update_1folder directly.
(real_folder_changed): Removed.
(mail_note_folder): Changed to call update_1folder directly.
(real_note_folder): Removed.
(store_folder_subscribed): Call setup_folder directly.
(real_folder_created): Removed.
(real_flush_update): Function that actually does the updates in
the gui thread.
(mail_note_store): Go back to using mail_get_folderinfo.
(update_folders): Fixed upf ro changed api's.
(unset_folder_info): Changed to queue pending updates.
(real_folder_deleted): Removed.
(store_folder_unsubscribed): Do the removal work directly.
(mail_note_store): Dont link to finalised event of store - we now
ref it.
(mail_note_store_remove): If we have any pending updates, clear
them out. Also cancel any pending folderinfo retrieve operations.
(update_folders): Remove our update from the storeinfo list, if it
still exists.
(update_1folder): Make 'sent folder shows all counts' optional via
an environmental variable EVOLUTION_COUNT_SENT for all those
bloody whinging lusers out there.
(mail_note_store_remove): Unref the storage when done.
* mail-mt.c (mail_async_event_emit): If we're in main and have a
gui task, set it to run via an idle function.
(idle_async_event): Wrapper for calling do_async_event from idle
function, and freeing the message when done.
(idle_async_event): Call mail_msg_free not free on the finished
message.
* component-factory.c (mail_remove_storage): Destroy the storage
async.
(store_disconnect): This does the work.
(free_storage): Un-note the store when we remove it, so the store
noting code can unref things properly.
(idle_quit): Return false when done, dont loop.
2001-10-24 <NotZed@Ximian.com>
* component-factory.c (owner_set_cb): Setup an async_event
handler.
(idle_quit): Try to destroy the async_event, or keep dropping out
if it can't (deadlock).
* mail-mt.c (do_async_event): Set the threadid of the thread we're
running in so we know its running/which thread its in.
(mail_async_event_emit): Added new argument 'type' which is the
type of thread to execute against, gui or another one. Fixed all
callers.
(mail_async_event_destroy): Return -1 if this operation will fail
(deadlock possibility). If we're in the thread of the task
we're going to wait for, then return a failure (since we will
deadlock).
(mail_async_event_emit): Chagned to use MailAsyncFunc type as the
function type, which just takes 3 void args, change args to suit.
* mail-folder-cache.c (mail_note_store): Record the pending update
events in a pending list. We should really be able to use an
async event for this, but that doesn't return to the gui loop when
done :-/
(update_folders): Remove from pending update when done.
svn path=/trunk/; revision=14101
2001-10-16 Jeffrey Stedfast <fejj@ximian.com>
* message-list.c (on_cursor_activated_idle): Check that the
cursor_uid is non-NULL before emitting a "message_selected"
signal. Fixes bug #6015.
svn path=/trunk/; revision=13706
* mail-folder-cache.c: Added an async_event handler to store_info.
(mail_note_store): Setup async event handler here.
(store_finalised): Flush out async events here.
(folder_changed): Use async event handler to emit event.
(mail_note_folder): Chagned, do most of the work in the calling
context, only do the corba stuff in main.
(store_folder_subscribed): Use async event, and do more work locally.
(store_folder_unsubscribed): Same.
(store_folder_deleted): Call store_folder_unsubscribed if we have
to do any work.
(store_folder_created): Call store_folder_subscribed if we have to
do any work.
(store_folder_unsubscribed): Ref store while busy.
(real_folder_deleted): And unref here.
(store_folder_subscribed): Reg store while busy.
(real_folder_created): Unref here.
(mail_note_folder): Ref folder while busy.
(real_note_folder): And unref here.
(mail_note_folder): Hook onto folder_deleted event.
(folder_deleted): Just mark this folder as no longer available.
* mail-session.c (register_timeout): Use mail_call_main instead of
proxy_event.
(remove_timeout): Same here.
* folder-browser.c (folder_changed): use the new mail_async_event
stuff.
(folder_changed_main): Remove old async event handling stuff.
(FOLDER_BROWSER_LOCK/UNLOCK): Removed.
(FolderBrowserPrivate): Removed too, sigh.
* mail-mt.c (mail_async_event_new, mail_async_event_emit,
mail_async_event_destroy): New functions to handle async events.
(mail_proxy_event, mail_proxy_event_id): Removed old functions for
async events.
(do_call): Add suport for MAIL_CALL_p_pp.
(mail_msg_free): Use mail_async_event instead of proxy_event.
* message-list.c (message_changed): Promote the message_changed to
a folder_changed and use main_folder_changed to process it.
(main_message_changed): Remove.d
(message_list_init): Setup async event handler.
(message_list_destroy): Remove async handler.
(folder_changed): Use async hanler to emit event in main loop.
(message_changed): Same.
svn path=/trunk/; revision=13698
* message-list.c, message-list.h, message-list.etspec: Revert the
change to remove the Score column until Chris can fix ETable so
it's possible to remove a column without breaking everyone's
exisiting settings.
svn path=/trunk/; revision=13646
2001-10-05 Christopher James Lahey <clahey@ximian.com>
* message-list.c (message_list_setup_etree): Turn on
"uniform_row_height" argument.
svn path=/trunk/; revision=13442
2001-09-26 Christopher James Lahey <clahey@ximian.com>
* message-list.c (mlfe_callback): Check for the root node here.
svn path=/trunk/; revision=13177
2001-09-26 Christopher James Lahey <clahey@ximian.com>
* message-list.c (message_list_foreach): Use
e_tree_selected_path_foreach instead of
e_tree_selected_row_foreach here.
svn path=/trunk/; revision=13145
2001-09-24 Christopher James Lahey <clahey@ximian.com>
* message-list.c (filter_date): Use e_strftime_fix_am_pm instead
of strftime.
svn path=/trunk/; revision=13104
2001-09-19 <NotZed@Ximian.com>
* General cleanup of mail debug printfs.
* mail-folder-cache.[ch]: Completely rewritten. Removed all calls
to the old code everywhere they were used. Nuff said.
* folder-browser.h: Add shell_view to folder_browser & api to set
it.
* folder-browser-factory.c (control_activate): Set the shell-view
on the folder_browser.
(control_deactivate): And clear it here.
* folder-browser.c (folder_browser_destroy): Unhook from changed
events on the folder before giving it away.
(got_folder): Hook onto the folder-changed events.
(folder_changed): Event hook proxy for folder_changed events
(main_folder_changed): And the main code version.
(update_status_bar): And the one that actually does the work.
(on_selection_changed): Also call update_status_bar() to update
the selection count.
(folder_browser_set_shell_view): Implement function to set the
shell_view on the folder_browser.
(folder_browser_destroy): Release the shell_view here too.
* mail-tools.c (mail_tool_uri_to_folder): Dont 'note' the new
folder if its from a file: url, this is handled by hte local store
(yeeruughck).
* mail-local.c (mls_init):
(free_info):
(mls_finalise): Setup init/finalise funcs for the folderinfo hash.
(local_storage_removed_folder_cb): re-enable.
2001-09-18 <NotZed@Ximian.com>
* mail-local.c (MailLocalStore): Add a hash table to store
uri<>folderinfo data.
(mail_local_store_add_folder): Add a new folderinfo to our hash.
(mail_local_store_remove_folder): Remove a folder by uri.
(storage_listener_startup): Add this store to those monitored by
the folder tree.
svn path=/trunk/; revision=12974
2001-09-16 Christopher James Lahey <clahey@ximian.com>
* configure.in: Updated required version of gal to 0.11.99.4.
From calendar/ChangeLog:
2001-09-16 Christopher James Lahey <clahey@ximian.com>
* gui/dialogs/meeting-page.c (build_etable): Updated this to match
the new ETableSimple interface.
From mail/ChangeLog:
2001-09-16 Christopher James Lahey <clahey@ximian.com>
* message-list.c (ml_get_node_by_id): Made save_id const here.
From shell/ChangeLog:
2001-09-16 Christopher James Lahey <clahey@ximian.com>
* e-storage-set-view.c (etree_get_node_by_id): Made save_id const
here.
svn path=/trunk/; revision=12870
2001-08-24 Jeffrey Stedfast <fejj@ximian.com>
* mail-display.c (launch_cb): Use the new e_mkdtemp function.
* folder-browser.c (message_list_drag_data_get): Use the new
e_mkdtemp function.
svn path=/trunk/; revision=12462
2001-08-23 Jeffrey Stedfast <fejj@ximian.com>
* component-factory.c (destination_folder_handle_drop): Check to
make sure we actually have drag data.
* folder-browser.c (message_list_drag_data_received): Check to
make sure we have valid data.
svn path=/trunk/; revision=12424
2001-08-21 Peter Williams <peterw@ximian.com>
* message-list.c (message_list_set_folder): Don't sink the extras since
_set_folder can get called more than once (on reconfigure.)
(message_list_destroy): So just unref the extras here.
svn path=/trunk/; revision=12345
2001-08-15 Peter Williams <peterw@ximian.com>
* message-list.c (on_cursor_activated_idle): Always remove the
idle and return FALSE, instead of returning TRUE if more than one
message is selected.
svn path=/trunk/; revision=12075
2001-08-15 Jason Leach <jleach@ximian.com>
* message-list.c (message_list_init): Use ALWAYS for scroll frame
policy because ETable acts lame with AUTOMATIC. Bug #6925.
svn path=/trunk/; revision=12061
2001-08-13 Jeffrey Stedfast <fejj@ximian.com>
* message-list.c (get_message_uid): Do some g_assert()
action. Make sure that the node passed in is non-NULL and also
make sure that the CamelMessageInfo gotten from the ETree is
non-NULL.
(get_message_info): Same here.
svn path=/trunk/; revision=11959
2001-08-10 Jason Leach <jleach@ximian.com>
* mail-callbacks.c (next_unread_msg): Since 'N' keypresses go
through here now, use wrap-around selecting.
(previous_unread_msg): Same for 'P' here.
* message-list.c (on_cursor_activated_idle): Stop this idle timer
when we have multiple items selected, this keeps it from loading
and then marking the last item in your selection list as read.
Bug #4693.
svn path=/trunk/; revision=11895
2001-08-10 Jeffrey Stedfast <fejj@ximian.com>
* mail-config.c (mail_config_get_show_preview): Free dbkey if we
don't use it.
* folder-browser.c (on_right_click): Added a comment about leaking
memory here, but we seem to not even use the 2 strings we
strdup...is this code still under construction?
* mail-ops.c (mail_send_message): Free the sent_folder_uri at the
bottom of the function (ironically enough we were freeing it if we
encountered an error but never free'd it on success :-)
(get_folderinfo_got): Fixed a memory leak...this one would have
gone away once we got rid of the debug g_warning though.
svn path=/trunk/; revision=11874
2001-08-09 Jeffrey Stedfast <fejj@ximian.com>
* message-list.c (mlfe_callback): Added a g_assert_not_reached() -
I'm hoping this will help us track down the "can't delete message
sometimes" (ie bug #6637 and friends) bugs that users have been
reporting. If herein lies the problem, then we can expect some
crashes and some good backtraces, hopefully.
svn path=/trunk/; revision=11854
2001-08-08 Not Zed <NotZed@Ximian.com>
* mail-ops.c (send_mail_send): Dont double-register this
operation, mail-mt will do it for us.
(get_folderinfo_get): "
(get_folder_get): "
(get_store_get): "
(create_folder_get): "
(remove_folder_get): "
(sync_folder_sync): "
(get_message_get): "
* message-list.c (message_list_setup_etree): Free the etstate
object after we're done using it.
svn path=/trunk/; revision=11813
2001-08-06 Jason Leach <jleach@ximian.com>
* message-list.c (message_list_select): Fix a minor glitch with
how it started a backwards wraparound at the 2nd to last message,
skipping the very last message.
svn path=/trunk/; revision=11698
2001-08-04 Jason Leach <jleach@ximian.com>
* message-list.c (message_list_select): Add a @wraparound
argument, so the 'n' and 'p' keypresses (or anything else that
wants to) can wrap around to find the next unread.
* folder-browser.c (on_key_press): Tell it to wrap around here.
* mail-callbacks.c (delete_msg): Don't wrap around here (or the
other callbacks in this file).
svn path=/trunk/; revision=11651
2001-08-02 Jon Trowbridge <trow@ximian.com>
* mail-ops.c (filter_folder_describe): Added. Provide
description for filter_folder_op.
(fetch_mail_describe): Added. Provide description for
fetch_mail_op.
* message-list.c (regen_list_describe): Added. Provide
description for regen_list_op.
* mail-config.c (check_service_describe): Added. Provide
description for check_service_op.
* folder-info.c (do_describe_info): Added. Provide description
for get_info_op.
svn path=/trunk/; revision=11604
2001-07-23 Not Zed <NotZed@Ximian.com>
* mail-mt.c (mail_msgport_replied): Go back to calling
mail_msg_free here.
(mail_msg_destroy): Remove the operation unregistration stuff.
(mail_msg_received): And put it here, so we unregister as soon as
the async part of the operation is complete. I thought about this
and we should be doing this anyway so we register/unregister
always in the same thread, although the camel_operation api
doesn't enforce it, this *is* what it expects.
* message-list.c (regen_list_regen): re-add reporting to
rebuilding the message list. Basically fixes#4931
svn path=/trunk/; revision=11332
2001-07-19 Jason Leach <jleach@ximian.com>
* mail-display.c (mail_display_new): Set the vertical scrolling
policy for the mail display to AUTOMATIC, only get a scrollbar if
the e-mail is longer than one frame.
* folder-browser.c (my_folder_browser_init): We were setting the
policy twice (and to two different things). Removed this one.
* message-list.c (message_list_init): Set the policy for the
message list scroll frame to be horizontal=NEVER,
vertical=AUTOMATIC (scrollbar only if you have >1 page of
messages).
svn path=/trunk/; revision=11239
2001-07-09 Peter Williams <peterw@ximian.com>
* mail-config.c (mail_config_write): Some NULL protection for our strings:
pgp_key, html_signature, smime_key. Probably we should do this for all
strings. Either that or change Bonobo Config.
* message-list.c (message_list_init): Explicitly initialize search to NULL.
Bug 3951 might to be due to a problem wrt this, and it can't hurt.
svn path=/trunk/; revision=10919
2001-07-07 Christopher James Lahey <clahey@ximian.com>
* message-list.c (on_cursor_activated_cmd): Check for new_uid !=
NULL here before strcmping.
svn path=/trunk/; revision=10889
2001-07-07 Christopher James Lahey <clahey@ximian.com>
* message-list.c (message_list_select): Made this handle being
given a row that's outside the range better.
svn path=/trunk/; revision=10881
2001-07-06 Jeffrey Stedfast <fejj@ximian.com>
* folder-browser.c (folder_browser_copy): Mark the messages as
Seen also.
(folder_browser_class_init): Create an atom type for
X-Evolution-Message selection type.
(my_folder_browser_init): Add our multiple selection types, one of
which is the default string type.
* component-factory.c (destination_folder_handle_drop): Update to
use the new X-Evolution-Message type format.
* folder-browser.c (selection_get): Convert the
X-Evolution-Message clipboard type to whatever format the target
wants.
(message_list_drag_data_get): Update because the
X-Evolution-Message type changed.
(folder_browser_copy): Same.
(x_evolution_message_parse): And here too.
svn path=/trunk/; revision=10853
2001-07-06 Jason Leach <jleach@ximian.com>
* mail-callbacks.c (delete_msg): Select the very next message
after deleting, not the next undeleted (it can make things jump
around in annoying ways if you are deleting many messages), bug #4032.
* folder-browser.c: Forgot to commit the "Mark as Important" right
click menu item.
* message-list.c (message_list_set_folder): Setup the strikeout
column here (after we've gotten the folder) so we can disable
strikeouts for vtrash folders, part of bug #2224.
svn path=/trunk/; revision=10849
2001-07-02 Sam Creasey <sammy@oh.verio.com>
* mail-account-editor-news.c: Added an MailAccountEditorNews, for
NNTP configuratuion. Based on MailAccountEditor, but stripped.
* Makefile.am: added mail-account-editor-news.c and
mail-account-editor-news.h to SOURCES if ENABLE_NNTP is defined.
* mail-accounts.c (load_news): Moved this function, and fixed some
slight brokenness.
(news_edit): Added functional code using MailAccountEditorNews
(news_add): Added functional code using news_edit after
allocation.
* mail-config.glade: news_editor_window widget added. Used by
MailAccountEditorNews.
* mail-display.c (save_data_cb): Store the pathname used when
saving messages so that the next save box will default to the
previous path.
* message-browser.c (message_browser_new): add signal handler for
size_allocate on the message browser. Thus new windows are size
as they were last allocated.
(message_browser_size_allocate_cb): handler to store allocations.
* message-list.c (message_list_setup_etree): connect to the
info_changed signals for the state of the message_list->tree.
Save the folder state to disk, so that when additional
message_lists are created, they are consistant. e.g. the next
buttons do the same thing in the browser, and in the message
viewer after changing sorting options.
* subscribe-dialog.c (build_tree): freeze sc->folder model while
building the tree. Not doing so takes a very long time over 40000
newsgroups.
svn path=/trunk/; revision=10719
2001-06-05 Jason Leach <jleach@ximian.com>
(Fix bug #3211: Should undelete when flagging a delete message as
important)
* message-list.c (on_click): When flagging a message as
important, check to see if it's flagged as deleted, if so,
undelete it.
svn path=/trunk/; revision=10122
2001-05-27 Jeffrey Stedfast <fejj@ximian.com>
* message-list.c: Removed the etable spec string.
(message_list_construct): Load the etable spec from a file.
* folder-browser-factory.c: Load the etable spec from the file,
not a string.
* Makefile.am: Add message-list.etspec to be installed.
* message-list.etspec: New file containing the ETable file
specification.
* mail-config.h: Prototype evolution_mail_config_get_type.
svn path=/trunk/; revision=10025
2001-05-24 Jeffrey Stedfast <fejj@ximian.com>
* message-list.c (message_list_select_uid): g_strdup the uid into
the ml->cursor_uid.
* message-browser.c (message_browser_forward_msg): Use the default
forward style.
svn path=/trunk/; revision=9969
2001-05-22 Jeffrey Stedfast <fejj@ximian.com>
* message-browser.c (message_browser_folder_loaded): Instead of
calling message_list_select_uid() here, instead connect to the
"message_list_loaded" signal since the message-list is not built
yet at this point.
(message_browser_message_list_built): Call
message_list_select_uid() here instead.
* message-list.c: Lets have a new signal, MESSAGE_LIST_BUILT, that
gets emitted when the message-list has finished being built by one
of the built_*() functions.
(message_list_class_init): Setup the signal stuff.
(regen_list_regened): Emit the signal here (should this perhaps be
moved into each of the build_*() functions instead?).
svn path=/trunk/; revision=9925
* folder-browser.c (folder_browser_is_drafts,
folder_browser_is_sent, folder_browser_is_outbox): Functions to
determine if a folderbrowser is one of the drafts, sent, or outbox
folders.
(got_folder): Pass TRUE for the "outgoing" flag to
message_list_set_folder if this is a Sent, Drafts, or Outbox
folder.
* message-list.c (message_list_set_folder): Take a flag saying
whether or not the folder is an "outgoing" folder.
(message_list_setup_etree): Ditto. Use that rather than a
hardcoded list of foldernames for deciding whether to swap From
and To in the default layout.
* mail-config.c (mail_config_folder_to_cachename): Make IMAP
folders have unique cachenames rather than only one per store, so
that IMAP Sent and Drafts folders don't get forced into having the
same layout as the INBOX.
* mail-callbacks.c: (is_sent_folder, is_drafts_folder): Gone.
Replaced with simpler folder_browser_is_* routines.
(edit_msg, resend_msg, open_msg): Use folder_browser_is_*
routines.
* mail-local.c (reconfigure_clicked): Update call to
message_list_set_folder.
svn path=/trunk/; revision=9857
* folder-browser.c (on_key_press): Don't advance to the next
undeleted message after "Delete"...
* mail-callbacks.c (delete_msg): ...instead, do it here, whether
the user used Delete, Alt+D, or the toolbar. (But only if they
only deleted a single message.)
* message-list.c (message_list_select): Don't clear the display on
failure.
(build_tree): Clear the display when the currently-selected
message stops existing and we don't have an obvious message to
select instead of it. (Eg, when deleting the last message with
"hide deleted messages" set, or expunging while a deleted message
is selected.)
svn path=/trunk/; revision=9744
* folder-browser.c (my_folder_browser_init): Connect to
key_press_event on the GtkHTML widget.
(etree_key): Only handle space/backspace here, pass the rest off
to on_key_press.
(on_key_press): Handle Delete/N/P/Menu in either MessageList or
MailDisplay.
* message-list.c (message_list_select): Grab focus if we don't
have it.
svn path=/trunk/; revision=9694
* message-list.c: #include <camel/camel-file-utils.h>
* mail-ops.c (get_folderinfo_get):
* subscribe-dialog.c (build_tree): Update for
camel_store_get_folder_info prototype change.
* mail-format.c (handle_text_plain_flowed): Improve more on the
fix from the other day: the first level of indentation adds blank
lines, but further levels don't...
svn path=/trunk/; revision=9660
2001-04-23 Jeffrey Stedfast <fejj@ximian.com>
* mail-callbacks.c (do_view_message): Use the message-browser
widget rather than the mail-view window.
* mail-view.c: Removed.
* folder-browser.c: Added a folder_loaded signal.
* message-browser.[c,h]: New window to solve all our message
browsing needs. This replaces mail-view.c.
* message-list.c (message_list_select_uid): New function needed by
the new message-browser window.
svn path=/trunk/; revision=9525