evolution r37119 - in branches/kill-bonobo: calendar/gui/dialogs calendar/modules composer mail



Author: mbarnes
Date: Wed Jan 21 21:03:14 2009
New Revision: 37119
URL: http://svn.gnome.org/viewvc/evolution?rev=37119&view=rev

Log:
Fix some runtime warnings.
Copy that nasty message list scrolling hack to EMailShellContent.
Remember the scrollbar position for each folder.  Now I just have to make
it select a message automatically.


Modified:
   branches/kill-bonobo/calendar/gui/dialogs/cal-prefs-dialog.glade
   branches/kill-bonobo/calendar/modules/e-memo-shell-view-actions.c
   branches/kill-bonobo/composer/e-composer-private.c
   branches/kill-bonobo/mail/e-mail-reader-utils.c
   branches/kill-bonobo/mail/e-mail-reader.h
   branches/kill-bonobo/mail/e-mail-shell-content.c
   branches/kill-bonobo/mail/e-mail-shell-module.h
   branches/kill-bonobo/mail/em-composer-utils.c
   branches/kill-bonobo/mail/em-folder-browser.c
   branches/kill-bonobo/mail/em-folder-view.c
   branches/kill-bonobo/mail/em-format.c
   branches/kill-bonobo/mail/em-format.h
   branches/kill-bonobo/mail/em-utils.c

Modified: branches/kill-bonobo/calendar/gui/dialogs/cal-prefs-dialog.glade
==============================================================================
--- branches/kill-bonobo/calendar/gui/dialogs/cal-prefs-dialog.glade	(original)
+++ branches/kill-bonobo/calendar/gui/dialogs/cal-prefs-dialog.glade	Wed Jan 21 21:03:14 2009
@@ -986,7 +986,7 @@
 			  <property name="update_policy">GTK_UPDATE_ALWAYS</property>
 			  <property name="snap_to_ticks">False</property>
 			  <property name="wrap">False</property>
-			  <property name="adjustment">0 0 9999 1 10 10</property>
+			  <property name="adjustment">0 0 9999 1 10 0</property>
 			</widget>
 			<packing>
 			  <property name="padding">0</property>

Modified: branches/kill-bonobo/calendar/modules/e-memo-shell-view-actions.c
==============================================================================
--- branches/kill-bonobo/calendar/modules/e-memo-shell-view-actions.c	(original)
+++ branches/kill-bonobo/calendar/modules/e-memo-shell-view-actions.c	Wed Jan 21 21:03:14 2009
@@ -677,6 +677,10 @@
 	  NULL,
 	  "memo-clipboard-cut" },
 
+	{ "memo-popup-clipboard-paste",
+	  NULL,
+	  "memo-clipboard-paste" },
+
 	{ "memo-popup-delete",
 	  NULL,
 	  "memo-delete" },

Modified: branches/kill-bonobo/composer/e-composer-private.c
==============================================================================
--- branches/kill-bonobo/composer/e-composer-private.c	(original)
+++ branches/kill-bonobo/composer/e-composer-private.c	Wed Jan 21 21:03:14 2009
@@ -18,8 +18,6 @@
 #include "e-composer-private.h"
 #include "e-util/e-util-private.h"
 
