[anjal] More keybindings



commit de42abc36872aac99974655cdb1e10c8f77077ff
Author: Srinivasa Ragavan <sragavan novell com>
Date:   Fri Aug 14 14:16:51 2009 +0530

    More keybindings

 src/mail-shell.c |   55 +++++++++++++++++++++++++++++++++++++++++++++++++----
 src/mail-shell.h |    3 ++
 src/mail-view.c  |    9 +++++--
 src/mail-view.h  |    2 +-
 4 files changed, 60 insertions(+), 9 deletions(-)
---
diff --git a/src/mail-shell.c b/src/mail-shell.c
index 1e60a4b..fcfe2ff 100644
--- a/src/mail-shell.c
+++ b/src/mail-shell.c
@@ -41,6 +41,9 @@ enum {
 	BACKSPACE_PRESSED,
 	SLASH_PRESSED,
 	CTRL_W_PRESSED,
+	CTRL_Q_PRESSED,
+	F5_PRESSED,
+
 	LAST_SIGNAL
 };
 
@@ -91,6 +94,8 @@ struct  _MailShellPrivate {
 	char **args;
 };
 
+static void mail_shell_quit (MailShell *shell);
+
 G_DEFINE_TYPE (MailShell, mail_shell, GTK_TYPE_WINDOW)
 
 static void setup_abooks (void);
@@ -138,6 +143,22 @@ ms_slash_pressed (MailShell *shell)
 }
 
 static void
+ms_f5_pressed (MailShell *shell)
+{
+	MailView *view = (MailView *)shell->mail_component->mail_view;
+
+	mail_view_check_mail ((MailView *)view, FALSE);
+}
+
+static void
+ms_ctrl_q_pressed (MailShell *shell)
+{
+	MailShellPrivate *priv = shell->priv;
+
+	mail_shell_quit (shell);
+}	
+
+static void
 mail_shell_class_init (MailShellClass *klass)
 {
 	GObjectClass * object_class = G_OBJECT_CLASS (klass);
@@ -148,7 +169,9 @@ mail_shell_class_init (MailShellClass *klass)
 	klass->backspace_pressed = ms_backspace_pressed;
 	klass->ctrl_w_pressed = ms_ctrl_w_pressed;
 	klass->slash_pressed = ms_slash_pressed;
-	
+	klass->f5_pressed = ms_f5_pressed;
+	klass->ctrl_q_pressed = ms_ctrl_q_pressed;
+
 	mail_shell_signals [BACKSPACE_PRESSED] =
 		g_signal_new ("backspace_pressed",
 				G_TYPE_FROM_CLASS (object_class),
@@ -175,12 +198,33 @@ mail_shell_class_init (MailShellClass *klass)
 				NULL, NULL,
 				g_cclosure_marshal_VOID__VOID,
 				G_TYPE_NONE, 0);
-	
+
+	mail_shell_signals [CTRL_Q_PRESSED] =
+		g_signal_new ("ctrl_q_pressed",
+				G_TYPE_FROM_CLASS (object_class),
+					  G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+				G_STRUCT_OFFSET (MailShellClass, ctrl_q_pressed),
+				NULL, NULL,
+				g_cclosure_marshal_VOID__VOID,
+				G_TYPE_NONE, 0);
+	mail_shell_signals [F5_PRESSED] =
+		g_signal_new ("f5_pressed",
+				G_TYPE_FROM_CLASS (object_class),
+					  G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+				G_STRUCT_OFFSET (MailShellClass, f5_pressed),
+				NULL, NULL,
+				g_cclosure_marshal_VOID__VOID,
+				G_TYPE_NONE, 0);
+
 	binding_set = gtk_binding_set_by_class (klass);
 	gtk_binding_entry_add_signal (binding_set, GDK_W, GDK_CONTROL_MASK, "ctrl_w_pressed", 0);
 	gtk_binding_entry_add_signal (binding_set, GDK_w, GDK_CONTROL_MASK, "ctrl_w_pressed", 0);
 	gtk_binding_entry_add_signal (binding_set, GDK_BackSpace, 0, "backspace_pressed", 0);
 	gtk_binding_entry_add_signal (binding_set, GDK_slash, 0, "slash_pressed", 0);
+	gtk_binding_entry_add_signal (binding_set, GDK_Q, GDK_CONTROL_MASK, "ctrl_q_pressed", 0);
+	gtk_binding_entry_add_signal (binding_set, GDK_Q, GDK_CONTROL_MASK, "ctrl_q_pressed", 0);
+	gtk_binding_entry_add_signal (binding_set, GDK_F5, 0, "f5_pressed", 0);
+
 };
 
 static int
