Source Code (Use browser search to find items of interest.)

Class Index

khexedit'CDragManager (./kdeutils/khexedit/hexviewwidget.h:65)

class CDragManager : public QWidget
{
  Q_OBJECT
    
  public:
    enum EDragActivateMode
    {
      Movement = 0,
      Timer = 1
    };

  public:
    CDragManager( void );
    void setActivateMode( EDragActivateMode mode );
    void setup( int x, int y );
    bool start( QMouseEvent *e );
    bool clear( void );

  protected:
    virtual void timerEvent( QTimerEvent *e );

  private:
    void removeTimer( void );
    void setupTimer( void );

  signals:
    void startDrag( bool asText );

  private:
    EDragActivateMode mActivateMode;
    bool   mPending;
    int    mTimerId;
    QPoint mOrigin;
};




khexedit'CDragManager::CDragManager() (./kdeutils/khexedit/hexviewwidget.cc:55)

CDragManager::CDragManager( void )
{
  mActivateMode = Movement;
  mPending = false;
  mTimerId = 0;
}


khexedit'CDragManager::setActivateMode() (./kdeutils/khexedit/hexviewwidget.cc:62)

void CDragManager::setActivateMode( EDragActivateMode mode )
{
  clear();
  mActivateMode = mode; // Movement or Timer
}


khexedit'CDragManager::setup() (./kdeutils/khexedit/hexviewwidget.cc:68)

void CDragManager::setup( int x, int y )
{
  if( mActivateMode == Movement )
  {
    mOrigin.setX(x);
    mOrigin.setY(y);
  }
  else
  {
    setupTimer();
  }
  mPending = true;
}


khexedit'CDragManager::start() (./kdeutils/khexedit/hexviewwidget.cc:82)

bool CDragManager::start( QMouseEvent *e )
{
  if( mPending == false )
  {
    return( false );
  }

  if( mActivateMode == Movement )
  {
    if( (mOrigin - e->pos()).manhattanLength() > KGlobalSettings::dndEventDelay() )
    {
      mPending = false;
      emit startDrag( e->state() & ShiftButton ? true : false );
    }
    return( true );
  }
  else // Timer
  {
    if( mTimerId != 0 )
    {
      removeTimer();
      mPending = false;
      emit startDrag( e->state() & ShiftButton ? true : false );
      return( true );
    }
    else
    {
      // Should never happen!
      mPending = false;
      return( false );
    }
  }

}


khexedit'CDragManager::clear() (./kdeutils/khexedit/hexviewwidget.cc:117)

bool CDragManager::clear( void )
{
  if( mPending == false )
  {
    return( false );
  }

  if( mActivateMode == Timer )
  {
    removeTimer();
  }

  mPending = false;
  return( true );
}


khexedit'CDragManager::timerEvent() (./kdeutils/khexedit/hexviewwidget.cc:133)

void CDragManager::timerEvent( QTimerEvent *e )
{
  if( e->timerId() == mTimerId )
  {
    removeTimer();
    if( mPending == true )
    {
      mPending = false;

      Window root, w;
      uint mask;
      int i;
  
      root = RootWindow( x11Display(), x11Screen() );
      XQueryPointer( x11Display(), root, &w, &w, &i, &i, &i, &i, &mask );
      emit startDrag( mask & ShiftMask ? true : false );
    }
  }
}


khexedit'CDragManager::removeTimer() (./kdeutils/khexedit/hexviewwidget.cc:153)

void CDragManager::removeTimer( void )
{
  if( mTimerId != 0 )
  {
    killTimer( mTimerId );
    mTimerId = 0;
  }
}


khexedit'CDragManager::setupTimer() (./kdeutils/khexedit/hexviewwidget.cc:162)

void CDragManager::setupTimer( void )
{
  if( mTimerId != 0 )
  {
    killTimer( mTimerId );
    mTimerId = 0;
  }
  mTimerId = startTimer( 500 );
}


//
// This widget will use the entire space of the parent widget
//