-#include "mail/e-mail-shell-module.h"
-
 static void
 composer_setup_charset_menu (EMsgComposer *composer)
 {
@@ -147,14 +145,6 @@
 	priv->header_table = g_object_ref (widget);
 	gtk_widget_show (widget);
 
-	/* XXX We have to access the mail shell module directly for the
-	 *     benefit of other modules that spawn composer windows but
-	 *     don't link to the mail module.  Need to work out a better
-	 *     inter-module messaging system, in lieu of Bonobo.  D-Bus? */
-	e_composer_header_table_set_folder_tree_model (
-		E_COMPOSER_HEADER_TABLE (widget),
-		e_mail_shell_module_get_folder_tree_model (mail_shell_module));
-
 	/* Construct attachment widgets.
 	 * XXX Move this stuff into a new custom widget. */
 

Modified: branches/kill-bonobo/mail/e-mail-reader-utils.c
==============================================================================
--- branches/kill-bonobo/mail/e-mail-reader-utils.c	(original)
+++ branches/kill-bonobo/mail/e-mail-reader-utils.c	Wed Jan 21 21:03:14 2009
@@ -318,9 +318,6 @@
 
 	html_print = em_format_html_print_new (
 		(EMFormatHTML *) html_display, action);
-	em_format_set_session (
-		(EMFormat *) html_print,
-		((EMFormat *) html_display)->session);
 	em_format_merge_handler (
 		(EMFormat *) html_print,
 		(EMFormat *) html_display);

Modified: branches/kill-bonobo/mail/e-mail-reader.h
==============================================================================
--- branches/kill-bonobo/mail/e-mail-reader.h	(original)
+++ branches/kill-bonobo/mail/e-mail-reader.h	Wed Jan 21 21:03:14 2009
@@ -34,9 +34,15 @@
 #define E_MAIL_READER(obj) \
 	(G_TYPE_CHECK_INSTANCE_CAST \
 	((obj), E_TYPE_MAIL_READER, EMailReader))
+#define E_MAIL_READER_IFACE(cls) \
+	(G_TYPE_CHECK_CLASS_CAST \
+	((cls), E_TYPE_MAIL_READER, EMailReaderIface))
 #define E_IS_MAIL_READER(obj) \
 	(G_TYPE_CHECK_INSTANCE_TYPE \
 	((obj), E_TYPE_MAIL_READER))
+#define E_IS_MAIL_READER_IFACE(cls) \
+	(G_TYPE_CHECK_CLASS_TYPE \
+	((cls), E_TYPE_MAIL_READER))
 #define E_MAIL_READER_GET_IFACE(obj) \
 	(G_TYPE_INSTANCE_GET_INTERFACE \
 	((obj), E_TYPE_MAIL_READER, EMailReaderIface))

Modified: branches/kill-bonobo/mail/e-mail-shell-content.c
==============================================================================
--- branches/kill-bonobo/mail/e-mail-shell-content.c	(original)
+++ branches/kill-bonobo/mail/e-mail-shell-content.c	Wed Jan 21 21:03:14 2009
@@ -48,7 +48,17 @@
 	EMFormatHTMLDisplay *html_display;
 	GalViewInstance *view_instance;
 
+	gchar *selected_uid;
+
+	/* ETable scrolling hack */
+	gdouble default_scrollbar_position;
+
 	guint paned_binding_id;
+	guint scroll_timeout_id;
+
+	/* Signal handler IDs */
+	guint message_list_built_id;
+	guint message_list_scrolled_id;
 
 	guint preview_visible	: 1;
 	guint vertical_view	: 1;
@@ -63,6 +73,133 @@
 static gpointer parent_class;
 
 static void
+mail_shell_content_etree_unfreeze (MessageList *message_list,
+                                   GdkEvent *event)
+{
+	ETableItem *item;
+	GObject *object;
+
+	item = e_tree_get_item (message_list->tree);
+	object = G_OBJECT (((GnomeCanvasItem *) item)->canvas);
+
+	g_object_set_data (object, "freeze-cursor", 0);
+}
+
+static void
+mail_shell_content_message_list_scrolled_cb (EMailShellContent *mail_shell_content,
+                                             MessageList *message_list)
+{
+	const gchar *key;
+	gdouble position;
+	gchar *value;
+
+	/* Save the scrollbar position for the current folder. */
+
+	key = "evolution:list_scroll_position";
+	position = message_list_get_scrollbar_position (message_list);
+	value = g_strdup_printf ("%f", position);
+
+	if (camel_object_meta_set (message_list->folder, key, value))
+		camel_object_state_write (message_list->folder);
+
+	g_free (value);
+}
+
+static gboolean
+mail_shell_content_scroll_timeout_cb (EMailShellContent *mail_shell_content)
+{
+	EMailShellContentPrivate *priv = mail_shell_content->priv;
+	MessageList *message_list;
+	EMailReader *reader;
+	const gchar *key;
+	gdouble position;
+	gchar *value;
+
+	/* Initialize the scrollbar position for the current folder
+	 * and setup a callback to handle scrollbar position changes. */
+
+	reader = E_MAIL_READER (mail_shell_content);
+	message_list = e_mail_reader_get_message_list (reader);
+	position = priv->default_scrollbar_position;
+
+	key = "evolution:list_scroll_position";
+	value = camel_object_meta_get (message_list->folder, key);
+
+	if (value != NULL) {
+		position = strtod (value, NULL);
+		g_free (value);
+	}
+
+	message_list_set_scrollbar_position (message_list, position);
+
+	priv->message_list_scrolled_id = g_signal_connect_swapped (
+		message_list, "message-list-scrolled",
+		G_CALLBACK (mail_shell_content_message_list_scrolled_cb),
+		mail_shell_content);
+
+	priv->scroll_timeout_id = 0;
+
+	return FALSE;
+}
+
+static void
+mail_shell_content_message_list_built_cb (EMailShellContent *mail_shell_content,
+                                          MessageList *message_list)
+{
+	EMailShellContentPrivate *priv = mail_shell_content->priv;
+	GtkScrolledWindow *scrolled_window;
+	GtkWidget *vscrollbar;
+	gdouble position = 0.0;
+
+	g_signal_handler_disconnect (
+		message_list, priv->message_list_built_id);
+	priv->message_list_built_id = 0;
+
+	if (message_list->cursor_uid == NULL && priv->selected_uid != NULL) {
+		CamelMessageInfo *info;
+
+		/* If the message isn't in the folder yet, keep selected_uid
+		 * around, as it could be caught by a set_folder() at some
+		 * later date. */
+		info = camel_folder_get_message_info (
+			message_list->folder, priv->selected_uid);
+		if (info != NULL) {
+			camel_folder_free_message_info (
+				message_list->folder, info);
+			e_mail_reader_set_message (
+				E_MAIL_READER (mail_shell_content),
+				priv->selected_uid, TRUE);
+			g_free (priv->selected_uid);
+			priv->selected_uid = NULL;
+		}
+
+		position = message_list_get_scrollbar_position (message_list);
+	}
+
+	priv->default_scrollbar_position = position;
+
+	/* FIXME This is a gross workaround for an ETable bug that I can't
+	 *       fix (Ximian bug #55303).
+	 *
+	 *       Since e_canvas_item_region_show_relay() uses a timeout,
+	 *       we have to use a timeout of the same interval but a lower
+	 *       priority. */
+	priv->scroll_timeout_id = g_timeout_add_full (
+		G_PRIORITY_LOW, 250, (GSourceFunc)
+		mail_shell_content_scroll_timeout_cb,
+		mail_shell_content, NULL);
+
+	/* FIXME This is another ugly hack to hide a side-effect of the
+	 *       previous workaround. */
+	scrolled_window = GTK_SCROLLED_WINDOW (message_list);
+	vscrollbar = gtk_scrolled_window_get_vscrollbar (scrolled_window);
+	g_signal_connect_swapped (
+		vscrollbar, "button-press-event",
+		G_CALLBACK (mail_shell_content_etree_unfreeze),
+		message_list);
+}
+
+static void
 mail_shell_content_display_view_cb (EMailShellContent *mail_shell_content,
                                     GalView *gal_view)
 {
@@ -78,6 +215,24 @@
 }
 
 static void
+mail_shell_content_message_selected_cb (EMailShellContent *mail_shell_content,
+                                        const gchar *selected_uid,
+                                        MessageList *message_list)
+{
+	const gchar *key = "evolution:selected_uid";
+	CamelFolder *folder;
+
+	folder = message_list->folder;
+	g_return_if_fail (folder != NULL);
+
+	if (camel_object_meta_set (folder, key, selected_uid))
+		camel_object_state_write (folder);
+
+	g_free (mail_shell_content->priv->selected_uid);
+	mail_shell_content->priv->selected_uid = NULL;
+}
+
+static void
 mail_shell_content_set_property (GObject *object,
                                  guint property_id,
                                  const GValue *value,
@@ -162,6 +317,8 @@
 
 	priv = E_MAIL_SHELL_CONTENT_GET_PRIVATE (object);
 
+	g_free (priv->selected_uid);
+
 	/* Chain up to parent's finalize() method. */
 	G_OBJECT_CLASS (parent_class)->finalize (object);
 }
@@ -173,6 +330,8 @@
 	EShellContent *shell_content;
 	EShellView *shell_view;
 	EShellViewClass *shell_view_class;
+	EMailReader *reader;
+	MessageList *message_list;
 	GConfBridge *bridge;
 	GtkWidget *container;
 	GtkWidget *widget;
@@ -224,7 +383,7 @@
 	/* Load the view instance. */
 
 	e_mail_shell_content_update_view_instance (
-		E_MAIL_SHELL_CONTENT (object));
+		E_MAIL_SHELL_CONTENT (shell_content));
 
 	/* Bind GObject properties to GConf keys. */
 
