[gnome-calendar/wip/keyboard-navigation] window: move forward/backward according to locale



commit 1f666ba40527363e6777e7817ca4e5ce290ba437
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Thu Jun 4 15:44:48 2015 -0300

    window: move forward/backward according to locale

 src/gcal-window.c |   12 ++++++++----
 1 files changed, 8 insertions(+), 4 deletions(-)
---
diff --git a/src/gcal-window.c b/src/gcal-window.c
index 5cd4bb9..a0d89cc 100644
--- a/src/gcal-window.c
+++ b/src/gcal-window.c
@@ -97,6 +97,7 @@ typedef struct
   icaltimetype        *active_date;
 
   icaltimetype        *current_date;
+  gboolean             rtl;
 
   /* states */
   gboolean             new_event_mode;
@@ -429,8 +430,10 @@ date_updated (GtkButton  *button,
 
   icaltimetype *new_date;
   gboolean move_back, move_today;
+  gint factor;
 
   priv = gcal_window_get_instance_private (GCAL_WINDOW (user_data));
+  factor = priv->rtl ? - 1 : 1;
 
   move_today = priv->today_button == (GtkWidget*) button;
   move_back = priv->back_button == (GtkWidget*) button;
@@ -446,17 +449,17 @@ date_updated (GtkButton  *button,
       switch (priv->active_view)
         {
         case GCAL_WINDOW_VIEW_DAY:
-          new_date->day += 1 * (move_back ? -1 : 1);
+          new_date->day += 1 * factor * (move_back ? -1 : 1);
           break;
         case GCAL_WINDOW_VIEW_WEEK:
-          new_date->day += 7 * (move_back ? -1 : 1);
+          new_date->day += 7 * factor * (move_back ? -1 : 1);
           break;
         case GCAL_WINDOW_VIEW_MONTH:
           new_date->day = 1;
-          new_date->month += 1 * (move_back ? -1 : 1);
+          new_date->month += 1 * factor * (move_back ? -1 : 1);
           break;
         case GCAL_WINDOW_VIEW_YEAR:
-          new_date->year += 1 * (move_back ? -1 : 1);
+          new_date->year += 1 * factor * (move_back ? -1 : 1);
           break;
         case GCAL_WINDOW_VIEW_LIST:
         case GCAL_WINDOW_VIEW_SEARCH:
@@ -1410,6 +1413,7 @@ gcal_window_init (GcalWindow *self)
   GcalWindowPrivate *priv = gcal_window_get_instance_private (self);
 
   priv->active_date = g_new0 (icaltimetype, 1);
+  priv->rtl = gtk_widget_get_direction (GTK_WIDGET (self)) == GTK_TEXT_DIR_RTL;
 
   gtk_widget_init_template (GTK_WIDGET (self));
 }


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