[california/wip/725767-week] Scroll to 6am in week view, unless current date, switch to curr. time
- From: Jim Nelson <jnelson src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [california/wip/725767-week] Scroll to 6am in week view, unless current date, switch to curr. time
- Date: Thu, 22 May 2014 22:30:06 +0000 (UTC)
commit 6e8599545b36c9bcbc6747ad3531909bb00ee79c
Author: Jim Nelson <jim yorba org>
Date: Thu May 22 15:29:39 2014 -0700
Scroll to 6am in week view, unless current date, switch to curr. time
src/view/week/week-grid.vala | 26 ++++++++++++++++++++++++--
src/view/week/week-pane.vala | 4 ++--
2 files changed, 26 insertions(+), 4 deletions(-)
---
diff --git a/src/view/week/week-grid.vala b/src/view/week/week-grid.vala
index d55da22..8936e98 100644
--- a/src/view/week/week-grid.vala
+++ b/src/view/week/week-grid.vala
@@ -44,8 +44,9 @@ internal class Grid : Gtk.Box {
private Gee.HashMap<Calendar.Date, AllDayCell> date_to_all_day = new Gee.HashMap<Calendar.Date,
AllDayCell>();
private Toolkit.ButtonConnector day_pane_button_connector = new Toolkit.ButtonConnector();
- Gtk.ScrolledWindow scrolled_panes;
- Gtk.Widget right_spacer;
+ private Gtk.ScrolledWindow scrolled_panes;
+ private Gtk.Widget right_spacer;
+ private bool vadj_init = false;
public Grid(Controller owner, Calendar.Week week) {
Object(orientation: Gtk.Orientation.VERTICAL, spacing: 0);
@@ -160,6 +161,27 @@ internal class Grid : Gtk.Box {
return false;
});
+
+ // watch for vertical adjustment to initialize to set the starting scroll position
+ scrolled_panes.vadjustment.changed.connect(on_vadjustment_changed);
+ }
+
+ private void on_vadjustment_changed(Gtk.Adjustment vadj) {
+ // wait for vadjustment to look like something reasonable; also, only do this once
+ if (vadj.upper <= 1.0 || vadj_init)
+ return;
+
+ // scroll to 6am when first created, unless in the current date, in which case scroll to
+ // current time
+ Calendar.WallTime start_time = Calendar.System.today in week
+ ? new Calendar.WallTime.from_exact_time(Calendar.System.now)
+ : new Calendar.WallTime(6, 0, 0);
+
+ // scroll there
+ scrolled_panes.vadjustment.value = date_to_panes.get(week.start_date).get_line_y(start_time);
+
+ // don't do this again
+ vadj_init = true;
}
private bool on_draw_top_line(Gtk.Widget widget, Cairo.Context ctx) {
diff --git a/src/view/week/week-pane.vala b/src/view/week/week-pane.vala
index 96292fc..b9603ec 100644
--- a/src/view/week/week-pane.vala
+++ b/src/view/week/week-pane.vala
@@ -92,7 +92,7 @@ internal abstract class Pane : Gtk.EventBox {
*
* If displaying text, use { link get_text_y}, as that will deduct padding.
*/
- protected int get_line_y(Calendar.WallTime wall_time) {
+ public int get_line_y(Calendar.WallTime wall_time) {
// every hour gets two "lines" of text
int line_y = line_height_px * 2 * wall_time.hour;
@@ -112,7 +112,7 @@ internal abstract class Pane : Gtk.EventBox {
*
* Use this when displaying text. Drawing lines, borders, etc. should use { link get_line_y}.
*/
- protected int get_text_y(Calendar.WallTime wall_time) {
+ public int get_text_y(Calendar.WallTime wall_time) {
return get_line_y(wall_time) + Palette.LINE_PADDING_PX;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]