@@ -233,6 +392,16 @@
 	object = G_OBJECT (priv->paned);
 	key = "/apps/evolution/mail/display/paned_size";
 	gconf_bridge_bind_property_delayed (bridge, key, object, "position");
+
+	/* Message list customizations. */
+
+	reader = E_MAIL_READER (shell_content);
+	message_list = e_mail_reader_get_message_list (reader);
+
+	g_signal_connect_swapped (
+		message_list, "message-selected",
+		G_CALLBACK (mail_shell_content_message_selected_cb),
+		shell_content);
 }
 
 static guint32
@@ -309,6 +478,35 @@
 }
 
 static void
+mail_shell_content_set_folder (EMailReader *reader,
+                               CamelFolder *folder,
+                               const gchar *folder_uri)
+{
+	EMailShellContentPrivate *priv;
+	EMailReaderIface *default_iface;
+	MessageList *message_list;
+
+	priv = E_MAIL_SHELL_CONTENT_GET_PRIVATE (reader);
+
+	message_list = e_mail_reader_get_message_list (reader);
+
+	message_list_freeze (message_list);
+
+	/* Chain up to interface's default set_folder() method. */
+	default_iface = g_type_default_interface_peek (E_TYPE_MAIL_READER);
+	default_iface->set_folder (reader, folder, folder_uri);
+
+	/* This is a one-time-only callback. */
+	if (message_list->cursor_uid == NULL && priv->message_list_built_id == 0)
+		priv->message_list_built_id = g_signal_connect_swapped (
+			message_list, "message-list-built",
+			G_CALLBACK (mail_shell_content_message_list_built_cb),
+			reader);
+
+	message_list_thaw (message_list);
+}
+
+static void
 mail_shell_content_class_init (EMailShellContentClass *class)
 {
 	GObjectClass *object_class;
@@ -358,6 +556,7 @@
 	iface->get_message_list = mail_shell_content_get_message_list;
 	iface->get_shell_module = mail_shell_content_get_shell_module;
 	iface->get_window = mail_shell_content_get_window;
+	iface->set_folder = mail_shell_content_set_folder;
 }
 
 static void