@@ -249,7 +293,7 @@ ms_check_mail  (GtkButton *button, gpointer data)
 	MailShell *shell = (MailShell *) data;
 	MailView *view = (MailView *)shell->mail_component->mail_view;
 
-	mail_view_check_mail ((MailView *)view);
+	mail_view_check_mail ((MailView *)view, TRUE);
 }
 
 static void
@@ -409,7 +453,8 @@ mail_shell_construct (MailShell *shell)
 		g_signal_connect (priv->top_bar, "expose-event",
 						  G_CALLBACK (color_expose),
 						  shell);
-		gtk_widget_set_size_request (priv->top_bar, -1, 42);	
+		/* Leave it to the theme to decide the height */
+		/* gtk_widget_set_size_request (priv->top_bar, -1, 42);	*/
 	}
 
 	/* Check mail button and the spinner */
@@ -558,7 +603,7 @@ mail_shell_construct (MailShell *shell)
 	gtk_paned_add2 ((GtkPaned *)priv->side_pane, box);
 	tmp = gtk_hbox_new (FALSE, 0);
 	gtk_widget_show (tmp);
-	gtk_box_pack_start (tmp, priv->side_pane, TRUE, TRUE, 2);
+	gtk_box_pack_start ((GtkBox *)tmp, priv->side_pane, TRUE, TRUE, 2);
 	gtk_box_pack_start ((GtkBox *)priv->box, tmp, TRUE, TRUE, 6);
 
 	g_signal_connect (priv->new_mail, "clicked", G_CALLBACK (new_email_btn_clicked), 
diff --git a/src/mail-shell.h b/src/mail-shell.h
index da2c4cd..2bdcd89 100644
--- a/src/mail-shell.h
+++ b/src/mail-shell.h
@@ -49,6 +49,9 @@ typedef struct _MailShellClass {
 	void (* backspace_pressed)    (MailShell *class);
 	void (* ctrl_w_pressed)    (MailShell *class);
 	void (* slash_pressed)    (MailShell *class);	
+	void (* ctrl_q_pressed)    (MailShell *class);	
+	void (* f5_pressed)    (MailShell *class);	
+
 } MailShellClass;
 
 MailShell * mail_shell_new (void);
diff --git a/src/mail-view.c b/src/mail-view.c
index 581a2eb..ee8fe88 100644
--- a/src/mail-view.c
+++ b/src/mail-view.c
@@ -728,7 +728,7 @@ mv_spinner_done (CamelFolder *f, gpointer data)
 }
 
 void
-mail_view_check_mail(MailView *mv)
+mail_view_check_mail(MailView *mv, gboolean deep)
 {
 	 MailViewChild *child = (MailViewChild *)mv->priv->current_view;
 	 
@@ -741,8 +741,11 @@ mail_view_check_mail(MailView *mv)
 			   mail_refresh_folder(folder, mv_spinner_done, mv);
 		  }
 	 }
-	em_utils_clear_get_password_canceled_accounts_flag ();
-	mail_send_receive_dialog (FALSE);
+	
+	if (deep) {
+		em_utils_clear_get_password_canceled_accounts_flag ();
+		mail_send_receive_dialog (FALSE);
+	}
 }
 
 void
diff --git a/src/mail-view.h b/src/mail-view.h
index 7fae8ed..223dc13 100644
--- a/src/mail-view.h
+++ b/src/mail-view.h
@@ -78,7 +78,7 @@ void mail_view_show_list (MailView *mv);
 void mail_view_close_view (MailView *mv);
 void mail_view_set_check_email (MailView *mv, GtkWidget *button);
 void mail_view_set_sort_by  (MailView *mv, GtkWidget *button);
-void mail_view_check_mail(MailView *mv);
+void mail_view_check_mail(MailView *mv, gboolean deep);
 void mail_view_set_folder_tree_widget (MailView *mv, GtkWidget *tree);
 void mail_view_set_folder_tree (MailView *mv, GtkWidget *tree);
 void mail_view_save (MailView *mv);



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