예제 #1
0
void WebView::mouseWheelTimerFired()
{
   pMouseWheelTimer_->stop();

   if (mouseWheelEvents_.empty())
      return;

   int totalDelta = 0;
   for (int i = 0; i < mouseWheelEvents_.length(); i++)
   {
      totalDelta += mouseWheelEvents_.at(i).delta();
   }
   QWheelEvent event = mouseWheelEvents_.last();
   mouseWheelEvents_.clear();

   while (totalDelta != 0)
   {
      // If the absolute delta value exceeds 5000, Ace editor
      // goes into a super fine granularity mode that we need
      // to avoid
      const int MAX_ABS_DELTA_VALUE = 5000;

      int thisDelta = totalDelta;
      if (thisDelta > MAX_ABS_DELTA_VALUE)
      {
         thisDelta = MAX_ABS_DELTA_VALUE;
      }
      else if (thisDelta < -MAX_ABS_DELTA_VALUE)
      {
         thisDelta = -MAX_ABS_DELTA_VALUE;
      }
      totalDelta -= thisDelta;

      QWheelEvent totalEvent(event.pos(),
                             event.globalPos(),
                             thisDelta,
                             event.buttons(),
                             event.modifiers(),
                             event.orientation());
      this->QWebView::wheelEvent(&totalEvent);
   }
}
예제 #2
0
void WebView::mouseWheelTimerFired()
{
   pMouseWheelTimer_->stop();

   if (mouseWheelEvents_.empty())
      return;

   int totalDelta = 0;
   for (int i = 0; i < mouseWheelEvents_.length(); i++)
   {
      totalDelta += mouseWheelEvents_.at(i).delta();
   }
   QWheelEvent event = mouseWheelEvents_.last();
   mouseWheelEvents_.clear();
   QWheelEvent totalEvent(event.pos(),
                          event.globalPos(),
                          totalDelta,
                          event.buttons(),
                          event.modifiers(),
                          event.orientation());
   this->QWebView::wheelEvent(&totalEvent);
}