Modified: branches/kill-bonobo/mail/e-mail-shell-module.h
==============================================================================
--- branches/kill-bonobo/mail/e-mail-shell-module.h	(original)
+++ branches/kill-bonobo/mail/e-mail-shell-module.h	Wed Jan 21 21:03:14 2009
@@ -33,8 +33,8 @@
 
 /* Globally available shell module. 
  *
- * XXX I don't like having this globally available but passing it around to
- *     all the various utilities that need to access to the module's data
+ * XXX I don't like having this globally available but passing it around
+ *     to all the various utilities that need to access the module's data
  *     directory and local folders is too much of a pain for now. */
 extern EShellModule *mail_shell_module;
 

Modified: branches/kill-bonobo/mail/em-composer-utils.c
==============================================================================
--- branches/kill-bonobo/mail/em-composer-utils.c	(original)
+++ branches/kill-bonobo/mail/em-composer-utils.c	Wed Jan 21 21:03:14 2009
@@ -1647,7 +1647,7 @@
 	g_free (subject);
 
 	/* and send it */
-	out_folder = mail_component_get_folder (NULL, MAIL_COMPONENT_FOLDER_OUTBOX);
+	out_folder = e_mail_shell_module_get_folder (mail_shell_module, E_MAIL_FOLDER_OUTBOX);
 	info = camel_message_info_new (NULL);
 	camel_message_info_set_flags (info, CAMEL_MESSAGE_SEEN, CAMEL_MESSAGE_SEEN);
 	mail_append_mail (out_folder, forward, info, emu_forward_raw_done, NULL);
@@ -2523,6 +2523,8 @@
 void
 em_configure_new_composer (EMsgComposer *composer)
 {
+	EComposerHeaderTable *table;
+	EMFolderTreeModel *model;
 	struct emcs_t *emcs;
 
 	g_return_if_fail (E_IS_MSG_COMPOSER (composer));
@@ -2541,5 +2543,8 @@
 		composer, "save-draft",
 		G_CALLBACK (em_utils_composer_save_draft_cb), NULL);
 
-	g_debug ("Composer configured.");
+	/* Supply the composer with a folder tree model. */
+	table = e_msg_composer_get_header_table (composer);
+	model = e_mail_shell_module_get_folder_tree_model (mail_shell_module);
+	e_composer_header_table_set_folder_tree_model (table, model);
 }

Modified: branches/kill-bonobo/mail/em-folder-browser.c
==============================================================================
--- branches/kill-bonobo/mail/em-folder-browser.c	(original)
+++ branches/kill-bonobo/mail/em-folder-browser.c	Wed Jan 21 21:03:14 2009
@@ -539,16 +539,16 @@
 
 }
 
-static void
-emfb_finalise(GObject *o)
-{
-	EMFolderBrowser *emfb = (EMFolderBrowser *)o;
-
-	g_free (emfb->priv->select_uid);
-	g_free (emfb->priv);
-
-	((GObjectClass *)emfb_parent)->finalize(o);
-}
+//static void
+//emfb_finalise(GObject *o)
+//{
+//	EMFolderBrowser *emfb = (EMFolderBrowser *)o;
+//
+//	g_free (emfb->priv->select_uid);
+//	g_free (emfb->priv);
+//
+//	((GObjectClass *)emfb_parent)->finalize(o);
+//}
 
 static void
 emfb_destroy(GtkObject *o)
