[anjal] Update Evo stable/trunk for updated Anjal.
- From: Srinivasa Ragavan <sragavan src gnome org>
- To: svn-commits-list gnome org
- Subject: [anjal] Update Evo stable/trunk for updated Anjal.
- Date: Fri, 15 May 2009 13:55:56 -0400 (EDT)
commit ae9021d589dbb83bb7b76519220bcff12d1ad4a9
Author: Srinivasa Ragavan <sragavan novell com>
Date: Fri May 15 23:19:50 2009 +0530
Update Evo stable/trunk for updated Anjal.
---
evo-anjal-2-27.patch | 804 ++++++++++++++++++++++++++++++++++++++++++++++++--
evo-anjal.patch | 342 +++++++++++++++++++++
2 files changed, 1122 insertions(+), 24 deletions(-)
diff --git a/evo-anjal-2-27.patch b/evo-anjal-2-27.patch
index cc1d8a0..1ed2307 100644
--- a/evo-anjal-2-27.patch
+++ b/evo-anjal-2-27.patch
@@ -67,10 +67,73 @@ index 74fda9a..f8c6dc6 100644
/* Standard GObject macros */
diff --git a/composer/e-composer-header-table.c b/composer/e-composer-header-table.c
-index 461c11e..4f2c6e1 100644
+index 461c11e..9612993 100644
--- a/composer/e-composer-header-table.c
+++ b/composer/e-composer-header-table.c
-@@ -649,7 +649,7 @@ composer_header_table_init (EComposerHeaderTable *table)
+@@ -28,6 +28,8 @@
+ #include "e-composer-post-header.h"
+ #include "e-composer-text-header.h"
+
++extern gboolean composer_lite;
++
+ #define E_COMPOSER_HEADER_TABLE_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), E_TYPE_COMPOSER_HEADER_TABLE, EComposerHeaderTablePrivate))
+@@ -90,6 +92,7 @@ struct _EComposerHeaderTablePrivate {
+ GtkWidget *signature_label;
+ GtkWidget *signature_combo_box;
+ ENameSelector *name_selector;
++ GtkHBox *actions_container;
+ };
+
+ static gpointer parent_class;
+@@ -271,8 +274,16 @@ composer_header_table_constructor (GType type,
+ gtk_table_attach (
+ GTK_TABLE (object), priv->headers[ii]->input_widget,
+ 1, 4, ii, ii + 1, GTK_FILL | GTK_EXPAND, 0, 0, 3);
++ if (composer_lite && priv->headers[ii]->action_widget) {
++ /* Pack the widgets to the end. Helps formatting when hiding the From field */
++ gtk_box_pack_end (priv->actions_container, priv->headers[ii]->action_widget,
++ FALSE, FALSE, 6);
++ }
+ }
+
++ if (composer_lite)
++ gtk_widget_show_all (priv->actions_container);
++
+ ii = E_COMPOSER_HEADER_FROM;
+
+ /* Leave room in the "From" row for signature stuff. */
+@@ -289,6 +300,19 @@ composer_header_table_constructor (GType type,
+ GTK_TABLE (object), priv->signature_combo_box,
+ 3, 4, ii, ii + 1, 0, 0, 0, 3);
+
++ if (composer_lite) {
++ ii = E_COMPOSER_HEADER_TO;
++
++ /* Leave room for the action buttons. */
++ gtk_container_child_set (
++ GTK_CONTAINER (object),
++ priv->headers[ii]->input_widget,
++ "right-attach", 2, NULL);
++
++ gtk_table_attach (GTK_TABLE (object), priv->actions_container, 2, 4, E_COMPOSER_HEADER_TO,
++ E_COMPOSER_HEADER_TO + 1, GTK_FILL, 0, 0, 3);
++ }
++
+ return object;
+ }
+
+@@ -640,6 +664,8 @@ composer_header_table_init (EComposerHeaderTable *table)
+ name_selector = e_name_selector_new ();
+ table->priv->name_selector = name_selector;
+
++ table->priv->actions_container = gtk_hbox_new (FALSE, 6);
++
+ header = e_composer_from_header_new (_("Fr_om:"));
+ composer_header_table_bind_header ("account", "changed", header);
+ composer_header_table_bind_header ("account-list", "refreshed", header);
+@@ -649,21 +675,21 @@ composer_header_table_init (EComposerHeaderTable *table)
composer_header_table_from_changed_cb), table);
table->priv->headers[E_COMPOSER_HEADER_FROM] = header;
@@ -79,7 +142,24 @@ index 461c11e..4f2c6e1 100644
composer_header_table_bind_header ("reply-to", "changed", header);
table->priv->headers[E_COMPOSER_HEADER_REPLY_TO] = header;
-@@ -672,7 +672,7 @@ composer_header_table_init (EComposerHeaderTable *table)
+- header = e_composer_name_header_new (_("_To:"), name_selector);
++ header = e_composer_name_header_new_with_label (_("_To:"), name_selector);
+ e_composer_header_set_input_tooltip (header, HEADER_TOOLTIP_TO);
+ composer_header_table_bind_header ("destinations-to", "changed", header);
+ table->priv->headers[E_COMPOSER_HEADER_TO] = header;
+
+- header = e_composer_name_header_new (_("_Cc:"), name_selector);
++ header = e_composer_name_header_new_with_action (_("_Cc:"), _("Show CC"), name_selector);
+ e_composer_header_set_input_tooltip (header, HEADER_TOOLTIP_CC);
+ composer_header_table_bind_header ("destinations-cc", "changed", header);
+ table->priv->headers[E_COMPOSER_HEADER_CC] = header;
+
+- header = e_composer_name_header_new (_("_Bcc:"), name_selector);
++ header = e_composer_name_header_new_with_action (_("_Bcc:"), _("Show BCC"), name_selector);
+ e_composer_header_set_input_tooltip (header, HEADER_TOOLTIP_BCC);
+ composer_header_table_bind_header ("destinations-bcc", "changed", header);
+ table->priv->headers[E_COMPOSER_HEADER_BCC] = header;
+@@ -672,7 +698,7 @@ composer_header_table_init (EComposerHeaderTable *table)
composer_header_table_bind_header ("post-to", "changed", header);
table->priv->headers[E_COMPOSER_HEADER_POST_TO] = header;
@@ -89,7 +169,7 @@ index 461c11e..4f2c6e1 100644
table->priv->headers[E_COMPOSER_HEADER_SUBJECT] = header;
diff --git a/composer/e-composer-header.c b/composer/e-composer-header.c
-index 8cbcf64..1ed21b6 100644
+index 8cbcf64..fbb58f1 100644
--- a/composer/e-composer-header.c
+++ b/composer/e-composer-header.c
@@ -1,3 +1,7 @@
@@ -119,7 +199,7 @@ index 8cbcf64..1ed21b6 100644
};
static gpointer parent_class;
-@@ -54,6 +62,14 @@ composer_header_button_clicked_cb (GtkButton *button,
+@@ -54,6 +62,20 @@ composer_header_button_clicked_cb (GtkButton *button,
g_signal_emit (header, signal_ids[CLICKED], 0);
}
@@ -131,31 +211,44 @@ index 8cbcf64..1ed21b6 100644
+ e_composer_header_set_visible (header, TRUE);
+}
+
++static void
++link_clicked_cb (GtkLinkButton *button, const gchar *link_, gpointer user_data)
++{
++ return;
++}
++
static GObject *
composer_header_constructor (GType type,
guint n_construct_properties,
-@@ -81,6 +97,20 @@ composer_header_constructor (GType type,
+@@ -81,6 +103,27 @@ composer_header_constructor (GType type,
gtk_label_set_mnemonic_widget (
GTK_LABEL (widget), header->input_widget);
}
+
+ if (header->priv->addaction) {
-+ header->action_widget = gtk_link_button_new_with_label (header->priv->label,
-+ header->priv->addaction_text);
++ GtkWidget *box, *tmp;
++ char *str;
++
++ header->action_widget = gtk_button_new ();
++ box = gtk_hbox_new (FALSE, 0);
++ tmp = gtk_image_new_from_stock("gtk-add", GTK_ICON_SIZE_BUTTON);
++ gtk_box_pack_start(box, tmp, FALSE, FALSE, 3);
++ tmp = gtk_label_new (NULL);
++ str = g_strdup_printf ("<span foreground='blue' underline='single' underline_color='blue' >%s</span>", header->priv->addaction_text);
++ gtk_label_set_markup(tmp, str);
++ gtk_box_pack_start(box, tmp, FALSE, FALSE, 3);
++ gtk_container_add(header->action_widget, box);
++ gtk_widget_show_all(header->action_widget);
+ g_signal_connect (
+ header->action_widget, "clicked",
+ G_CALLBACK (composer_header_addaction_clicked_cb),
+ header);
-+
-+ /*TODO : Add + icon*/
-+ /* widget = gtk_image_new_from_stock (GTK_STOCK_ADD, GTK_ICON_SIZE_MENU); */
-+ /* gtk_button_set_image (header->action_widget, widget); */
+ }
+
header->title_widget = g_object_ref_sink (widget);
g_free (header->priv->label);
-@@ -104,6 +134,14 @@ composer_header_set_property (GObject *object,
+@@ -104,6 +147,14 @@ composer_header_set_property (GObject *object,
priv->button = g_value_get_boolean (value);
return;
@@ -170,7 +263,7 @@ index 8cbcf64..1ed21b6 100644
case PROP_LABEL: /* construct only */
priv->label = g_value_dup_string (value);
return;
-@@ -124,6 +162,15 @@ composer_header_set_property (GObject *object,
+@@ -124,6 +175,15 @@ composer_header_set_property (GObject *object,
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
@@ -186,7 +279,7 @@ index 8cbcf64..1ed21b6 100644
static void
composer_header_get_property (GObject *object,
guint property_id,
-@@ -139,6 +186,15 @@ composer_header_get_property (GObject *object,
+@@ -139,6 +199,15 @@ composer_header_get_property (GObject *object,
g_value_set_boolean (value, priv->button);
return;
@@ -202,7 +295,7 @@ index 8cbcf64..1ed21b6 100644
case PROP_LABEL: /* construct only */
g_value_take_string (
value, e_composer_header_get_label (
-@@ -207,6 +263,28 @@ composer_header_class_init (EComposerHeaderClass *class)
+@@ -207,6 +276,28 @@ composer_header_class_init (EComposerHeaderClass *class)
g_object_class_install_property (
object_class,
@@ -332,6 +425,134 @@ index 04f7100..92a379b 100644
ENameSelector * e_composer_name_header_get_name_selector
(EComposerNameHeader *header);
EDestination ** e_composer_name_header_get_destinations
+diff --git a/composer/e-composer-private.c b/composer/e-composer-private.c
+index 1729aae..36c87f5 100644
+--- a/composer/e-composer-private.c
++++ b/composer/e-composer-private.c
+@@ -17,6 +17,7 @@
+
+ #include "e-composer-private.h"
+ #include "e-util/e-util-private.h"
++#include "e-util/e-icon-factory.h"
+
+ static void
+ composer_setup_charset_menu (EMsgComposer *composer)
+@@ -88,6 +89,7 @@ e_composer_private_init (EMsgComposer *composer)
+ GtkWidget *widget;
+ GtkWidget *container;
+ GtkWidget *send_widget;
++ GtkWidget *exp_box;
+ const gchar *path;
+ gchar *filename;
+ GError *error = NULL;
+@@ -95,6 +97,15 @@ e_composer_private_init (EMsgComposer *composer)
+ editor = GTKHTML_EDITOR (composer);
+ ui_manager = gtkhtml_editor_get_ui_manager (editor);
+
++ if (composer->lite) {
++ widget = gtkhtml_editor_get_managed_widget (editor, "/main-menu");
++ gtk_widget_hide (widget);
++ widget = gtkhtml_editor_get_managed_widget (editor, "/main-toolbar");
++ gtk_toolbar_set_style (widget, GTK_TOOLBAR_BOTH_HORIZ);
++ gtk_widget_hide (widget);
++
++ }
++
+ priv->charset_actions = gtk_action_group_new ("charset");
+ priv->composer_actions = gtk_action_group_new ("composer");
+
+@@ -127,6 +138,64 @@ e_composer_private_init (EMsgComposer *composer)
+ send_widget = gtk_ui_manager_get_widget (ui_manager, path);
+ gtk_tool_item_set_is_important (GTK_TOOL_ITEM (send_widget), TRUE);
+
++ exp_box = gtk_hbox_new (FALSE, 0);
++ gtk_widget_show(exp_box);
++ if (composer->lite) {
++ GtkWidget *tmp, *tmp1, *tmp_box, *align;
++
++ tmp_box = gtk_hbox_new (FALSE, 0);
++
++ tmp = gtk_hbox_new (FALSE, 0);
++ tmp1 = gtk_image_new_from_pixbuf (e_icon_factory_get_icon("mail-send", E_ICON_SIZE_BUTTON));
++ gtk_box_pack_start (tmp, tmp1, FALSE, FALSE, 0);
++ tmp1 = gtk_label_new_with_mnemonic (_("S_end"));
++ gtk_box_pack_start (tmp, tmp1, FALSE, FALSE, 6);
++ gtk_widget_show_all(tmp);
++ gtk_widget_reparent (send_widget, tmp_box);
++ gtk_box_set_child_packing (tmp_box, send_widget, FALSE, FALSE, 6, GTK_PACK_END);
++ gtk_tool_item_set_is_important (GTK_TOOL_ITEM (send_widget), TRUE);
++ send_widget = gtk_bin_get_child (send_widget);
++ gtk_container_remove(send_widget, gtk_bin_get_child (send_widget));
++ gtk_container_add(send_widget, tmp);
++ gtk_button_set_relief (send_widget, GTK_RELIEF_NORMAL);
++
++ path = "/main-toolbar/pre-main-toolbar/save-draft";
++ send_widget = gtk_ui_manager_get_widget (ui_manager, path);
++ tmp = gtk_hbox_new (FALSE, 0);
++ tmp1 = gtk_image_new_from_pixbuf (e_icon_factory_get_icon(GTK_STOCK_SAVE, E_ICON_SIZE_BUTTON));
++ gtk_box_pack_start (tmp, tmp1, FALSE, FALSE, 0);
++ tmp1 = gtk_label_new_with_mnemonic (_("Save draft"));
++ gtk_box_pack_start (tmp, tmp1, FALSE, FALSE, 3);
++ gtk_widget_show_all(tmp);
++ gtk_widget_reparent (send_widget, tmp_box);
++ gtk_box_set_child_packing (tmp_box, send_widget, FALSE, FALSE, 6, GTK_PACK_END);
++ gtk_tool_item_set_is_important (GTK_TOOL_ITEM (send_widget), TRUE);
++ send_widget = gtk_bin_get_child (send_widget);
++ gtk_container_remove(send_widget, gtk_bin_get_child (send_widget));
++ gtk_container_add(send_widget, tmp);
++ gtk_button_set_relief (send_widget, GTK_RELIEF_NORMAL);
++
++ path = "/main-toolbar/pre-main-toolbar/attach";
++ send_widget = gtk_ui_manager_get_widget (ui_manager, path);
++ tmp = gtk_hbox_new (FALSE, 0);
++ tmp1 = gtk_image_new_from_pixbuf (e_icon_factory_get_icon("gtk-add", E_ICON_SIZE_BUTTON));
++ gtk_box_pack_start (tmp, tmp1, FALSE, FALSE, 0);
++ tmp1 = gtk_label_new_with_mnemonic (_("Add attachment"));
++ gtk_box_pack_start (tmp, tmp1, FALSE, FALSE, 3);
++ gtk_widget_show_all(tmp);
++ gtk_widget_reparent (send_widget, tmp_box);
++ gtk_box_set_child_packing (tmp_box, send_widget, FALSE, FALSE, 6, GTK_PACK_START);
++ gtk_tool_item_set_is_important (GTK_TOOL_ITEM (send_widget), TRUE);
++ send_widget = gtk_bin_get_child (send_widget);
++ gtk_container_remove(send_widget, gtk_bin_get_child (send_widget));
++ gtk_container_add(send_widget, tmp);
++ gtk_button_set_relief (send_widget, GTK_RELIEF_NORMAL);
++
++ gtk_widget_show(tmp_box);
++ gtk_box_pack_end (exp_box, tmp_box, TRUE, TRUE, 0);
++ gtk_box_pack_end (editor->vbox, exp_box, FALSE, FALSE, 3);
++
++ }
+ composer_setup_charset_menu (composer);
+
+ if (error != NULL) {
+@@ -138,11 +207,15 @@ e_composer_private_init (EMsgComposer *composer)
+ /* Construct the header table. */
+
+ container = editor->vbox;
+-
++
+ widget = e_composer_header_table_new ();
+ gtk_container_set_border_width (GTK_CONTAINER (widget), 6);
+ gtk_box_pack_start (GTK_BOX (editor->vbox), widget, FALSE, FALSE, 0);
+- gtk_box_reorder_child (GTK_BOX (editor->vbox), widget, 2);
++ if (composer->lite)
++ gtk_box_reorder_child (GTK_BOX (editor->vbox), widget, 0);
++ else
++ gtk_box_reorder_child (GTK_BOX (editor->vbox), widget, 2);
++
+ priv->header_table = g_object_ref (widget);
+ gtk_widget_show (widget);
+
+@@ -153,6 +226,8 @@ e_composer_private_init (EMsgComposer *composer)
+ priv->attachment_paned = g_object_ref (widget);
+ gtk_widget_show (widget);
+
++ g_object_set_data (composer, "vbox", editor->vbox);
++
+ /* Reparent the scrolled window containing the GtkHTML widget
+ * into the content area of the top attachment pane. */
+
diff --git a/composer/e-composer-text-header.c b/composer/e-composer-text-header.c
index 2945720..e676ef9 100644
--- a/composer/e-composer-text-header.c
@@ -406,6 +627,87 @@ index c0c4708..79e972d 100644
const gchar * e_composer_text_header_get_text (EComposerTextHeader *header);
void e_composer_text_header_set_text (EComposerTextHeader *header,
const gchar *text);
+diff --git a/composer/e-msg-composer.c b/composer/e-msg-composer.c
+index 3195255..0967eea 100644
+--- a/composer/e-msg-composer.c
++++ b/composer/e-msg-composer.c
+@@ -150,6 +150,8 @@ enum {
+ LAST_SIGNAL
+ };
+
++gboolean composer_lite = FALSE;
++
+ static gpointer parent_class;
+ static guint signals[LAST_SIGNAL];
+
+@@ -2473,6 +2475,7 @@ msg_composer_init (EMsgComposer *composer)
+ GtkHTML *html;
+ gint n_targets;
+
++ composer->lite = composer_lite;
+ composer->priv = E_MSG_COMPOSER_GET_PRIVATE (composer);
+
+ e_composer_private_init (composer);
+@@ -2685,6 +2688,32 @@ e_msg_composer_new (void)
+ return e_msg_composer_new_with_type (E_MSG_COMPOSER_MAIL);
+ }
+
++
++void
++e_msg_composer_set_lite (void)
++{
++ composer_lite = TRUE;
++}
++
++gboolean
++e_msg_composer_get_lite (void)
++{
++ return composer_lite;
++}
++
++EMsgComposer *
++e_msg_composer_lite_new (void)
++{
++ EMsgComposer *composer;
++
++ /* Init lite-composer for ever for the session */
++ composer_lite = TRUE;
++
++ composer = e_msg_composer_new_with_type (E_MSG_COMPOSER_MAIL);
++
++ return composer;
++}
++
+ static void
+ e_msg_composer_set_pending_body (EMsgComposer *composer,
+ gchar *text,
+diff --git a/composer/e-msg-composer.h b/composer/e-msg-composer.h
+index 54520ec..5a0e0e0 100644
+--- a/composer/e-msg-composer.h
++++ b/composer/e-msg-composer.h
+@@ -60,6 +60,7 @@ typedef struct _EMsgComposerPrivate EMsgComposerPrivate;
+ struct _EMsgComposer {
+ GtkhtmlEditor parent;
+ EMsgComposerPrivate *priv;
++ gboolean lite;
+ };
+
+ struct _EMsgComposerClass {
+@@ -74,11 +75,14 @@ struct _EAttachmentBar;
+
+ GType e_msg_composer_get_type (void);
+ EMsgComposer * e_msg_composer_new (void);
++EMsgComposer * e_msg_composer_lite_new (void);
+ EMsgComposer * e_msg_composer_new_with_type (gint type);
+ EMsgComposer * e_msg_composer_new_with_message (CamelMimeMessage *msg);
+ EMsgComposer * e_msg_composer_new_from_url (const gchar *url);
+ EMsgComposer * e_msg_composer_new_redirect (CamelMimeMessage *message,
+ const gchar *resent_from);
++void e_msg_composer_set_lite (void);
++gboolean e_msg_composer_get_lite (void);
+
+ void e_msg_composer_send (EMsgComposer *composer);
+ void e_msg_composer_save_draft (EMsgComposer *composer);
diff --git a/e-util/e-config.c b/e-util/e-config.c
index 1da54b5..a2d68e1 100644
--- a/e-util/e-config.c
@@ -1144,10 +1446,83 @@ index 9a5b09a..42421c2 100644
gboolean em_account_editor_save (EMAccountEditor *gui);
void em_account_editor_destroy (EMAccountEditor *gui);
diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c
-index 38f35d1..d884154 100644
+index 38f35d1..a6c8c10 100644
--- a/mail/em-composer-utils.c
+++ b/mail/em-composer-utils.c
-@@ -1713,7 +1713,7 @@ generate_account_hash (void)
+@@ -653,13 +653,16 @@ em_composer_utils_setup_callbacks (EMsgComposer *composer,
+ /* Composing messages... */
+
+ static EMsgComposer *
+-create_new_composer (const char *subject, const char *fromuri, gboolean use_default_callbacks)
++create_new_composer (const char *subject, const char *fromuri, gboolean use_default_callbacks, gboolean lite)
+ {
+ EMsgComposer *composer;
+ EComposerHeaderTable *table;
+ EAccount *account = NULL;
+
+- composer = e_msg_composer_new ();
++ if (lite)
++ composer = e_msg_composer_lite_new ();
++ else
++ composer = e_msg_composer_new ();
+ if (composer == NULL)
+ return NULL;
+
+@@ -687,7 +690,7 @@ em_utils_compose_new_message (const char *fromuri)
+ {
+ GtkWidget *composer;
+
+- composer = (GtkWidget *) create_new_composer ("", fromuri, TRUE);
++ composer = (GtkWidget *) create_new_composer ("", fromuri, TRUE, FALSE);
+ if (composer == NULL)
+ return;
+
+@@ -697,6 +700,26 @@ em_utils_compose_new_message (const char *fromuri)
+ }
+
+ /**
++ * em_utils_compose_lite_new_message:
++ *
++ * Opens a new composer window as a child window of @parent's toplevel
++ * window.
++ **/
++struct _EMsgComposer *
++em_utils_compose_lite_new_message (const char *fromuri)
++{
++ GtkWidget *composer;
++
++ composer = (GtkWidget *) create_new_composer ("", fromuri, TRUE, TRUE);
++ if (composer == NULL)
++ return;
++
++ composer_set_no_change (E_MSG_COMPOSER (composer), TRUE, TRUE);
++
++ return composer;
++}
++
++/**
+ * em_utils_compose_new_message_with_mailto:
+ * @url: mailto url
+ *
+@@ -1073,7 +1096,7 @@ forward_attached (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages, Cam
+ {
+ EMsgComposer *composer;
+
+- composer = create_new_composer (subject, fromuri, TRUE);
++ composer = create_new_composer (subject, fromuri, TRUE, FALSE);
+ if (composer == NULL)
+ return;
+
+@@ -1152,7 +1175,7 @@ forward_non_attached (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages,
+ text = em_utils_message_to_html (message, _("-------- Forwarded Message --------"), flags, &len, NULL, NULL);
+
+ if (text) {
+- composer = create_new_composer (subject, fromuri, !uids || !uids->pdata [i]);
++ composer = create_new_composer (subject, fromuri, !uids || !uids->pdata [i], FALSE);
+
+ if (composer) {
+ if (CAMEL_IS_MULTIPART(camel_medium_get_content_object((CamelMedium *)message)))
+@@ -1713,7 +1736,7 @@ generate_account_hash (void)
return account_hash;
}
@@ -1156,7 +1531,7 @@ index 38f35d1..d884154 100644
em_utils_camel_address_to_destination (CamelInternetAddress *iaddr)
{
EDestination *dest, **destv;
-@@ -1915,6 +1915,12 @@ get_reply_sender (CamelMimeMessage *message, CamelInternetAddress *to, CamelNNTP
+@@ -1915,6 +1938,12 @@ get_reply_sender (CamelMimeMessage *message, CamelInternetAddress *to, CamelNNTP
}
}
@@ -1169,7 +1544,7 @@ index 38f35d1..d884154 100644
static gboolean
get_reply_list (CamelMimeMessage *message, CamelInternetAddress *to)
{
-@@ -2028,6 +2034,13 @@ get_reply_all (CamelMimeMessage *message, CamelInternetAddress *to, CamelInterne
+@@ -2028,6 +2057,13 @@ get_reply_all (CamelMimeMessage *message, CamelInternetAddress *to, CamelInterne
g_hash_table_destroy (rcpt_hash);
}
@@ -1183,7 +1558,7 @@ index 38f35d1..d884154 100644
enum {
ATTRIB_UNKNOWN,
ATTRIB_CUSTOM,
-@@ -2285,6 +2298,21 @@ struct _reply_data {
+@@ -2285,6 +2321,21 @@ struct _reply_data {
int mode;
};
@@ -1205,8 +1580,29 @@ index 38f35d1..d884154 100644
static void
reply_to_message(CamelFolder *folder, const char *uid, CamelMimeMessage *message, void *user_data)
{
+@@ -2315,7 +2366,7 @@ reply_to_message(CamelFolder *folder, const char *uid, CamelMimeMessage *message
+ * may be supplied in order to update the message flags once it has
+ * been replied to.
+ **/
+-void
++struct _EMsgComposer *
+ em_utils_reply_to_message(CamelFolder *folder, const char *uid, CamelMimeMessage *message, int mode, EMFormat *source)
+ {
+ CamelInternetAddress *to, *cc;
+@@ -2393,7 +2444,10 @@ em_utils_reply_to_message(CamelFolder *folder, const char *uid, CamelMimeMessage
+
+ composer_set_no_change (composer, TRUE, FALSE);
+
+- gtk_widget_show (GTK_WIDGET (composer));
++ if (!e_msg_composer_get_lite())
++ gtk_widget_show (GTK_WIDGET (composer));
++
++ return composer;
+ }
+
+ /* Posting replies... */
diff --git a/mail/em-composer-utils.h b/mail/em-composer-utils.h
-index d17a98c..8b5d279 100644
+index d17a98c..857d74c 100644
--- a/mail/em-composer-utils.h
+++ b/mail/em-composer-utils.h
@@ -34,9 +34,12 @@ extern "C" {
@@ -1222,16 +1618,25 @@ index d17a98c..8b5d279 100644
void em_composer_utils_setup_callbacks (struct _EMsgComposer *composer, struct _CamelFolder *folder, const char *uid,
guint32 flags, guint32 set, struct _CamelFolder *drafts, const char *drafts_uid);
-@@ -77,9 +80,15 @@ enum {
+@@ -47,6 +50,7 @@ void em_utils_composer_send_cb(struct _EMsgComposer *composer, gpointer user_dat
+ void em_utils_composer_save_draft_cb(struct _EMsgComposer *composer, gpointer user_data);
+
+ void em_utils_compose_new_message (const char *fromuri);
++struct _EMsgComposer * em_utils_compose_lite_new_message (const char *fromuri);
+
+ /* FIXME: mailto? url? should make up its mind what its called. imho use 'uri' */
+ void em_utils_compose_new_message_with_mailto (const char *url, const char *fromuri);
+@@ -77,9 +81,15 @@ enum {
REPLY_MODE_LIST
};
+-void em_utils_reply_to_message (struct _CamelFolder *, const char *uid, struct _CamelMimeMessage *message, int mode, struct _EMFormat *source);
+char *em_utils_construct_composer_text (struct _CamelMimeMessage *message, struct _EMFormat *source);
+void em_utils_get_reply_sender (struct _CamelMimeMessage *message, struct _CamelInternetAddress *to, struct _CamelNNTPAddress *postto);
+void em_utils_get_reply_all (struct _CamelMimeMessage *message, struct _CamelInternetAddress *to, struct _CamelInternetAddress *cc, struct _CamelNNTPAddress *postto);
+
+
- void em_utils_reply_to_message (struct _CamelFolder *, const char *uid, struct _CamelMimeMessage *message, int mode, struct _EMFormat *source);
++struct _EMsgComposer * em_utils_reply_to_message (struct _CamelFolder *, const char *uid, struct _CamelMimeMessage *message, int mode, struct _EMFormat *source);
void em_utils_post_reply_to_message_by_uid (struct _CamelFolder *folder, const char *uid);
+struct _EDestination ** em_utils_camel_address_to_destination (struct _CamelInternetAddress *iaddr);
@@ -1367,6 +1772,357 @@ index 124c736..b0486ab 100644
libefilterbar_la_LDFLAGS = $(NO_UNDEFINED)
+diff --git a/widgets/misc/e-filter-bar.c b/widgets/misc/e-filter-bar.c
+index a527569..6fb2924 100644
+--- a/widgets/misc/e-filter-bar.c
++++ b/widgets/misc/e-filter-bar.c
+@@ -593,7 +593,7 @@ get_property (GObject *object, guint property_id, GValue *value, GParamSpec *psp
+ /* empty search text means searching turned off */
+ if (efb->current_query && text && *text) {
+ GString *out = g_string_new ("");
+-
++ printf("text %s\n", text);
+ filter_rule_build_code (efb->current_query, out);
+ g_value_take_string (value, out->str);
+ g_string_free (out, FALSE);
+@@ -966,12 +966,28 @@ e_filter_bar_new (RuleContext *context,
+ EFilterBar *bar;
+
+ bar = g_object_new (e_filter_bar_get_type (), NULL);
++ ((ESearchBar *)bar)->lite = FALSE;
+
+ e_filter_bar_new_construct (context, systemrules, userrules, config, data, bar);
+
+ return bar;
+ }
+
++EFilterBar *
++e_filter_bar_lite_new (RuleContext *context,
++ const char *systemrules,
++ const char *userrules,
++ EFilterBarConfigRule config,
++ void *data)
++{
++ EFilterBar *bar;
++
++ bar = g_object_new (e_filter_bar_get_type (), NULL);
++ ((ESearchBar *)bar)->lite = TRUE;
++ e_filter_bar_new_construct (context, systemrules, userrules, config, data, bar);
++
++ return bar;
++}
+
+ void
+ e_filter_bar_new_construct (RuleContext *context,
+diff --git a/widgets/misc/e-filter-bar.h b/widgets/misc/e-filter-bar.h
+index e1d4fc7..ad2afbe 100644
+--- a/widgets/misc/e-filter-bar.h
++++ b/widgets/misc/e-filter-bar.h
+@@ -126,6 +126,12 @@ EFilterBar *e_filter_bar_new (RuleContext *context,
+ const char *userrules,
+ EFilterBarConfigRule config,
+ void *data);
++EFilterBar *e_filter_bar_lite_new (RuleContext *context,
++ const char *systemrules,
++ const char *userrules,
++ EFilterBarConfigRule config,
++ void *data);
++
+ void
+ e_filter_bar_new_construct (RuleContext *context,
+ const char *systemrules,
+diff --git a/widgets/misc/e-search-bar.c b/widgets/misc/e-search-bar.c
+index 30cba7f..824378c 100644
+--- a/widgets/misc/e-search-bar.c
++++ b/widgets/misc/e-search-bar.c
+@@ -101,7 +101,8 @@ clear_button_state_changed (GtkWidget *clear_button, GtkStateType state, ESearch
+ {
+ g_return_if_fail (clear_button != NULL && search_bar != NULL);
+
+- update_clear_menuitem_sensitive (search_bar);
++ if (!search_bar->lite)
++ update_clear_menuitem_sensitive (search_bar);
+ }
+
+ static char *
+@@ -156,7 +157,8 @@ static void
+ emit_query_changed (ESearchBar *esb)
+ {
+ g_signal_emit (esb, esb_signals [QUERY_CHANGED], 0);
+- update_clear_menuitem_sensitive (esb);
++ if (!esb->lite)
++ update_clear_menuitem_sensitive (esb);
+ }
+
+ static void
+@@ -169,8 +171,10 @@ emit_search_activated(ESearchBar *esb)
+
+ g_signal_emit (esb, esb_signals [SEARCH_ACTIVATED], 0);
+
+- set_find_now_sensitive (esb, FALSE);
+- update_clear_menuitem_sensitive (esb);
++ if (!esb->lite) {
++ set_find_now_sensitive (esb, FALSE);
++ update_clear_menuitem_sensitive (esb);
++ }
+ }
+
+ static void
+@@ -368,12 +372,14 @@ entry_activated_cb (GtkWidget *widget,
+ gtk_widget_modify_base (esb->entry, GTK_STATE_NORMAL, &(style->base[GTK_STATE_SELECTED]));
+ gtk_widget_modify_text (esb->entry, GTK_STATE_NORMAL, &(style->text[GTK_STATE_SELECTED]));
+ gtk_widget_modify_base (esb->icon_entry, GTK_STATE_NORMAL, &(style->base[GTK_STATE_SELECTED]));
+- gtk_widget_modify_base (esb->viewoption, GTK_STATE_NORMAL, &(style->base[GTK_STATE_SELECTED]));
++ if (!esb->lite)
++ gtk_widget_modify_base (esb->viewoption, GTK_STATE_NORMAL, &(style->base[GTK_STATE_SELECTED]));
+ } else {
+ gtk_widget_modify_base (esb->entry, GTK_STATE_NORMAL, NULL);
+ gtk_widget_modify_text (esb->entry, GTK_STATE_NORMAL, NULL);
+ gtk_widget_modify_base (esb->icon_entry, GTK_STATE_NORMAL, NULL);
+- gtk_widget_set_sensitive (esb->clear_button, FALSE);
++ if (!esb->lite)
++ gtk_widget_set_sensitive (esb->clear_button, FALSE);
+ }
+
+ emit_search_activated (esb);
+@@ -665,7 +671,7 @@ set_menu (ESearchBar *esb,
+ esb->menu_items = g_slist_append (esb->menu_items, new_item);
+ }
+
+- if (esb->ui_component != NULL)
++ if (!esb->lite && esb->ui_component != NULL)
+ update_bonobo_menus (esb);
+ }
+
+@@ -818,7 +824,7 @@ impl_dispose (GObject *object)
+ /* These three we do need to unref, because we explicitly hold
+ references to them. */
+
+- if (esb->ui_component != NULL) {
++ if (!esb->lite && esb->ui_component != NULL) {
+ bonobo_object_unref (BONOBO_OBJECT (esb->ui_component));
+ esb->ui_component = NULL;
+ }
+@@ -989,60 +995,76 @@ e_search_bar_construct (ESearchBar *search_bar,
+ g_signal_connect (G_OBJECT (search_bar->option_button), "button-press-event", G_CALLBACK(option_button_clicked_cb), search_bar);
+ e_icon_entry_pack_widget (E_ICON_ENTRY (search_bar->icon_entry), search_bar->option_button, TRUE);
+
+- gtk_box_pack_start (GTK_BOX(search_bar->entry_box), search_bar->icon_entry, FALSE, FALSE, 0);
++ if (!search_bar->lite)
++ gtk_box_pack_start (GTK_BOX(search_bar->entry_box), search_bar->icon_entry, FALSE, FALSE, 0);
++ else
++ gtk_box_pack_start (GTK_BOX(search_bar->entry_box), search_bar->icon_entry, TRUE, TRUE, 0);
++
+
+ gtk_widget_show_all (search_bar->entry_box);
+ gtk_widget_set_sensitive (search_bar->clear_button, FALSE);
+
+- /* Current View filter */
+- search_bar->viewoption_box = gtk_hbox_new (0, FALSE);
++ if (!search_bar->lite) {
++ /* Current View filter */
++ search_bar->viewoption_box = gtk_hbox_new (0, FALSE);
+
+- /* To Translators: The "Show: " label is followed by the Quick Search Dropdown Menu where you can choose
+- to display "All Messages", "Unread Messages", "Message with 'Important' Label" and so on... */
+- label = gtk_label_new_with_mnemonic (_("Sho_w: "));
+- gtk_widget_show (label);
+- gtk_box_pack_start (GTK_BOX(search_bar->viewoption_box), label, FALSE, FALSE, 0);
++ /* To Translators: The "Show: " label is followed by the Quick Search Dropdown Menu where you can choose
++ to display "All Messages", "Unread Messages", "Message with 'Important' Label" and so on... */
++ label = gtk_label_new_with_mnemonic (_("Sho_w: "));
++ gtk_widget_show (label);
++ gtk_box_pack_start (GTK_BOX(search_bar->viewoption_box), label, FALSE, FALSE, 0);
+
+- search_bar->viewoption = gtk_option_menu_new ();
+- gtk_label_set_mnemonic_widget ((GtkLabel *)label, search_bar->viewoption);
+- gtk_box_pack_start (GTK_BOX(search_bar->viewoption_box), search_bar->viewoption, FALSE, TRUE, 0);
+- gtk_widget_show_all (search_bar->viewoption_box);
+- gtk_box_pack_start (GTK_BOX(search_bar), search_bar->viewoption_box, FALSE, FALSE, 0);
++ search_bar->viewoption = gtk_option_menu_new ();
++ gtk_label_set_mnemonic_widget ((GtkLabel *)label, search_bar->viewoption);
++ gtk_box_pack_start (GTK_BOX(search_bar->viewoption_box), search_bar->viewoption, FALSE, TRUE, 0);
++ gtk_widget_show_all (search_bar->viewoption_box);
++ gtk_box_pack_start (GTK_BOX(search_bar), search_bar->viewoption_box, FALSE, FALSE, 0);
+
+- hbox = gtk_hbox_new (FALSE, 0);
+- gtk_box_pack_start (GTK_BOX(search_bar), hbox, FALSE, FALSE, 0);
++ hbox = gtk_hbox_new (FALSE, 0);
++ gtk_box_pack_start (GTK_BOX(search_bar), hbox, FALSE, FALSE, 0);
++ }
+
+ /* Search entry */
+ hbox = gtk_hbox_new (FALSE, 0);
+ /* To Translators: The "Show: " label is followed by the Quick Search Text input field where one enters
+ the term to search for */
+- label = gtk_label_new_with_mnemonic (_("Sear_ch: "));
+- gtk_widget_show (label);
+- gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0);
+- gtk_box_pack_start (GTK_BOX(hbox), search_bar->entry_box, FALSE, FALSE, 0);
++ if (!search_bar->lite) {
++ label = gtk_label_new_with_mnemonic (_("Sear_ch: "));
++ gtk_widget_show (label);
++ gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0);
++ gtk_box_pack_start (GTK_BOX(hbox), search_bar->entry_box, FALSE, FALSE, 0);
++ gtk_label_set_mnemonic_widget ((GtkLabel *)label, search_bar->entry);
++ } else {
++ gtk_box_pack_start (GTK_BOX(hbox), search_bar->entry_box, TRUE, TRUE, 0);
++ }
+ gtk_widget_show (search_bar->entry_box);
+- gtk_label_set_mnemonic_widget ((GtkLabel *)label, search_bar->entry);
+-
+- /* Search Scope Widgets */
+- search_bar->scopeoption_box = gtk_hbox_new (0, FALSE);
+- gtk_box_set_spacing (GTK_BOX (search_bar->scopeoption_box), 3);
+- /* To Translators: The " in " label is part of the Quick Search Bar, example:
+- Search: | <user's_search_term> | in | Current Folder/All Accounts/Current Account */
+- label = gtk_label_new_with_mnemonic (_(" i_n "));
+- gtk_widget_show (label);
+- gtk_box_pack_start (GTK_BOX(search_bar->scopeoption_box), label, FALSE, FALSE, 0);
+-
+- search_bar->scopeoption = gtk_option_menu_new ();
+-/* g_signal_connect (GTK_OPTION_MENU (search_bar->scopeoption), "changed", scopeoption_changed_cb, search_bar); */
+- gtk_box_pack_start (GTK_BOX(search_bar->scopeoption_box), search_bar->scopeoption, FALSE, FALSE, 0);
+- gtk_widget_show_all (search_bar->scopeoption_box);
+- gtk_widget_hide (hbox);
+- gtk_label_set_mnemonic_widget ((GtkLabel *)label, search_bar->scopeoption);
+-
+- gtk_box_pack_end (GTK_BOX(hbox), search_bar->scopeoption_box, FALSE, FALSE, 0);
+- gtk_widget_hide (search_bar->scopeoption_box);
+-
+- gtk_box_pack_end (GTK_BOX(search_bar), hbox, FALSE, FALSE, 0);
++
++ if (!search_bar->lite) {
++ /* Search Scope Widgets */
++ search_bar->scopeoption_box = gtk_hbox_new (0, FALSE);
++ gtk_box_set_spacing (GTK_BOX (search_bar->scopeoption_box), 3);
++ /* To Translators: The " in " label is part of the Quick Search Bar, example:
++ Search: | <user's_search_term> | in | Current Folder/All Accounts/Current Account */
++ label = gtk_label_new_with_mnemonic (_(" i_n "));
++ gtk_widget_show (label);
++ gtk_box_pack_start (GTK_BOX(search_bar->scopeoption_box), label, FALSE, FALSE, 0);
++
++ search_bar->scopeoption = gtk_option_menu_new ();
++ /* g_signal_connect (GTK_OPTION_MENU (search_bar->scopeoption), "changed", scopeoption_changed_cb, search_bar); */
++ gtk_box_pack_start (GTK_BOX(search_bar->scopeoption_box), search_bar->scopeoption, FALSE, FALSE, 0);
++ gtk_widget_show_all (search_bar->scopeoption_box);
++ gtk_widget_hide (hbox);
++ gtk_label_set_mnemonic_widget ((GtkLabel *)label, search_bar->scopeoption);
++
++ gtk_box_pack_end (GTK_BOX(hbox), search_bar->scopeoption_box, FALSE, FALSE, 0);
++ gtk_widget_hide (search_bar->scopeoption_box);
++
++ }
++ if (!search_bar->lite)
++ gtk_box_pack_end (GTK_BOX(search_bar), hbox, FALSE, FALSE, 0);
++ else
++ gtk_box_pack_end (GTK_BOX(search_bar), hbox, TRUE, TRUE, 0);
++
+ gtk_widget_show (hbox);
+
+ /* Set the menu */
+@@ -1056,8 +1078,8 @@ e_search_bar_construct (ESearchBar *search_bar,
+ * so we can't emit here. Thus we launch a one-shot idle function that will
+ * emit the changed signal, so that the proper callback will get invoked.
+ */
+-
+- search_bar->pending_activate = g_idle_add (idle_activate_hack, search_bar);
++ if (!search_bar->lite)
++ search_bar->pending_activate = g_idle_add (idle_activate_hack, search_bar);
+ }
+
+ void
+@@ -1268,12 +1290,31 @@ e_search_bar_new (ESearchBarItem *menu_items,
+ return widget;
+ }
+
++GtkWidget *
++e_search_bar_lite_new (ESearchBarItem *menu_items,
++ ESearchBarItem *option_items)
++{
++ GtkWidget *widget;
++
++ g_return_val_if_fail (option_items != NULL, NULL);
++
++ widget = g_object_new (e_search_bar_get_type (), NULL);
++ E_SEARCH_BAR(widget)->lite = TRUE;
++
++ e_search_bar_construct (E_SEARCH_BAR (widget), menu_items, option_items);
++
++ return widget;
++}
++
+ void
+ e_search_bar_set_ui_component (ESearchBar *search_bar,
+ BonoboUIComponent *ui_component)
+ {
+ g_return_if_fail (E_IS_SEARCH_BAR (search_bar));
+
++ if (search_bar->lite)
++ return;
++
+ if (search_bar->ui_component != NULL) {
+ remove_bonobo_menus (search_bar);
+ bonobo_object_unref (BONOBO_OBJECT (search_bar->ui_component));
+@@ -1293,6 +1334,9 @@ e_search_bar_set_menu_sensitive (ESearchBar *search_bar, int id, gboolean state)
+ char *verb_name;
+ char *path;
+
++ if (search_bar->lite)
++ return;
++
+ verb_name = verb_name_from_id (id);
+ path = g_strconcat ("/commands/", verb_name, NULL);
+ g_free (verb_name);
+@@ -1334,6 +1378,8 @@ e_search_bar_set_viewitem_id (ESearchBar *search_bar, int id)
+ int row;
+
+ g_return_if_fail (E_IS_SEARCH_BAR (search_bar));
++ if (!search_bar->viewoption_menu)
++ return;
+
+ row = find_id (search_bar->viewoption_menu, id, "EsbItemId", NULL);
+ if (row == -1)
+@@ -1358,6 +1404,8 @@ e_search_bar_set_item_id (ESearchBar *search_bar, int id)
+
+ g_return_if_fail (E_IS_SEARCH_BAR (search_bar));
+
++ if (!search_bar->option_menu)
++ return;
+ row = find_id (search_bar->option_menu, id, "EsbItemId", NULL);
+ if (row == -1)
+ return;
+@@ -1370,7 +1418,8 @@ e_search_bar_set_item_id (ESearchBar *search_bar, int id)
+ if (!search_bar->block_search)
+ emit_query_changed (search_bar);
+
+- update_clear_menuitem_sensitive (search_bar);
++ if (!search_bar->lite)
++ update_clear_menuitem_sensitive (search_bar);
+ }
+
+ void
+diff --git a/widgets/misc/e-search-bar.h b/widgets/misc/e-search-bar.h
+index 1f7072d..a8dbf22 100644
+--- a/widgets/misc/e-search-bar.h
++++ b/widgets/misc/e-search-bar.h
+@@ -105,6 +105,7 @@ struct _ESearchBar
+ int last_search_option;
+
+ gboolean block_search;
++ gboolean lite;
+ };
+
+ struct _ESearchBarClass
+@@ -133,6 +134,8 @@ void e_search_bar_construct (ESearchBar *search_bar,
+ ESearchBarItem *option_items);
+ GtkWidget *e_search_bar_new (ESearchBarItem *menu_items,
+ ESearchBarItem *option_items);
++GtkWidget *e_search_bar_lite_new (ESearchBarItem *menu_items,
++ ESearchBarItem *option_items);
+
+ void e_search_bar_set_ui_component (ESearchBar *search_bar,
+ BonoboUIComponent *ui_component);
diff --git a/widgets/misc/e-spinner.c b/widgets/misc/e-spinner.c
index 56990d7..d980991 100644
--- a/widgets/misc/e-spinner.c
diff --git a/evo-anjal.patch b/evo-anjal.patch
old mode 100755
new mode 100644
index dab06aa..1009661
--- a/evo-anjal.patch
+++ b/evo-anjal.patch
@@ -1815,6 +1815,348 @@ index 95acd8b..2d92b1e 100644
libefilterbar_la_LDFLAGS = $(NO_UNDEFINED)
+diff --git a/widgets/misc/e-filter-bar.c b/widgets/misc/e-filter-bar.c
+index 65b25c3..7e2afb3 100644
+--- a/widgets/misc/e-filter-bar.c
++++ b/widgets/misc/e-filter-bar.c
+@@ -968,12 +968,28 @@ e_filter_bar_new (RuleContext *context,
+ EFilterBar *bar;
+
+ bar = g_object_new (e_filter_bar_get_type (), NULL);
++ ((ESearchBar *)bar)->lite = FALSE;
+
+ e_filter_bar_new_construct (context, systemrules, userrules, config, data, bar);
+
+ return bar;
+ }
+
++EFilterBar *
++e_filter_bar_lite_new (RuleContext *context,
++ const char *systemrules,
++ const char *userrules,
++ EFilterBarConfigRule config,
++ void *data)
++{
++ EFilterBar *bar;
++
++ bar = g_object_new (e_filter_bar_get_type (), NULL);
++ ((ESearchBar *)bar)->lite = TRUE;
++ e_filter_bar_new_construct (context, systemrules, userrules, config, data, bar);
++
++ return bar;
++}
+
+ void
+ e_filter_bar_new_construct (RuleContext *context,
+diff --git a/widgets/misc/e-filter-bar.h b/widgets/misc/e-filter-bar.h
+index e1d4fc7..ad2afbe 100644
+--- a/widgets/misc/e-filter-bar.h
++++ b/widgets/misc/e-filter-bar.h
+@@ -126,6 +126,12 @@ EFilterBar *e_filter_bar_new (RuleContext *context,
+ const char *userrules,
+ EFilterBarConfigRule config,
+ void *data);
++EFilterBar *e_filter_bar_lite_new (RuleContext *context,
++ const char *systemrules,
++ const char *userrules,
++ EFilterBarConfigRule config,
++ void *data);
++
+ void
+ e_filter_bar_new_construct (RuleContext *context,
+ const char *systemrules,
+diff --git a/widgets/misc/e-search-bar.c b/widgets/misc/e-search-bar.c
+index 33fa94f..6e2174a 100644
+--- a/widgets/misc/e-search-bar.c
++++ b/widgets/misc/e-search-bar.c
+@@ -102,7 +102,8 @@ clear_button_state_changed (GtkWidget *clear_button, GtkStateType state, ESearch
+ {
+ g_return_if_fail (clear_button != NULL && search_bar != NULL);
+
+- update_clear_menuitem_sensitive (search_bar);
++ if (!search_bar->lite)
++ update_clear_menuitem_sensitive (search_bar);
+ }
+
+ static char *
+@@ -157,7 +158,8 @@ static void
+ emit_query_changed (ESearchBar *esb)
+ {
+ g_signal_emit (esb, esb_signals [QUERY_CHANGED], 0);
+- update_clear_menuitem_sensitive (esb);
++ if (!esb->lite)
++ update_clear_menuitem_sensitive (esb);
+ }
+
+ static void
+@@ -170,8 +172,10 @@ emit_search_activated(ESearchBar *esb)
+
+ g_signal_emit (esb, esb_signals [SEARCH_ACTIVATED], 0);
+
+- set_find_now_sensitive (esb, FALSE);
+- update_clear_menuitem_sensitive (esb);
++ if (!esb->lite) {
++ set_find_now_sensitive (esb, FALSE);
++ update_clear_menuitem_sensitive (esb);
++ }
+ }
+
+ static void
+@@ -369,12 +373,14 @@ entry_activated_cb (GtkWidget *widget,
+ gtk_widget_modify_base (esb->entry, GTK_STATE_NORMAL, &(style->base[GTK_STATE_SELECTED]));
+ gtk_widget_modify_text (esb->entry, GTK_STATE_NORMAL, &(style->text[GTK_STATE_SELECTED]));
+ gtk_widget_modify_base (esb->icon_entry, GTK_STATE_NORMAL, &(style->base[GTK_STATE_SELECTED]));
+- gtk_widget_modify_base (esb->viewoption, GTK_STATE_NORMAL, &(style->base[GTK_STATE_SELECTED]));
++ if (!esb->lite)
++ gtk_widget_modify_base (esb->viewoption, GTK_STATE_NORMAL, &(style->base[GTK_STATE_SELECTED]));
+ } else {
+ gtk_widget_modify_base (esb->entry, GTK_STATE_NORMAL, NULL);
+ gtk_widget_modify_text (esb->entry, GTK_STATE_NORMAL, NULL);
+ gtk_widget_modify_base (esb->icon_entry, GTK_STATE_NORMAL, NULL);
+- gtk_widget_set_sensitive (esb->clear_button, FALSE);
++ if (!esb->lite)
++ gtk_widget_set_sensitive (esb->clear_button, FALSE);
+ }
+
+ emit_search_activated (esb);
+@@ -666,7 +672,7 @@ set_menu (ESearchBar *esb,
+ esb->menu_items = g_slist_append (esb->menu_items, new_item);
+ }
+
+- if (esb->ui_component != NULL)
++ if (!esb->lite && esb->ui_component != NULL)
+ update_bonobo_menus (esb);
+ }
+
+@@ -819,7 +825,7 @@ impl_dispose (GObject *object)
+ /* These three we do need to unref, because we explicitly hold
+ references to them. */
+
+- if (esb->ui_component != NULL) {
++ if (!esb->lite && esb->ui_component != NULL) {
+ bonobo_object_unref (BONOBO_OBJECT (esb->ui_component));
+ esb->ui_component = NULL;
+ }
+@@ -990,60 +996,76 @@ e_search_bar_construct (ESearchBar *search_bar,
+ g_signal_connect (G_OBJECT (search_bar->option_button), "button-press-event", G_CALLBACK(option_button_clicked_cb), search_bar);
+ e_icon_entry_pack_widget (E_ICON_ENTRY (search_bar->icon_entry), search_bar->option_button, TRUE);
+
+- gtk_box_pack_start (GTK_BOX(search_bar->entry_box), search_bar->icon_entry, FALSE, FALSE, 0);
++ if (!search_bar->lite)
++ gtk_box_pack_start (GTK_BOX(search_bar->entry_box), search_bar->icon_entry, FALSE, FALSE, 0);
++ else
++ gtk_box_pack_start (GTK_BOX(search_bar->entry_box), search_bar->icon_entry, TRUE, TRUE, 0);
++
+
+ gtk_widget_show_all (search_bar->entry_box);
+ gtk_widget_set_sensitive (search_bar->clear_button, FALSE);
+
+- /* Current View filter */
+- search_bar->viewoption_box = gtk_hbox_new (0, FALSE);
++ if (!search_bar->lite) {
++ /* Current View filter */
++ search_bar->viewoption_box = gtk_hbox_new (0, FALSE);
+
+- /* To Translators: The "Show: " label is followed by the Quick Search Dropdown Menu where you can choose
+- to display "All Messages", "Unread Messages", "Message with 'Important' Label" and so on... */
+- label = gtk_label_new_with_mnemonic (_("Sho_w: "));
+- gtk_widget_show (label);
+- gtk_box_pack_start (GTK_BOX(search_bar->viewoption_box), label, FALSE, FALSE, 0);
++ /* To Translators: The "Show: " label is followed by the Quick Search Dropdown Menu where you can choose
++ to display "All Messages", "Unread Messages", "Message with 'Important' Label" and so on... */
++ label = gtk_label_new_with_mnemonic (_("Sho_w: "));
++ gtk_widget_show (label);
++ gtk_box_pack_start (GTK_BOX(search_bar->viewoption_box), label, FALSE, FALSE, 0);
+
+- search_bar->viewoption = gtk_option_menu_new ();
+- gtk_label_set_mnemonic_widget ((GtkLabel *)label, search_bar->viewoption);
+- gtk_box_pack_start (GTK_BOX(search_bar->viewoption_box), search_bar->viewoption, FALSE, TRUE, 0);
+- gtk_widget_show_all (search_bar->viewoption_box);
+- gtk_box_pack_start (GTK_BOX(search_bar), search_bar->viewoption_box, FALSE, FALSE, 0);
++ search_bar->viewoption = gtk_option_menu_new ();
++ gtk_label_set_mnemonic_widget ((GtkLabel *)label, search_bar->viewoption);
++ gtk_box_pack_start (GTK_BOX(search_bar->viewoption_box), search_bar->viewoption, FALSE, TRUE, 0);
++ gtk_widget_show_all (search_bar->viewoption_box);
++ gtk_box_pack_start (GTK_BOX(search_bar), search_bar->viewoption_box, FALSE, FALSE, 0);
+
+- hbox = gtk_hbox_new (FALSE, 0);
+- gtk_box_pack_start (GTK_BOX(search_bar), hbox, FALSE, FALSE, 0);
++ hbox = gtk_hbox_new (FALSE, 0);
++ gtk_box_pack_start (GTK_BOX(search_bar), hbox, FALSE, FALSE, 0);
++ }
+
+ /* Search entry */
+ hbox = gtk_hbox_new (FALSE, 0);
+ /* To Translators: The "Show: " label is followed by the Quick Search Text input field where one enters
+ the term to search for */
+- label = gtk_label_new_with_mnemonic (_("Sear_ch: "));
+- gtk_widget_show (label);
+- gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0);
+- gtk_box_pack_start (GTK_BOX(hbox), search_bar->entry_box, FALSE, FALSE, 0);
++ if (!search_bar->lite) {
++ label = gtk_label_new_with_mnemonic (_("Sear_ch: "));
++ gtk_widget_show (label);
++ gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0);
++ gtk_box_pack_start (GTK_BOX(hbox), search_bar->entry_box, FALSE, FALSE, 0);
++ gtk_label_set_mnemonic_widget ((GtkLabel *)label, search_bar->entry);
++ } else {
++ gtk_box_pack_start (GTK_BOX(hbox), search_bar->entry_box, TRUE, TRUE, 0);
++ }
+ gtk_widget_show (search_bar->entry_box);
+- gtk_label_set_mnemonic_widget ((GtkLabel *)label, search_bar->entry);
+-
+- /* Search Scope Widgets */
+- search_bar->scopeoption_box = gtk_hbox_new (0, FALSE);
+- gtk_box_set_spacing (GTK_BOX (search_bar->scopeoption_box), 3);
+- /* To Translators: The " in " label is part of the Quick Search Bar, example:
+- Search: | <user's_search_term> | in | Current Folder/All Accounts/Current Account */
+- label = gtk_label_new_with_mnemonic (_(" i_n "));
+- gtk_widget_show (label);
+- gtk_box_pack_start (GTK_BOX(search_bar->scopeoption_box), label, FALSE, FALSE, 0);
+-
+- search_bar->scopeoption = gtk_option_menu_new ();
+-/* g_signal_connect (GTK_OPTION_MENU (search_bar->scopeoption), "changed", scopeoption_changed_cb, search_bar); */
+- gtk_box_pack_start (GTK_BOX(search_bar->scopeoption_box), search_bar->scopeoption, FALSE, FALSE, 0);
+- gtk_widget_show_all (search_bar->scopeoption_box);
+- gtk_widget_hide (hbox);
+- gtk_label_set_mnemonic_widget ((GtkLabel *)label, search_bar->scopeoption);
+-
+- gtk_box_pack_end (GTK_BOX(hbox), search_bar->scopeoption_box, FALSE, FALSE, 0);
+- gtk_widget_hide (search_bar->scopeoption_box);
+-
+- gtk_box_pack_end (GTK_BOX(search_bar), hbox, FALSE, FALSE, 0);
++
++ if (!search_bar->lite) {
++ /* Search Scope Widgets */
++ search_bar->scopeoption_box = gtk_hbox_new (0, FALSE);
++ gtk_box_set_spacing (GTK_BOX (search_bar->scopeoption_box), 3);
++ /* To Translators: The " in " label is part of the Quick Search Bar, example:
++ Search: | <user's_search_term> | in | Current Folder/All Accounts/Current Account */
++ label = gtk_label_new_with_mnemonic (_(" i_n "));
++ gtk_widget_show (label);
++ gtk_box_pack_start (GTK_BOX(search_bar->scopeoption_box), label, FALSE, FALSE, 0);
++
++ search_bar->scopeoption = gtk_option_menu_new ();
++ /* g_signal_connect (GTK_OPTION_MENU (search_bar->scopeoption), "changed", scopeoption_changed_cb, search_bar); */
++ gtk_box_pack_start (GTK_BOX(search_bar->scopeoption_box), search_bar->scopeoption, FALSE, FALSE, 0);
++ gtk_widget_show_all (search_bar->scopeoption_box);
++ gtk_widget_hide (hbox);
++ gtk_label_set_mnemonic_widget ((GtkLabel *)label, search_bar->scopeoption);
++
++ gtk_box_pack_end (GTK_BOX(hbox), search_bar->scopeoption_box, FALSE, FALSE, 0);
++ gtk_widget_hide (search_bar->scopeoption_box);
++
++ }
++ if (!search_bar->lite)
++ gtk_box_pack_end (GTK_BOX(search_bar), hbox, FALSE, FALSE, 0);
++ else
++ gtk_box_pack_end (GTK_BOX(search_bar), hbox, TRUE, TRUE, 0);
++
+ gtk_widget_show (hbox);
+
+ /* Set the menu */
+@@ -1057,8 +1079,8 @@ e_search_bar_construct (ESearchBar *search_bar,
+ * so we can't emit here. Thus we launch a one-shot idle function that will
+ * emit the changed signal, so that the proper callback will get invoked.
+ */
+-
+- search_bar->pending_activate = g_idle_add (idle_activate_hack, search_bar);
++ if (!search_bar->lite)
++ search_bar->pending_activate = g_idle_add (idle_activate_hack, search_bar);
+ }
+
+ void
+@@ -1269,12 +1291,31 @@ e_search_bar_new (ESearchBarItem *menu_items,
+ return widget;
+ }
+
++GtkWidget *
++e_search_bar_lite_new (ESearchBarItem *menu_items,
++ ESearchBarItem *option_items)
++{
++ GtkWidget *widget;
++
++ g_return_val_if_fail (option_items != NULL, NULL);
++
++ widget = g_object_new (e_search_bar_get_type (), NULL);
++ E_SEARCH_BAR(widget)->lite = TRUE;
++
++ e_search_bar_construct (E_SEARCH_BAR (widget), menu_items, option_items);
++
++ return widget;
++}
++
+ void
+ e_search_bar_set_ui_component (ESearchBar *search_bar,
+ BonoboUIComponent *ui_component)
+ {
+ g_return_if_fail (E_IS_SEARCH_BAR (search_bar));
+
++ if (search_bar->lite)
++ return;
++
+ if (search_bar->ui_component != NULL) {
+ remove_bonobo_menus (search_bar);
+ bonobo_object_unref (BONOBO_OBJECT (search_bar->ui_component));
+@@ -1294,6 +1335,9 @@ e_search_bar_set_menu_sensitive (ESearchBar *search_bar, int id, gboolean state)
+ char *verb_name;
+ char *path;
+
++ if (search_bar->lite)
++ return;
++
+ verb_name = verb_name_from_id (id);
+ path = g_strconcat ("/commands/", verb_name, NULL);
+ g_free (verb_name);
+@@ -1335,6 +1379,8 @@ e_search_bar_set_viewitem_id (ESearchBar *search_bar, int id)
+ int row;
+
+ g_return_if_fail (E_IS_SEARCH_BAR (search_bar));
++ if (!search_bar->viewoption_menu)
++ return;
+
+ row = find_id (search_bar->viewoption_menu, id, "EsbItemId", NULL);
+ if (row == -1)
+@@ -1359,6 +1405,8 @@ e_search_bar_set_item_id (ESearchBar *search_bar, int id)
+
+ g_return_if_fail (E_IS_SEARCH_BAR (search_bar));
+
++ if (!search_bar->option_menu)
++ return;
+ row = find_id (search_bar->option_menu, id, "EsbItemId", NULL);
+ if (row == -1)
+ return;
+@@ -1371,7 +1419,8 @@ e_search_bar_set_item_id (ESearchBar *search_bar, int id)
+ if (!search_bar->block_search)
+ emit_query_changed (search_bar);
+
+- update_clear_menuitem_sensitive (search_bar);
++ if (!search_bar->lite)
++ update_clear_menuitem_sensitive (search_bar);
+ }
+
+ void
+diff --git a/widgets/misc/e-search-bar.h b/widgets/misc/e-search-bar.h
+index 1f7072d..a8dbf22 100644
+--- a/widgets/misc/e-search-bar.h
++++ b/widgets/misc/e-search-bar.h
+@@ -105,6 +105,7 @@ struct _ESearchBar
+ int last_search_option;
+
+ gboolean block_search;
++ gboolean lite;
+ };
+
+ struct _ESearchBarClass
+@@ -133,6 +134,8 @@ void e_search_bar_construct (ESearchBar *search_bar,
+ ESearchBarItem *option_items);
+ GtkWidget *e_search_bar_new (ESearchBarItem *menu_items,
+ ESearchBarItem *option_items);
++GtkWidget *e_search_bar_lite_new (ESearchBarItem *menu_items,
++ ESearchBarItem *option_items);
+
+ void e_search_bar_set_ui_component (ESearchBar *search_bar,
+ BonoboUIComponent *ui_component);
diff --git a/widgets/misc/e-spinner.c b/widgets/misc/e-spinner.c
index 56990d7..7edafea 100644
--- a/widgets/misc/e-spinner.c
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]