From 49e77dd55e13e0bcfe3d4d1fd1bd10c37b31533a Mon Sep 17 00:00:00 2001 From: zeljko Date: Sun, 23 Dec 2012 06:52:03 +0000 Subject: [PATCH] Qt: fixed events when month and year are changed in TCalendar. issue #23528 git-svn-id: trunk@39625 - --- lcl/interfaces/qt/qtwidgets.pas | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/lcl/interfaces/qt/qtwidgets.pas b/lcl/interfaces/qt/qtwidgets.pas index cc687117a8..fa7e515512 100644 --- a/lcl/interfaces/qt/qtwidgets.pas +++ b/lcl/interfaces/qt/qtwidgets.pas @@ -15377,6 +15377,8 @@ end; procedure TQtCalendar.signalCurrentPageChanged(p1, p2: Integer); cdecl; var Msg: TLMessage; + ADate: QDateH; + HasChanges: Boolean; begin {$IFDEF VerboseQt} writeln('TQtCalendar.SignalCurrentPageChanged p1=',p1,' p2=',p2); @@ -15384,16 +15386,33 @@ begin if InUpdate then exit; FillChar(Msg, SizeOf(Msg), #0); + HasChanges := (AYear <> p1) or (AMonth <> p2); if AYear <> p1 then begin Msg.Msg := LM_YEARCHANGED; DeliverMessage(Msg); + Msg.Msg := LM_CHANGED; + DeliverMessage(Msg); end; if AMonth <> p2 then begin Msg.Msg := LM_MONTHCHANGED; DeliverMessage(Msg); + Msg.Msg := LM_CHANGED; + DeliverMessage(Msg); + end; + + if HasChanges then + begin + ADate := QDate_create(); + try + QCalendarWidget_selectedDate(QCalendarWidgetH(Widget), ADate); + QDate_setYMD(ADate, p1, p2, QDate_day(ADate)); + SetSelectedDate(ADate); + finally + QDate_destroy(ADate); + end; end; end;