@@ -1351,44 +1351,44 @@
 	em_folder_view_set_hide_deleted(emfv, state[0] != '0');
 }
 
-static void
-emfb_list_scrolled (MessageList *ml, EMFolderBrowser *emfb)
-{
-	EMFolderView *emfv = (EMFolderView *) emfb;
-	double position;
-	char *state;
-
-	position = message_list_get_scrollbar_position (ml);
-	state = g_strdup_printf ("%f", position);
-
-	if (camel_object_meta_set (emfv->folder, "evolution:list_scroll_position", state))
-		camel_object_state_write (emfv->folder);
-
-	g_free (state);
-}
-
-static gboolean
-scroll_idle_cb (EMFolderBrowser *emfb)
-{
-	EMFolderView *emfv = (EMFolderView *) emfb;
-	double position;
-	char *state;
-
-	if ((state = camel_object_meta_get (emfv->folder, "evolution:list_scroll_position"))) {
-		position = strtod (state, NULL);
-		g_free (state);
-	} else {
-		position = emfb->priv->default_scroll_position;
-	}
-
-	message_list_set_scrollbar_position (emfv->list, position);
-
-	emfb->priv->list_scrolled_id = g_signal_connect (emfv->list, "message_list_scrolled", G_CALLBACK (emfb_list_scrolled), emfb);
-
-	emfb->priv->idle_scroll_id = 0;
-
-	return FALSE;
-}
+//static void
+//emfb_list_scrolled (MessageList *ml, EMFolderBrowser *emfb)
+//{
+//	EMFolderView *emfv = (EMFolderView *) emfb;
+//	double position;
+//	char *state;
+//
+//	position = message_list_get_scrollbar_position (ml);
+//	state = g_strdup_printf ("%f", position);
+//
+//	if (camel_object_meta_set (emfv->folder, "evolution:list_scroll_position", state))
+//		camel_object_state_write (emfv->folder);
+//
+//	g_free (state);
+//}
+
+//static gboolean
+//scroll_idle_cb (EMFolderBrowser *emfb)
+//{
+//	EMFolderView *emfv = (EMFolderView *) emfb;
+//	double position;
+//	char *state;
+//
+//	if ((state = camel_object_meta_get (emfv->folder, "evolution:list_scroll_position"))) {
+//		position = strtod (state, NULL);
+//		g_free (state);
+//	} else {
+//		position = emfb->priv->default_scroll_position;
+//	}
+//
+//	message_list_set_scrollbar_position (emfv->list, position);
+//
+//	emfb->priv->list_scrolled_id = g_signal_connect (emfv->list, "message_list_scrolled", G_CALLBACK (emfb_list_scrolled), emfb);
+//
+//	emfb->priv->idle_scroll_id = 0;
+//
+//	return FALSE;
+//}
 
 static void
 emfb_gui_folder_changed(CamelFolder *folder, void *dummy, EMFolderBrowser *emfb)
@@ -1415,60 +1415,60 @@
 	mail_async_event_emit(emfb->view.async, MAIL_ASYNC_GUI, (MailAsyncFunc)emfb_gui_folder_changed, folder, NULL, emfb);
 }
 
-static void
-emfb_etree_unfreeze (GtkWidget *widget, GdkEvent *event, EMFolderView *emfv)
-{
-
-	ETableItem *item = e_tree_get_item (emfv->list->tree);
-
-	g_object_set_data (G_OBJECT (((GnomeCanvasItem *) item)->canvas), "freeze-cursor", 0);
-}
+//static void
+//emfb_etree_unfreeze (GtkWidget *widget, GdkEvent *event, EMFolderView *emfv)
+//{
+//
+//	ETableItem *item = e_tree_get_item (emfv->list->tree);
+//
+//	g_object_set_data (G_OBJECT (((GnomeCanvasItem *) item)->canvas), "freeze-cursor", 0);
+//}
 
 
 /* TODO: This should probably be handled by message-list, by storing/queueing
    up the select operation if its busy rebuilding the message-list */
