summaryrefslogtreecommitdiffabout
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/datenavigatorcontainer.cpp2
-rw-r--r--korganizer/kodaymatrix.cpp58
2 files changed, 45 insertions, 15 deletions
diff --git a/korganizer/datenavigatorcontainer.cpp b/korganizer/datenavigatorcontainer.cpp
index d09f484..b9bd1b9 100644
--- a/korganizer/datenavigatorcontainer.cpp
+++ b/korganizer/datenavigatorcontainer.cpp
@@ -144,7 +144,7 @@ void DateNavigatorContainer::setBaseDates()
KDateNavigator *n;
bool doRepaint = false; // skip first repaint
for( n = mExtraViews.first(); n; n = mExtraViews.next() ) {
- baseDate = baseDate.addDays( baseDate.daysInMonth () );
+ baseDate = baseDate.addDays( baseDate.daysInMonth () - baseDate.day() +1 );
n->setBaseDate( baseDate, doRepaint );
doRepaint = true;
}
diff --git a/korganizer/kodaymatrix.cpp b/korganizer/kodaymatrix.cpp
index 1cde616..619ae39 100644
--- a/korganizer/kodaymatrix.cpp
+++ b/korganizer/kodaymatrix.cpp
@@ -271,7 +271,11 @@ void KODayMatrix::addSelectedDaysTo(DateList& selDays)
void KODayMatrix::setSelectedDaysFrom(const QDate& start, const QDate& end)
{
mSelStart = startdate.daysTo(start);
+ if ( mSelStart < 0 )
+ mSelStart = 0;
mSelEnd = startdate.daysTo(end);
+ if ( mSelEnd < 0 )
+ clearSelection();
}
void KODayMatrix::clearSelection()
{
@@ -638,32 +642,54 @@ void KODayMatrix::paintEvent(QPaintEvent * pevent)
p.fillRect(pevent->rect(), mDefaultBackColor);
p.setPen(mDefaultTextColor);
p.drawRect(0, 0, sz.width()+1, sz.height()+1);
-
+ int mSelStartT = mSelStart;
+ int mSelEndT = mSelEnd;
+ if ( mSelEndT >= NUMDAYS )
+ mSelEndT = NUMDAYS-1;
// draw selected days with highlighted background color
if (mSelStart != NOSELECTION) {
-
- row = mSelStart/7;
- col = mSelStart -row*7;
+ bool skip = false;
+ if ( ! mouseDown ) {
+ int mo = days[20].month();
+ //qDebug("-- %d %d ", mSelStartT, mSelEndT);
+ //qDebug("%d %d %d - d %d", mo, days[mSelStartT].month() , days[mSelEndT].month(), days[mSelEndT].day() );
+ if ( days[mSelStartT].month() > mo || days[mSelEndT].month() < mo ) {
+ skip = true;
+ } else {
+ if ( days[mSelStartT].month() != mo ) {
+ int add = days[mSelStartT].daysInMonth ()-days[mSelStartT].day();
+ mSelStartT += add +1;
+ }
+ if ( days[mSelEndT].month() != mo ) {
+ int sub = days[mSelEndT].day();
+ mSelEndT -= sub ;
+ }
+ }
+ }
+ if ( ! skip ) {
+ row = mSelStartT/7;
+ col = mSelStartT -row*7;
QColor selcol = KOPrefs::instance()->mHighlightColor;
- if (row == mSelEnd/7) {
+ if (row == mSelEndT/7) {
// Single row selection
- p.fillRect(isRTL ? (7 - (mSelEnd-mSelStart+1) - col)*dwidth : col*dwidth,
- row*dheight, (mSelEnd-mSelStart+1)*dwidth, dheight, selcol);
+ p.fillRect(isRTL ? (7 - (mSelEndT-mSelStartT+1) - col)*dwidth : col*dwidth,
+ row*dheight, (mSelEndT-mSelStartT+1)*dwidth, dheight, selcol);
} else {
// draw first row to the right
p.fillRect(isRTL ? 0 : col*dwidth, row*dheight, (7-col)*dwidth,
dheight, selcol);
// draw full block till last line
- selh = mSelEnd/7-row;
+ selh = mSelEndT/7-row;
if (selh > 1) {
p.fillRect(0, (row+1)*dheight, 7*dwidth, (selh-1)*dheight,selcol);
}
- // draw last block from left to mSelEnd
- selw = mSelEnd-7*(mSelEnd/7)+1;
+ // draw last block from left to mSelEndT
+ selw = mSelEndT-7*(mSelEndT/7)+1;
p.fillRect(isRTL ? (7-selw)*dwidth : 0, (row+selh)*dheight,
selw*dwidth, dheight, selcol);
}
+ }
}
// iterate over all days in the matrix and draw the day label in appropriate colors
@@ -683,9 +709,13 @@ void KODayMatrix::paintEvent(QPaintEvent * pevent)
}
p.setPen(actcol);
}
-
+ if (actcol == mDefaultTextColorShaded) {
+ if ( ! mouseDown ) {
+ continue;
+ }
+ }
//Reset pen color after selected days block
- if (i == mSelEnd+1) {
+ if (i == mSelEndT+1) {
p.setPen(actcol);
}
@@ -704,7 +734,7 @@ void KODayMatrix::paintEvent(QPaintEvent * pevent)
}
}
//draw gray rectangle for today if in selection
- if (i >= mSelStart && i <= mSelEnd) {
+ if (i >= mSelStartT && i <= mSelEndT) {
QColor grey("grey");
mTodayPen.setColor(grey);
}
@@ -735,7 +765,7 @@ void KODayMatrix::paintEvent(QPaintEvent * pevent)
// draw selected days with special color
// DO NOT specially highlight holidays in selection !
- if (i >= mSelStart && i <= mSelEnd) {
+ if (i >= mSelStartT && i <= mSelEndT) {
;//p.setPen(mSelectedDaysColor);
}