summaryrefslogtreecommitdiffabout
path: root/korganizer
Side-by-side diff
Diffstat (limited to 'korganizer') (more/less context) (show whitespace changes)
-rw-r--r--korganizer/koagenda.cpp133
-rw-r--r--korganizer/koagenda.h1
2 files changed, 63 insertions, 71 deletions
diff --git a/korganizer/koagenda.cpp b/korganizer/koagenda.cpp
index ec81d44..e8b7c94 100644
--- a/korganizer/koagenda.cpp
+++ b/korganizer/koagenda.cpp
@@ -397,7 +397,15 @@ bool KOAgenda::eventFilter_mouse(QObject *object, QMouseEvent *me)
static int startY = 0;
- static bool block = true;
+ static int blockmoveDist = ( QApplication::desktop()->width() < 480 ? 15 : 20 );
+ static bool blockMoving = true;
+ static bool leftMouseDown = false;
+ static bool rightMouseDown = false;
switch (me->type()) {
case QEvent::MouseButtonPress:
- //qDebug("QEvent::MouseButtonPress: ");
- // kdDebug() << "koagenda: filtered button press" << endl;
+ if (me->button() == LeftButton)
+ leftMouseDown = true;
+ else if (me->button() == RightButton)
+ rightMouseDown = true;
+ blockMoving = true;
+ startX = viewportPos.x();
+ startY = viewportPos.y();
if (object != viewport()) {
@@ -407,6 +415,4 @@ bool KOAgenda::eventFilter_mouse(QObject *object, QMouseEvent *me)
selectItem(mClickedItem);
- // emit showIncidencePopupSignal(mClickedItem->incidence());
}
- //mItemPopup->popup(QCursor::pos());
- } else {
+ } else if (me->button() == LeftButton) {
mActionItem = (KOAgendaItem *)object;
@@ -428,5 +434,2 @@ bool KOAgenda::eventFilter_mouse(QObject *object, QMouseEvent *me)
startItemAction(viewportPos);
- startX = viewportPos.x();
- startY = viewportPos.y();
- block = true;
}
@@ -434,10 +437,6 @@ bool KOAgenda::eventFilter_mouse(QObject *object, QMouseEvent *me)
}
- } else {
+ } else { // ---------- viewport()
selectItem(0);
mActionItem = 0;
- if (me->button() == RightButton ) {
- blockNewEvent = true;
- block = false;
- } else {
- blockNewEvent = false;
+ if (me->button() == LeftButton ) {
setCursor(arrowCursor);
@@ -449,32 +448,5 @@ bool KOAgenda::eventFilter_mouse(QObject *object, QMouseEvent *me)
case QEvent::MouseButtonRelease:
- //qDebug("QEvent::MouseButtonRelease: %d",blockNewEvent );
- if (me->button() == RightButton && blockNewEvent && !block) {
- int x,y;
- viewportToContents(viewportPos.x(),viewportPos.y(),x,y);
- int gx,gy;
- contentsToGrid(x,y,gx,gy);
- if ( object == viewport() ) {
- if ( mCurrentCellY < mStartCellY +1 ) {
- //qDebug("mCurrentCellY %d mStartCellY %d ", mCurrentCellY,mStartCellY);
- mCurrentCellX = gx;
- mCurrentCellY = gy;
- mStartCellX = gx;
- mStartCellY = gy;
- mNewItemPopup->popup( viewport()->mapToGlobal( me->pos() ) );
- break;
- } else {
- blockNewEvent = false;
- }
- } else {
- mClickedItem = (KOAgendaItem *)object;
- if (mActionItem ) {
- endItemAction();
- }
- if (mClickedItem) {
- selectItem(mClickedItem);
- emit showIncidencePopupSignal(mClickedItem->incidence());
- }
- }
- } else if (me->button() == RightButton && block ) {
if (object != viewport()) {
+ if (me->button() == RightButton) {
+ if ( blockMoving ) {
mClickedItem = (KOAgendaItem *)object;
@@ -483,2 +455,3 @@ bool KOAgenda::eventFilter_mouse(QObject *object, QMouseEvent *me)
}
+ leftMouseDown = false; // no more leftMouse computation
if (mClickedItem) {
@@ -488,5 +461,3 @@ bool KOAgenda::eventFilter_mouse(QObject *object, QMouseEvent *me)
}
- break;
- }
- block = true;
+ } else if (me->button() == LeftButton && leftMouseDown) {
if (mActionItem) {
@@ -507,8 +478,31 @@ bool KOAgenda::eventFilter_mouse(QObject *object, QMouseEvent *me)
endItemAction();
- } else if ( mActionType == SELECT ) {
- if (me->button() == RightButton ) {
- } else {
- endSelectAction( !blockNewEvent );
}
}
+
+ } else { // ---------- viewport()
+ if (me->button() == RightButton) { //right click
+ if ( blockMoving ) { // we did mot moved the mouse much - popup menu
+ if ( leftMouseDown ) { // we have a simulated right click - clear left mouse action
+ endSelectAction( false ); // do not emit new event signal
+ leftMouseDown = false; // no more leftMouse computation
+ }
+ int x,y;
+ viewportToContents(viewportPos.x(),viewportPos.y(),x,y);
+ int gx,gy;
+ contentsToGrid(x,y,gx,gy);
+ mCurrentCellX = gx;
+ mCurrentCellY = gy;
+ mStartCellX = gx;
+ mStartCellY = gy;
+ mNewItemPopup->popup( viewport()->mapToGlobal( me->pos() ) );
+ }
+ }
+ else if (me->button() == LeftButton && leftMouseDown ) { //left click
+ endSelectAction( true ); // emit new event signal
+ }
+ }
+ if (me->button() == LeftButton)
+ leftMouseDown = false;
+ else if (me->button() == RightButton)
+ rightMouseDown = false;
break;
@@ -516,11 +510,5 @@ bool KOAgenda::eventFilter_mouse(QObject *object, QMouseEvent *me)
case QEvent::MouseMove:
- if (object != viewport()) {
- KOAgendaItem *moveItem = (KOAgendaItem *)object;
- //qDebug("moveItem %d ",moveItem );
- if (!moveItem->incidence()->isReadOnly() /*&&
- !moveItem->incidence()->recurrence()->doesRecur()*/ )
- if (!mActionItem)
- setNoActionCursor(moveItem,viewportPos);
- else {
- if ( block ) {
+ if ( !rightMouseDown && !leftMouseDown )
+ return true;
+ if ( blockMoving ) {
int dX, dY;
@@ -532,14 +520,18 @@ bool KOAgenda::eventFilter_mouse(QObject *object, QMouseEvent *me)
dY = -dY;
- int diff = 30;
- if ( QApplication::desktop()->width() < 480 )
- diff = 15;
- // qDebug(" %d %d ",dX, dY );
- if ( dX > diff || dY > diff ) {
- block = false;
+ //qDebug("%d %d %d ", dX, dY , blockmoveDist );
+ if ( dX > blockmoveDist || dY > blockmoveDist ) {
+ blockMoving = false;
}
}
- if ( !block )
+ if (object != viewport()) {
+ KOAgendaItem *moveItem = (KOAgendaItem *)object;
+ if (!moveItem->incidence()->isReadOnly() ) {
+ if (!mActionItem)
+ setNoActionCursor(moveItem,viewportPos);
+ else {
+ if ( !blockMoving )
performItemAction(viewportPos);
}
- } else {
+ }
+ } else { // ---------- viewport()
if ( mActionType == SELECT ) {
@@ -571,3 +563,2 @@ bool KOAgenda::eventFilter_mouse(QObject *object, QMouseEvent *me)
}
-
return true;
@@ -688,5 +679,7 @@ void KOAgenda::endSelectAction( bool emitNewEvent )
emit newTimeSpanSignal(mStartCellX,mStartCellY,mCurrentCellX,mCurrentCellY);
- if ( emitNewEvent && mStartCellY < mCurrentCellY )
+ if ( emitNewEvent && mStartCellY < mCurrentCellY ) {
+ qDebug("ew event signal ");
emit newEventSignal(mStartCellX,mStartCellY,mCurrentCellX,mCurrentCellY);
}
+}
diff --git a/korganizer/koagenda.h b/korganizer/koagenda.h
index 2069b22..f3f1772 100644
--- a/korganizer/koagenda.h
+++ b/korganizer/koagenda.h
@@ -212,3 +212,2 @@ class KOAgenda : public QScrollView
private:
- bool blockNewEvent;
void init();