Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/calendar/ChangeLog,v
retrieving revision 1.1819
diff -u -b -B -r1.1819 ChangeLog
--- ChangeLog	14 Jul 2003 18:46:04 -0000	1.1819
+++ ChangeLog	16 Jul 2003 07:42:58 -0000
@@ -1,3 +1,11 @@
+2003-07-16  Andrew Wu <Yang.Wu@sun.com>
+	
+	Fixes #45772
+	
+	* gui/gnome-cal.c(gnome_calendar_goto_date): implemented Alt+Left/Right to 
+	go to the same day of the previous/next week.
+	  gui/gnome-cal.h:add two element in GnomeCalendarGotoDateType.
+
 2003-07-14  Rodrigo Moya <rodrigo@ximian.com>
 
 	Fixes #41676
Index: gui/gnome-cal.h
===================================================================
RCS file: /cvs/gnome/evolution/calendar/gui/gnome-cal.h,v
retrieving revision 1.82
diff -u -b -B -r1.82 gnome-cal.h
--- gui/gnome-cal.h	2 Jul 2003 01:33:35 -0000	1.82
+++ gui/gnome-cal.h	16 Jul 2003 07:42:58 -0000
@@ -65,6 +65,8 @@
   GNOME_CAL_GOTO_LAST_DAY_OF_MONTH,
   GNOME_CAL_GOTO_FIRST_DAY_OF_WEEK,
   GNOME_CAL_GOTO_LAST_DAY_OF_WEEK,
+  GNOME_CAL_GOTO_SAME_DAY_OF_PREVIOUS_WEEK,
+  GNOME_CAL_GOTO_SAME_DAY_OF_NEXT_WEEK
 } GnomeCalendarGotoDateType;
 
 struct _GnomeCalendar {
Index: gui/gnome-cal.c
===================================================================
RCS file: /cvs/gnome/evolution/calendar/gui/gnome-cal.c,v
retrieving revision 1.244
diff -u -b -B -r1.244 gnome-cal.c
--- gui/gnome-cal.c	2 Jul 2003 01:33:35 -0000	1.244
+++ gui/gnome-cal.c	16 Jul 2003 07:43:56 -0000
@@ -326,6 +325,28 @@
 				      "goto_date", 1,
 				      G_TYPE_ENUM,
 				      GNOME_CAL_GOTO_LAST_DAY_OF_WEEK);
+
+	/*Alt+Left/Right, go to the same day of the previous/next week*/
+	gtk_binding_entry_add_signal (binding_set,GDK_Left,
+				      GDK_MOD1_MASK,
+				      "goto_date",1,
+				      G_TYPE_ENUM,
+				      GNOME_CAL_GOTO_SAME_DAY_OF_PREVIOUS_WEEK);
+	gtk_binding_entry_add_signal (binding_set,GDK_KP_Left,
+				      GDK_MOD1_MASK,
+				      "goto_date",1,
+				      G_TYPE_ENUM,
+				      GNOME_CAL_GOTO_SAME_DAY_OF_PREVIOUS_WEEK);
+	gtk_binding_entry_add_signal (binding_set,GDK_Right,
+				      GDK_MOD1_MASK,
+				      "goto_date",1,
+				      G_TYPE_ENUM,
+				      GNOME_CAL_GOTO_SAME_DAY_OF_NEXT_WEEK);
+	gtk_binding_entry_add_signal (binding_set,GDK_KP_Right,
+				      GDK_MOD1_MASK,
+				      "goto_date",1,
+				      G_TYPE_ENUM,
+				      GNOME_CAL_GOTO_SAME_DAY_OF_NEXT_WEEK);
 }
 
 /* Callback used when the calendar query reports of an updated object */
@@ -1121,6 +1143,21 @@
 						1, priv->zone);
 		need_updating = TRUE;
 		break;
+	case GNOME_CAL_GOTO_SAME_DAY_OF_PREVIOUS_WEEK:
+		priv->selection_start_time = time_add_day_with_zone (start_time,
+								     -7, priv->zone);
+		priv->selection_end_time = time_add_day_with_zone (end_time,
+								   -7,priv->zone);
+		need_updating = TRUE;
+		break;
+	case GNOME_CAL_GOTO_SAME_DAY_OF_NEXT_WEEK:
+		priv->selection_start_time = time_add_day_with_zone (start_time,
+								     7, priv->zone);
+		priv->selection_end_time = time_add_day_with_zone (end_time,
+								   7,priv->zone);
+		need_updating = TRUE;
+		break;
+
 	default:
 		break;
 	}