-static void
-emfb_list_built (MessageList *ml, EMFolderBrowser *emfb)
-{
-	EMFolderView *emfv = (EMFolderView *) emfb;
-	double position = 0.0f;
-
-	g_signal_handler_disconnect (ml, emfb->priv->list_built_id);
-	emfb->priv->list_built_id = 0;
-
-	if (emfv->list->cursor_uid == NULL) {
-		if (emfb->priv->select_uid) {
-			CamelMessageInfo *mi;
-
-			/* If the message isn't in the folder yet, keep select_uid around, it could be caught by
-			   folder_changed, at some later date */
-			mi = camel_folder_get_message_info(emfv->folder, emfb->priv->select_uid);
-			if (mi) {
-				camel_folder_free_message_info(emfv->folder, mi);
-				em_folder_view_set_message(emfv, emfb->priv->select_uid, TRUE);
-				g_free (emfb->priv->select_uid);
-				emfb->priv->select_uid = NULL;
-			}
-
-			/* change the default to the current position */
-			position = message_list_get_scrollbar_position (ml);
-		} else {
-			/* NOTE: not all users want this, so we need a preference for it perhaps? see bug #52887 */
-			/* FIXME: if the 1st message in the list is unread, this will actually select the second unread msg */
-			/*message_list_select (ml, MESSAGE_LIST_SELECT_NEXT, 0, CAMEL_MESSAGE_SEEN, TRUE);*/
-		}
-	}
-
-	emfb->priv->default_scroll_position = position;
-
-	/* FIXME: this is a gross workaround for an etable bug that I can't fix - bug #55303 */
-	/* this needs to be a lower priority than anything in e-table-item/e-canvas, since
-	 * e_canvas_item_region_show_relay() uses a timeout, we have to use a timeout of the
-	 * same interval but a lower priority. */
-	emfb->priv->idle_scroll_id = g_timeout_add_full (G_PRIORITY_LOW, 250, (GSourceFunc) scroll_idle_cb, emfb, NULL);
-	/* FIXME: This is another ugly hack done to hide a bug that above hack leaves. */
-	g_signal_connect (((GtkScrolledWindow *) ml)->vscrollbar, "button-press-event", G_CALLBACK (emfb_etree_unfreeze), emfb);
-}
+//static void
+//emfb_list_built (MessageList *ml, EMFolderBrowser *emfb)
+//{
+//	EMFolderView *emfv = (EMFolderView *) emfb;
+//	double position = 0.0f;
+//
+//	g_signal_handler_disconnect (ml, emfb->priv->list_built_id);
+//	emfb->priv->list_built_id = 0;
+//
+//	if (emfv->list->cursor_uid == NULL) {
+//		if (emfb->priv->select_uid) {
+//			CamelMessageInfo *mi;
+//
+//			/* If the message isn't in the folder yet, keep select_uid around, it could be caught by
+//			   folder_changed, at some later date */
+//			mi = camel_folder_get_message_info(emfv->folder, emfb->priv->select_uid);
+//			if (mi) {
+//				camel_folder_free_message_info(emfv->folder, mi);
+//				em_folder_view_set_message(emfv, emfb->priv->select_uid, TRUE);
+//				g_free (emfb->priv->select_uid);
+//				emfb->priv->select_uid = NULL;
+//			}
+//
+//			/* change the default to the current position */
+//			position = message_list_get_scrollbar_position (ml);
+//		} else {
+//			/* NOTE: not all users want this, so we need a preference for it perhaps? see bug #52887 */
+//			/* FIXME: if the 1st message in the list is unread, this will actually select the second unread msg */
+//			/*message_list_select (ml, MESSAGE_LIST_SELECT_NEXT, 0, CAMEL_MESSAGE_SEEN, TRUE);*/
+//		}
+//	}
+//
+//	emfb->priv->default_scroll_position = position;
+//
+//	/* FIXME: this is a gross workaround for an etable bug that I can't fix - bug #55303 */
+//	/* this needs to be a lower priority than anything in e-table-item/e-canvas, since
+//	 * e_canvas_item_region_show_relay() uses a timeout, we have to use a timeout of the
+//	 * same interval but a lower priority. */
+//	emfb->priv->idle_scroll_id = g_timeout_add_full (G_PRIORITY_LOW, 250, (GSourceFunc) scroll_idle_cb, emfb, NULL);
+//	/* FIXME: This is another ugly hack done to hide a bug that above hack leaves. */
+//	g_signal_connect (((GtkScrolledWindow *) ml)->vscrollbar, "button-press-event", G_CALLBACK (emfb_etree_unfreeze), emfb);
+//}
 
 static void
 emfb_set_search_folder(EMFolderView *emfv, CamelFolder *folder, const char *uri)

