Hi,

the current WCalendar implementation lets you select dates which are earlier then the bottom or later than the top date. The attached patches fixes this problem.

Regards,
Stefan
*** wt-3.2.1-orig/src/Wt/WCalendar.C	2012-09-21 16:07:39.000000000 +0200
--- wt-3.2.1/src/Wt/WCalendar.C	2012-09-21 16:27:38.000000000 +0200
***************
*** 293,300 ****
  
    std::string styleClass;
  
!   if ((!bottom_.isNull() && date < bottom_) || 
!        (!top_.isNull() && date > top_))
      styleClass += " Wt-cal-oor";
    else if (date.month() != currentMonth())
      styleClass += " Wt-cal-oom";
--- 293,299 ----
  
    std::string styleClass;
  
!   if (isInvalid(date))
      styleClass += " Wt-cal-oor";
    else if (date.month() != currentMonth())
      styleClass += " Wt-cal-oom";
***************
*** 389,407 ****
    }
  }
  
  void WCalendar::cellClicked(Coordinate weekday)
  {
    date dt = dateForCell(weekday.i, weekday.j);
!   clicked().emit(WDate(dt.year(), dt.month(), dt.day()));
    
    if (selectionMode_ != ExtendedSelection && singleClickSelect_) 
!     activated().emit(WDate(dt.year(), dt.month(), dt.day()));
  }
  
  void WCalendar::cellDblClicked(Coordinate weekday)
  {
    date dt = dateForCell(weekday.i, weekday.j);
!   activated().emit(WDate(dt.year(), dt.month(), dt.day()));
  }
  
  date WCalendar::dateForCell(int week, int dayOfWeek)
--- 388,420 ----
    }
  }
  
+ bool WCalendar::isInvalid(const WDate& dt)
+ {
+   return ((!bottom_.isNull() && dt < bottom_) || 
+     (!top_.isNull() && dt > top_));
+ }
+ 
  void WCalendar::cellClicked(Coordinate weekday)
  {
    date dt = dateForCell(weekday.i, weekday.j);
!   WDate d(dt.year(), dt.month(), dt.day());
!   if (isInvalid(d))
!     return;
! 
!   clicked().emit(d);
    
    if (selectionMode_ != ExtendedSelection && singleClickSelect_) 
!     activated().emit(d);
  }
  
  void WCalendar::cellDblClicked(Coordinate weekday)
  {
    date dt = dateForCell(weekday.i, weekday.j);
!   WDate d(dt.year(), dt.month(), dt.day());
!   if (isInvalid(d))
!     return;
! 
!   activated().emit(d);
  }
  
  date WCalendar::dateForCell(int week, int dayOfWeek)
*** wt-3.2.1-orig/src/Wt/WCalendar	2012-09-21 16:07:39.000000000 +0200
--- wt-3.2.1/src/Wt/WCalendar	2012-09-21 16:23:44.000000000 +0200
***************
*** 387,392 ****
--- 387,393 ----
  
    void selectInCurrentMonth(const WDate& d);
  
+   bool isInvalid(const WDate& d);
    void cellClicked(Coordinate c);
    void cellDblClicked(Coordinate c);
  };
------------------------------------------------------------------------------
Got visibility?
Most devs has no idea what their production app looks like.
Find out how fast your code is with AppDynamics Lite.
http://ad.doubleclick.net/clk;262219671;13503038;y?
http://info.appdynamics.com/FreeJavaPerformanceDownload.html
_______________________________________________
witty-interest mailing list
witty-interest@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/witty-interest

Reply via email to