/***************************************************************************
- * Copyright (C) 2005-08 by the Quassel Project *
+ * Copyright (C) 2005-09 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
_chatView(parent),
_idString(idString),
_model(model),
- _singleBufferScene(false),
+ _singleBufferId(BufferId()),
_sceneRect(0, 0, width, 0),
_firstLineRow(-1),
_viewportHeight(0),
_leftButtonPressed(false)
{
MessageFilter *filter = qobject_cast<MessageFilter*>(model);
- if(filter) {
- _singleBufferScene = filter->isSingleBufferFilter();
+ if(filter && filter->isSingleBufferFilter()) {
+ _singleBufferId = filter->singleBufferId();
}
ChatViewSettings defaultSettings;
ChatItem *item = chatItemAt(pos);
if(item)
item->addActionsToMenu(&menu, item->mapFromScene(pos));
+ else
+ // no item -> default scene actions
+ Client::mainUi()->actionProvider()->addActions(&menu, filter(), BufferId());
menu.exec(event->screenPos());
clearSelection();
}
if(_clickMode != NoClick && _clickTimer.isActive()) {
- _clickMode = (ClickMode)(_clickMode == TripleClick ? DoubleClick : _clickMode + 1);
+ switch(_clickMode) {
+ case NoClick: _clickMode = SingleClick; break;
+ case SingleClick: _clickMode = DoubleClick; break;
+ case DoubleClick: _clickMode = TripleClick; break;
+ case TripleClick: _clickMode = DoubleClick; break;
+ case DragStartClick: break;
+ }
handleClick(Qt::LeftButton, _clickPos);
} else {
_clickMode = SingleClick;
}
void ChatScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) {
- if(!event->buttons() & Qt::LeftButton) {
+ if(event->button() == Qt::LeftButton && _leftButtonPressed) {
_leftButtonPressed = false;
if(_clickMode != NoClick) {
if(_clickMode == SingleClick)