37#include <QApplication>
70 setAcceptDrops(
true );
71 setMouseTracking(
true );
76 m_d->mActivateDragSwitchTabTimer =
new QTimer(
this );
77 m_d->mActivateDragSwitchTabTimer->setSingleShot(
true );
90 if ( event->button() != Qt::LeftButton )
99 QTabBar::mouseDoubleClickEvent( event );
104 if ( event->button() == Qt::LeftButton ) {
106 m_d->mDragStart =
event->pos();
107 }
else if( event->button() == Qt::RightButton ) {
110 emit
contextMenu( tab, mapToGlobal( event->pos() ) );
115 QTabBar::mousePressEvent( event );
120 if ( event->buttons() == Qt::LeftButton ) {
122 if (
m_d->mDragSwitchTab && tab !=
m_d->mDragSwitchTab ) {
123 m_d->mActivateDragSwitchTabTimer->stop();
124 m_d->mDragSwitchTab = 0;
128 QPoint newPos =
event->pos();
129 if ( newPos.x() >
m_d->mDragStart.x() +
delay || newPos.x() <
m_d->mDragStart.x() -
delay ||
130 newPos.y() >
m_d->mDragStart.y() +
delay || newPos.y() <
m_d->mDragStart.y() -
delay ) {
136 }
else if ( event->buttons() == Qt::MiddleButton ) {
137 if (
m_d->mReorderStartTab == -1 ) {
139 QPoint newPos =
event->pos();
141 if ( newPos.x() >
m_d->mDragStart.x() +
delay || newPos.x() <
m_d->mDragStart.x() -
delay ||
142 newPos.y() >
m_d->mDragStart.y() +
delay || newPos.y() <
m_d->mDragStart.y() -
delay ) {
144 if ( tab != -1 &&
m_d->mTabReorderingEnabled ) {
145 m_d->mReorderStartTab = tab;
146 grabMouse( Qt::SizeAllCursor );
153 int reorderStopTab = tab;
154 if (
m_d->mReorderStartTab != reorderStopTab &&
m_d->mReorderPreviousTab != reorderStopTab ) {
155 emit
moveTab(
m_d->mReorderStartTab, reorderStopTab );
157 m_d->mReorderPreviousTab =
m_d->mReorderStartTab;
158 m_d->mReorderStartTab = reorderStopTab;
166 QTabBar::mouseMoveEvent( event );
172 int tab =
selectTab( mapFromGlobal( QCursor::pos() ) );
173 if ( tab != -1 &&
m_d->mDragSwitchTab == tab )
174 setCurrentIndex(
m_d->mDragSwitchTab );
176 m_d->mDragSwitchTab = 0;
181 if ( event->button() == Qt::MiddleButton ) {
182 if (
m_d->mReorderStartTab == -1 ) {
190 setCursor( Qt::ArrowCursor );
191 m_d->mReorderStartTab = -1;
192 m_d->mReorderPreviousTab = -1;
196 QTabBar::mouseReleaseEvent( event );
201 event->setAccepted(
true );
202 QTabBar::dragEnterEvent( event );
213 if ( accept && tab != currentIndex() ) {
214 m_d->mDragSwitchTab = tab;
215 m_d->mActivateDragSwitchTabTimer->start( QApplication::doubleClickInterval() * 2 );
218 event->setAccepted( accept );
222 event->setAccepted(
false );
223 QTabBar::dragMoveEvent( event );
230 m_d->mActivateDragSwitchTabTimer->stop();
231 m_d->mDragSwitchTab = 0;
236 QTabBar::dropEvent( event );
239#ifndef QT_NO_WHEELEVENT
242 emit(
wheelDelta( event->angleDelta().y() ) );
248 return m_d->mTabReorderingEnabled;
253 m_d->mTabReorderingEnabled = on;
258 return m_d->mTabCloseActivatePrevious;
263 m_d->mTabCloseActivatePrevious = on;
269 m_d->mActivateDragSwitchTabTimer->stop();
270 m_d->mDragSwitchTab = 0;
275 for (
int i = 0; i <
count(); ++i )
double delay(std::size_t d)
bool mTabCloseActivatePrevious
bool mTabReorderingEnabled
QTimer * mActivateDragSwitchTabTimer
void mouseMiddleClick(int)
virtual void tabLayoutChange()
virtual void dragMoveEvent(QDragMoveEvent *event)
bool isTabReorderingEnabled() const
void mouseDoubleClick(int)
virtual void mouseReleaseEvent(QMouseEvent *event)
virtual void dropEvent(QDropEvent *event)
virtual void mouseMoveEvent(QMouseEvent *event)
void testCanDecode(const QDragMoveEvent *, bool &)
void setTabCloseActivatePrevious(bool)
virtual void mousePressEvent(QMouseEvent *event)
virtual void activateDragSwitchTab()
virtual void dragEnterEvent(QDragEnterEvent *event)
bool tabCloseActivatePrevious() const
virtual void mouseDoubleClickEvent(QMouseEvent *event)
virtual void wheelEvent(QWheelEvent *event)
void contextMenu(int, const QPoint &)
void receivedDropEvent(int, QDropEvent *)
VP1TabBar(QWidget *parent=0)
void setTabReorderingEnabled(bool enable)
int selectTab(const QPoint &position) const
bool contains(const std::string &s, const std::string ®x)
does a string contain the substring
int count(std::string s, const std::string ®x)
count how many occurances of a regx are in a string