Modified: branches/kill-bonobo/mail/em-folder-view.c
==============================================================================
--- branches/kill-bonobo/mail/em-folder-view.c	(original)
+++ branches/kill-bonobo/mail/em-folder-view.c	Wed Jan 21 21:03:14 2009
@@ -203,13 +203,13 @@
 static void emfv_selection_get(GtkWidget *widget, GtkSelectionData *data, guint info, guint time_stamp, EMFolderView *emfv);
 static void emfv_selection_clear_event(GtkWidget *widget, GdkEventSelection *event, EMFolderView *emfv);
 
-#ifdef ENABLE_PROFILING
-static void
-emfv_format_complete(EMFormat *emf, EMFolderView *emfv)
-{
-	e_profile_event_emit("goto.done", emf->uid?emf->uid:"", 0);
-}
-#endif
+//#ifdef ENABLE_PROFILING
+//static void
+//emfv_format_complete(EMFormat *emf, EMFolderView *emfv)
+//{
+//	e_profile_event_emit("goto.done", emf->uid?emf->uid:"", 0);
+//}
+//#endif
 
 static void
 emfv_init(GObject *o)
@@ -237,23 +237,23 @@
 //	emfv->list = (MessageList *)message_list_new();
 //	g_signal_connect(emfv->list, "message_selected", G_CALLBACK(emfv_list_message_selected), emfv);
 //	g_signal_connect(emfv->list, "message_list_built", G_CALLBACK(emfv_list_built), emfv);
-
-	/* FIXME: should this hang off message-list instead? */
+//
+//	/* FIXME: should this hang off message-list instead? */
 //	g_signal_connect(emfv->list->tree, "right_click", G_CALLBACK(emfv_list_right_click), emfv);
 //	g_signal_connect(emfv->list->tree, "double_click", G_CALLBACK(emfv_list_double_click), emfv);
 //	g_signal_connect(emfv->list->tree, "key_press", G_CALLBACK(emfv_list_key_press), emfv);
 //	g_signal_connect(emfv->list->tree, "selection_change", G_CALLBACK(emfv_list_selection_change), emfv);
-
-	emfv->preview = (EMFormatHTMLDisplay *)em_format_html_display_new();
-	/* FIXME: set_session should NOT be called here.  Should it be a constructor attribute? */
-	em_format_set_session ((EMFormat *) emfv->preview, session);
+//
+//	emfv->preview = (EMFormatHTMLDisplay *)em_format_html_display_new();
+//	/* FIXME: set_session should NOT be called here.  Should it be a constructor attribute? */
+//	em_format_set_session ((EMFormat *) emfv->preview, session);
 //	g_signal_connect(emfv->preview, "link_clicked", G_CALLBACK(emfv_format_link_clicked), emfv);
 	g_signal_connect(emfv->preview, "popup_event", G_CALLBACK(emfv_format_popup_event), emfv);
 	g_signal_connect (emfv->preview, "on_url", G_CALLBACK (emfv_on_url_cb), emfv);
 //	g_signal_connect (((EMFormatHTML *)emfv->preview)->html, "button-release-event", G_CALLBACK (emfv_on_html_button_released_cb), emfv);
-#ifdef ENABLE_PROFILING
-	g_signal_connect(emfv->preview, "complete", G_CALLBACK (emfv_format_complete), emfv);
-#endif
+//#ifdef ENABLE_PROFILING
+//	g_signal_connect(emfv->preview, "complete", G_CALLBACK (emfv_format_complete), emfv);
+//#endif
 	p->invisible = gtk_invisible_new();
 	g_signal_connect(p->invisible, "selection_get", G_CALLBACK(emfv_selection_get), emfv);
 	g_signal_connect(p->invisible, "selection_clear_event", G_CALLBACK(emfv_selection_clear_event), emfv);
@@ -418,8 +418,8 @@
 //	return (GtkWidget *)emfv;
 //}
 
-/* flag all selected messages. Return number flagged */
-/* FIXME: Should this be part of message-list instead? */
+///* flag all selected messages. Return number flagged */
+///* FIXME: Should this be part of message-list instead? */
 //int
 //em_folder_view_mark_selected(EMFolderView *emfv, guint32 mask, guint32 set)
 //{
