[california/wip/732029-gtk-312] Set popover point at center of week selection rectangle



commit 7cad2473ba278cfa39901e15ee208f99477ce082
Author: Jim Nelson <jim yorba org>
Date:   Fri Jul 18 16:14:44 2014 -0700

    Set popover point at center of week selection rectangle

 src/view/week/week-day-pane.vala |   11 +++++++++++
 src/view/week/week-grid.vala     |    4 ++--
 2 files changed, 13 insertions(+), 2 deletions(-)
---
diff --git a/src/view/week/week-day-pane.vala b/src/view/week/week-day-pane.vala
index 5090355..c5d3c41 100644
--- a/src/view/week/week-day-pane.vala
+++ b/src/view/week/week-day-pane.vala
@@ -36,6 +36,11 @@ internal class DayPane : Pane, Common.InstanceContainer {
     public Calendar.WallTime? selection_end { get; private set; }
     
     /**
+     * The center point of the current selection.
+     */
+    public Gdk.Point? selection_point { get; private set; default = null; }
+    
+    /**
      * @inheritDoc
      */
     public int event_count { get { return days_events.size; } }
@@ -275,6 +280,12 @@ internal class DayPane : Pane, Common.InstanceContainer {
             ctx.rectangle(0, y, get_allocated_width(), height);
             Gdk.cairo_set_source_rgba(ctx, palette.selection);
             ctx.fill();
+            
+            selection_point = Gdk.Point();
+            selection_point.x = get_allocated_width() / 2;
+            selection_point.y = y + (height / 2);
+        } else {
+            selection_point = null;
         }
         
         return true;
diff --git a/src/view/week/week-grid.vala b/src/view/week/week-grid.vala
index 1920b6c..dda1fba 100644
--- a/src/view/week/week-grid.vala
+++ b/src/view/week/week-grid.vala
@@ -381,10 +381,10 @@ internal class Grid : Gtk.Box {
         DayPane day_pane = (DayPane) widget;
         
         Calendar.ExactTimeSpan? selection_span = day_pane.get_selection_span();
-        if (selection_span == null)
+        if (selection_span == null || day_pane.selection_point == null)
             return Toolkit.PROPAGATE;
         
-        owner.request_create_timed_event(selection_span, widget, point);
+        owner.request_create_timed_event(selection_span, widget, day_pane.selection_point);
         
         return Toolkit.STOP;
     }


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