// Optimize: cache previous child here to make it faster? How to invalidate?
void KstViewWidget::mouseMoveEvent(QMouseEvent *e) {
  if (_view->viewMode() == KstTopLevelView::DisplayMode) {
    KstViewObjectPtr vo;

    if (_view->mouseGrabbed()) {
      vo = _view->mouseGrabber();
    } else {
      vo = findChildFor(e->pos());
    }

    if (KstApp::inst()->dataMode()) {
      if (vo.data() != _vo_datamode) {
        _vo_datamode = vo.data();
        paint();
      }
    } else {
      _vo_datamode = 0L;
    }

    if (vo) {
      //kstdDebug() << "Found mouse handler " << vo->tagName() << endl;
      vo->mouseMoveEvent(this, e);
    } else {
      setCursor(QCursor(Qt::ArrowCursor));
    }
  } else {
    if ((e->state() & Qt::MouseButtonMask) == 0) {
      switch (_view->viewMode()) {
        case KstTopLevelView::LabelMode:
          setCursor(QCursor(Qt::IbeamCursor));
          break;
        case KstTopLevelView::CreateMode:
          setCursor(QCursor(Qt::ArrowCursor));
          break;
        default:
          break;
      }
      _view->updateFocus(e->pos());
      e->accept();
    } else if (e->state() & Qt::LeftButton) {
      //setCursor(QCursor(Qt::ArrowCursor));
      _view->pressMove(e->pos(), e->state() & Qt::ShiftButton, e->state() & Qt::AltButton);
      e->accept();
    }
  }
}
예제 #2
0
KstBindViewObject::KstBindViewObject(KJS::ExecState *exec, KstViewObjectPtr d, const char *name)
: KstBindObject(exec, d.data(), name ? name : "ViewObject") {
  KJS::Object o(this);
  addBindings(exec, o);
}