@@ -812,28 +812,14 @@
 
 static EPopupItem emfv_popup_items[] = {
 
-	{ E_POPUP_BAR, "10.emfv", NULL, NULL, NULL, NULL },
-
-
-	{ E_POPUP_BAR, "20.emfv", NULL, NULL, NULL, NULL },
-
-	{ E_POPUP_BAR, "40.emfv", NULL, NULL, NULL, NULL },
 //	{ E_POPUP_ITEM, "40.emfv.00", N_("_Delete"), emfv_popup_delete, NULL, "edit-delete", EM_POPUP_SELECT_DELETE|EM_FOLDER_VIEW_SELECT_LISTONLY },
 
-	{ E_POPUP_BAR, "50.emfv", NULL, NULL, NULL, NULL },
-
 	{ E_POPUP_SUBMENU, "60.label.00", N_("_Label"), NULL, NULL, NULL, EM_POPUP_SELECT_MANY|EM_FOLDER_VIEW_SELECT_LISTONLY },
 	{ E_POPUP_ITEM, "60.label.00/00.label", N_("_None"), emfv_popup_label_clear, NULL, NULL, EM_POPUP_SELECT_MANY|EM_FOLDER_VIEW_SELECT_LISTONLY },
 	{ E_POPUP_BAR, "60.label.00/00.label.00", NULL, NULL, NULL, NULL },
 	{ E_POPUP_BAR, "60.label.00/01.label", NULL, NULL, NULL, NULL },
 	{ E_POPUP_ITEM, "60.label.00/01.label.00", N_("_New Label"), emfv_popup_label_new, NULL, NULL, EM_POPUP_SELECT_MANY|EM_FOLDER_VIEW_SELECT_LISTONLY },
 
-	{ E_POPUP_BAR, "70.emfv.06", NULL, NULL, NULL, NULL },
-
-
-	{ E_POPUP_BAR, "90.filter", NULL, NULL, NULL, NULL },
-
-	{ E_POPUP_BAR, "90.filter.00/10", NULL, NULL, NULL, NULL },
 };
 
 static enum _e_popup_t

Modified: branches/kill-bonobo/mail/em-format.c
==============================================================================
--- branches/kill-bonobo/mail/em-format.c	(original)
+++ branches/kill-bonobo/mail/em-format.c	Wed Jan 21 21:03:14 2009
@@ -53,6 +53,7 @@
 #include "em-format.h"
 #include "em-utils.h"
 #include "mail-config.h"
+#include "mail-session.h"
 
 #define d(x)
 
@@ -125,6 +126,9 @@
 	e_dlist_init(&emf->header_list);
 	em_format_default_headers(emf);
 	emf->part_id = g_string_new("");
+
+	emf->session = session;
+	camel_object_ref (emf->session);
 }
 
 static void
@@ -774,25 +778,6 @@
 /* e_format_format_clone is a macro */
 
 /**
- * em_format_set_session:
- * @emf:
- * @s:
- *
- * Set the CamelSession to be used for signature verification and decryption
- * purposes.  If this is not set, then signatures cannot be verified or
- * encrypted messages viewed.
- **/
-void
-em_format_set_session(EMFormat *emf, struct _CamelSession *s)
-{
-	if (s)
-		camel_object_ref(s);
-	if (emf->session)
-		camel_object_unref(emf->session);
-	emf->session = s;
-}
-
-/**
  * em_format_set_mode:
  * @emf:
  * @type:

Modified: branches/kill-bonobo/mail/em-format.h
==============================================================================
--- branches/kill-bonobo/mail/em-format.h	(original)
+++ branches/kill-bonobo/mail/em-format.h	Wed Jan 21 21:03:14 2009
@@ -269,9 +269,6 @@
 	void (*complete)(EMFormat *);
 };
 
-/* helper entry point */
-void em_format_set_session(EMFormat *emf, struct _CamelSession *s);
-
 void em_format_set_mode(EMFormat *emf, em_format_mode_t type);
 void em_format_set_charset(EMFormat *emf, const char *charset);
 void em_format_set_default_charset(EMFormat *emf, const char *charset);

Modified: branches/kill-bonobo/mail/em-utils.c
==============================================================================
--- branches/kill-bonobo/mail/em-utils.c	(original)
+++ branches/kill-bonobo/mail/em-utils.c	Wed Jan 21 21:03:14 2009
@@ -83,8 +83,6 @@
 
 static void emu_save_part_done (CamelMimePart *part, char *name, int done, void *data);
 
-extern struct _CamelSession *session;
-
 #define d(x)
 
 /**
@@ -1685,7 +1683,6 @@
 
 	emfq = em_format_quote_new(NULL, (CamelStream *)mem, 0);
 	((EMFormat *) emfq)->composer = TRUE;
-	em_format_set_session((EMFormat *)emfq, session);
 	if (source) {
 		/* copy over things we can, other things are internal, perhaps need different api than 'clone' */
 		if (source->default_charset)
@@ -1735,7 +1732,6 @@
 
 	emfq = em_format_quote_new(credits, (CamelStream *)mem, flags);
 	((EMFormat *) emfq)->composer = TRUE;
-	em_format_set_session((EMFormat *)emfq, session);
 
 	if (!source) {
 		GConfClient *gconf;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]