[gnome-notes/go-back-mr-64] window-base: consolidate go back
- From: Isaque Galdino de Araujo <igaldino src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-notes/go-back-mr-64] window-base: consolidate go back
- Date: Thu, 20 Aug 2020 11:24:13 +0000 (UTC)
commit 8e52a4c2e5b60d53bb05128fa6f172334a4f51e4
Author: Isaque Galdino <igaldino gmail com>
Date: Thu Aug 20 08:23:58 2020 -0300
window-base: consolidate go back
src/bjb-main-toolbar.c | 28 +----------
src/bjb-window-base.c | 131 ++++++++++++++++++++++---------------------------
src/bjb-window-base.h | 1 +
3 files changed, 62 insertions(+), 98 deletions(-)
---
diff --git a/src/bjb-main-toolbar.c b/src/bjb-main-toolbar.c
index fb8bc14..5a4aad3 100644
--- a/src/bjb-main-toolbar.c
+++ b/src/bjb-main-toolbar.c
@@ -265,35 +265,9 @@ disconnect_note_handlers (BjbMainToolbar *self)
static void
on_back_button_clicked (BjbMainToolbar *self)
{
- BijiItemsGroup group;
-
- if (self->note)
- {
- if (biji_note_obj_is_trashed (self->note))
- bjb_window_base_switch_to (BJB_WINDOW_BASE (self->window),
- BJB_WINDOW_BASE_ARCHIVE_VIEW);
- else
- bjb_window_base_switch_to (BJB_WINDOW_BASE (self->window),
- BJB_WINDOW_BASE_MAIN_VIEW);
- disconnect_note_handlers (self);
- bjb_main_view_update_model (self->parent);
- return;
- }
-
- group = bjb_controller_get_group (self->controller);
-
- /* Back to main view from trash bin */
- if (group == BIJI_ARCHIVED_ITEMS)
- bjb_controller_set_group (self->controller, BIJI_LIVING_ITEMS);
-
-
- /* Back to main view */
- else
- bjb_controller_set_notebook (self->controller, NULL);
+ bjb_window_base_go_back (BJB_WINDOW_BASE (self->window));
}
-
-
static void
on_empty_clicked_callback (BjbMainToolbar *self)
{
diff --git a/src/bjb-window-base.c b/src/bjb-window-base.c
index e66a284..cb2b327 100644
--- a/src/bjb-window-base.c
+++ b/src/bjb-window-base.c
@@ -123,79 +123,36 @@ bjb_window_base_set_property (GObject *object,
}
}
-
-
static gboolean
-on_key_pressed_cb (GtkWidget *w, GdkEvent *event, gpointer user_data)
+on_key_pressed_cb (BjbWindowBase *self, GdkEvent *event)
{
GApplication *app = g_application_get_default ();
- BjbWindowBase *self = BJB_WINDOW_BASE (user_data);
- GdkModifierType modifiers;
-
- modifiers = gtk_accelerator_get_default_mod_mask ();
+ GdkModifierType modifiers = gtk_accelerator_get_default_mod_mask ();
- /* First check for Alt <- to go back */
if ((event->key.state & modifiers) == GDK_MOD1_MASK &&
- event->key.keyval == GDK_KEY_Left &&
- (self->current_view == BJB_WINDOW_BASE_MAIN_VIEW ||
- self->current_view == BJB_WINDOW_BASE_ARCHIVE_VIEW ||
- self->current_view == BJB_WINDOW_BASE_NOTE_VIEW))
- {
- BijiItemsGroup items;
-
- items = bjb_controller_get_group (self->controller);
-
- /* Back to main view from trash bin */
- if (items == BIJI_ARCHIVED_ITEMS)
- bjb_controller_set_group (self->controller, BIJI_LIVING_ITEMS);
- /* Back to main view */
- else
- bjb_controller_set_notebook (self->controller, NULL);
-
- return TRUE;
- }
-
-
- switch (event->key.keyval)
- {
- case GDK_KEY_F1:
- if ((event->key.state & modifiers) != GDK_CONTROL_MASK)
- {
- bjb_app_help (BJB_APPLICATION (app));
- return TRUE;
- }
- break;
-
- case GDK_KEY_F10:
- if ((event->key.state & modifiers) != GDK_CONTROL_MASK)
- {
- bjb_main_toolbar_open_menu (self->main_toolbar);
- return TRUE;
- }
- break;
-
- case GDK_KEY_F2:
- case GDK_KEY_F3:
- case GDK_KEY_F4:
- case GDK_KEY_F5:
- case GDK_KEY_F6:
- case GDK_KEY_F7:
- case GDK_KEY_F8:
- case GDK_KEY_F9:
- case GDK_KEY_F11:
+ event->key.keyval == GDK_KEY_Left)
+ {
+ bjb_window_base_go_back (self);
return TRUE;
-
- case GDK_KEY_q:
- if ((event->key.state & modifiers) == GDK_CONTROL_MASK)
- {
- g_application_quit (app);
- return TRUE;
- }
- break;
-
- default:
- ;
- }
+ }
+ else if ((event->key.state & modifiers) != GDK_CONTROL_MASK &&
+ event->key.keyval == GDK_KEY_F1)
+ {
+ bjb_app_help (BJB_APPLICATION (app));
+ return TRUE;
+ }
+ else if ((event->key.state & modifiers) != GDK_CONTROL_MASK &&
+ event->key.keyval == GDK_KEY_F10)
+ {
+ bjb_main_toolbar_open_menu (self->main_toolbar);
+ return TRUE;
+ }
+ else if ((event->key.state & modifiers) == GDK_CONTROL_MASK &&
+ event->key.keyval == GDK_KEY_q)
+ {
+ g_application_quit (app);
+ return TRUE;
+ }
return FALSE;
}
@@ -442,10 +399,10 @@ bjb_window_base_constructed (GObject *obj)
/* Keys */
- g_signal_connect (GTK_WIDGET (self),
- "key-press-event",
- G_CALLBACK(on_key_pressed_cb),
- self);
+ g_signal_connect_swapped (GTK_WIDGET (self),
+ "key-press-event",
+ G_CALLBACK(on_key_pressed_cb),
+ self);
/* If a note is requested at creation, show it
* This is a specific type of window not associated with any view */
@@ -564,6 +521,38 @@ destroy_note_if_needed (BjbWindowBase *self)
self->note_view = NULL;
}
+void
+bjb_window_base_go_back (BjbWindowBase *self)
+{
+ BijiNoteObj *note = bjb_window_base_get_note (self);
+ BijiItemsGroup group = bjb_controller_get_group (self->controller);
+
+ if (!(group == BIJI_ARCHIVED_ITEMS ||
+ bjb_controller_get_notebook (self->controller) != NULL ||
+ self->current_view == BJB_WINDOW_BASE_NOTE_VIEW))
+ return;
+
+ if (bjb_window_base_is_detached (self))
+ {
+ gtk_widget_destroy (GTK_WIDGET (self));
+ return;
+ }
+
+ if (self->note)
+ {
+ if (biji_note_obj_is_trashed (note))
+ bjb_window_base_switch_to (self, BJB_WINDOW_BASE_ARCHIVE_VIEW);
+ else
+ bjb_window_base_switch_to (self, BJB_WINDOW_BASE_MAIN_VIEW);
+ bjb_main_view_update_model (self->view);
+ return;
+ }
+
+ if (group == BIJI_ARCHIVED_ITEMS)
+ bjb_controller_set_group (self->controller, BIJI_LIVING_ITEMS);
+ else
+ bjb_controller_set_notebook (self->controller, NULL);
+}
void
bjb_window_base_switch_to (BjbWindowBase *self, BjbWindowViewType type)
diff --git a/src/bjb-window-base.h b/src/bjb-window-base.h
index b991edc..6d1c287 100644
--- a/src/bjb-window-base.h
+++ b/src/bjb-window-base.h
@@ -26,6 +26,7 @@ GtkWindow *bjb_window_base_new (BijiNoteObj *note);
BjbController *bjb_window_base_get_controller (BjbWindowBase *window ) ;
+void bjb_window_base_go_back (BjbWindowBase *self);
void bjb_window_base_switch_to (BjbWindowBase *bwb, BjbWindowViewType type);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]