aboutsummaryrefslogtreecommitdiffstats
path: root/shell
diff options
context:
space:
mode:
Diffstat (limited to 'shell')
-rw-r--r--shell/e-shell-content.c12
-rw-r--r--shell/e-shell-view.c37
-rw-r--r--shell/e-shell-view.h2
3 files changed, 48 insertions, 3 deletions
diff --git a/shell/e-shell-content.c b/shell/e-shell-content.c
index 6ffa73fa0a..13f807e79b 100644
--- a/shell/e-shell-content.c
+++ b/shell/e-shell-content.c
@@ -127,7 +127,7 @@ shell_content_update_search_widgets (EShellContent *shell_content)
const GdkColor *color;
style = gtk_widget_get_style (widget);
- color = &style->base[GTK_STATE_SELECTED];
+ color = &style->light[GTK_STATE_SELECTED];
gtk_widget_modify_base (widget, GTK_STATE_NORMAL, color);
style = gtk_widget_get_style (widget);
@@ -172,11 +172,17 @@ shell_content_entry_activate_cb (EShellContent *shell_content,
EShellView *shell_view;
EShellWindow *shell_window;
GtkAction *action;
+ const gchar *text;
shell_view = e_shell_content_get_shell_view (shell_content);
shell_window = e_shell_view_get_shell_window (shell_view);
- action = E_SHELL_WINDOW_ACTION_SEARCH_QUICK (shell_window);
+ text = gtk_entry_get_text (entry);
+ if (text && *text)
+ action = E_SHELL_WINDOW_ACTION_SEARCH_QUICK (shell_window);
+ else
+ action = E_SHELL_WINDOW_ACTION_SEARCH_CLEAR (shell_window);
+
gtk_action_activate (action);
}
@@ -1664,6 +1670,7 @@ e_shell_content_restore_state (EShellContent *shell_content,
* the search action until the state is fully restored. */
action = E_SHELL_WINDOW_ACTION_SEARCH_QUICK (shell_window);
gtk_action_block_activate (action);
+ e_shell_view_block_execute_search (shell_view);
key = STATE_KEY_SEARCH_FILTER;
string = g_key_file_get_string (key_file, group_name, key, NULL);
@@ -1703,6 +1710,7 @@ e_shell_content_restore_state (EShellContent *shell_content,
action = E_SHELL_WINDOW_ACTION_SEARCH_QUICK (shell_window);
gtk_action_unblock_activate (action);
+ e_shell_view_unblock_execute_search (shell_view);
/* Now execute the search. */
e_shell_view_execute_search (shell_view);
diff --git a/shell/e-shell-view.c b/shell/e-shell-view.c
index 8ee65e0e4f..2439706224 100644
--- a/shell/e-shell-view.c
+++ b/shell/e-shell-view.c
@@ -52,6 +52,8 @@ struct _EShellViewPrivate {
GtkWidget *shell_content;
GtkWidget *shell_sidebar;
GtkWidget *shell_taskbar;
+
+ guint execute_search_blocked;
};
enum {
@@ -1121,7 +1123,40 @@ e_shell_view_execute_search (EShellView *shell_view)
{
g_return_if_fail (E_IS_SHELL_VIEW (shell_view));
- g_signal_emit (shell_view, signals[EXECUTE_SEARCH], 0);
+ if (!shell_view->priv->execute_search_blocked)
+ g_signal_emit (shell_view, signals[EXECUTE_SEARCH], 0);
+}
+
+/**
+ * e_shell_view_block_execute_search:
+ * @shell_view: an #EShellView
+ *
+ * Blocks e_shell_view_execute_search in a way it does nothing.
+ * Pair function for this is e_shell_view_unblock_execute_search.
+ **/
+void
+e_shell_view_block_execute_search (EShellView *shell_view)
+{
+ g_return_if_fail (E_IS_SHELL_VIEW (shell_view));
+ g_return_if_fail (shell_view->priv->execute_search_blocked + 1 != 0);
+
+ shell_view->priv->execute_search_blocked++;
+}
+
+/**
+ * e_shell_view_unblock_execute_search:
+ * @shell_view: an #EShellView
+ *
+ * Unblocks previously blocked e_shell_view_execute_search with
+ * function e_shell_view_block_execute_search.
+ **/
+void
+e_shell_view_unblock_execute_search (EShellView *shell_view)
+{
+ g_return_if_fail (E_IS_SHELL_VIEW (shell_view));
+ g_return_if_fail (shell_view->priv->execute_search_blocked > 0);
+
+ shell_view->priv->execute_search_blocked--;
}
/**
diff --git a/shell/e-shell-view.h b/shell/e-shell-view.h
index 7b8fb13861..8cbfabd0ba 100644
--- a/shell/e-shell-view.h
+++ b/shell/e-shell-view.h
@@ -179,6 +179,8 @@ EShellWindow * e_shell_view_get_shell_window (EShellView *shell_view);
GKeyFile * e_shell_view_get_state_key_file (EShellView *shell_view);
void e_shell_view_set_state_dirty (EShellView *shell_view);
void e_shell_view_execute_search (EShellView *shell_view);
+void e_shell_view_block_execute_search (EShellView *shell_view);
+void e_shell_view_unblock_execute_search (EShellView *shell_view);
void e_shell_view_update_actions (EShellView *shell_view);
GtkWidget * e_shell_view_show_popup_menu (EShellView *shell_view,
const gchar *widget_path,