// virtual void ClickableLabel::mouseReleaseEvent(QMouseEvent * event) { if ((event->pos() - mouseStartPoint).manhattanLength() < QApplication::startDragDistance()) { switch (event->button()) { case Qt::LeftButton: emit mouseLeftClick(event); break; case Qt::RightButton: emit mouseRightClick(event); break; case Qt::MidButton: emit mouseMiddleClick(event); break; default: break; } } }
void KTabBar::mouseReleaseEvent( QMouseEvent *e ) { if( e->button() == MidButton ) { QTab *tab = selectTab( e->pos() ); if ( mReorderStartTab==-1 ) { if( tab!= 0L ) { emit( mouseMiddleClick( indexOf( tab->identifier() ) ) ); return; } } else { releaseMouse(); setCursor( arrowCursor ); mReorderStartTab=-1; mReorderPreviousTab=-1; } } QTabBar::mouseReleaseEvent( e ); }
void KTabBar::mouseReleaseEvent( QMouseEvent *event ) { switch ( event->button() ) { case Qt::LeftButton: break; case Qt::MidButton: if (d->mMiddleMouseTabMoveInProgress && QTabBar::isMovable()) { // compatibility feature for old middle mouse tab moving d->mMiddleMouseTabMoveInProgress = false; event->accept(); QMouseEvent fakedMouseEvent(event->type(), event->pos(), Qt::LeftButton, Qt::LeftButton, event->modifiers()); QCoreApplication::sendEvent(this, &fakedMouseEvent); return; } if ( d->mReorderStartTab == -1 ) { int tab = selectTab( event->pos() ); if ( tab != -1 ) { event->accept(); if (QTabBar::isMovable()) { QMouseEvent fakedMouseEvent(event->type(), event->pos(), Qt::LeftButton, Qt::LeftButton, event->modifiers()); QCoreApplication::sendEvent(this, &fakedMouseEvent); } emit mouseMiddleClick( tab ); return; } } else { releaseMouse(); setCursor( Qt::ArrowCursor ); d->mReorderStartTab = -1; d->mReorderPreviousTab = -1; } break; default: break; } QTabBar::mouseReleaseEvent( event ); }
Test::Test( QWidget* parent ) :KVBox( parent ), mChange(0), mLeftWidget(0), mRightWidget(0), mLeftPopup(0), mRightPopup(0), mTabbarContextPopup(0), mContextPopup(0) { resize( 600,300 ); mWidget = new KTabWidget( this ); mWidget->addTab( new QLabel( "Testlabel 1", 0 ), "&One" ); mWidget->addTab( new QLabel( "Testlabel 2", 0 ), "Two" ); mWidget->addTab( new QWidget(), SmallIcon( "konsole" ), "Three" ); mWidget->addTab( new QWidget(), "Four" ); mWidget->setTabTextColor( 0, Qt::red ); mWidget->setTabTextColor( 1, Qt::blue ); mWidget->setUsesScrollButtons( false ); // corresponding checkbox is unchecked by default connect( mWidget, SIGNAL(currentChanged(QWidget*)), SLOT(currentChanged(QWidget*)) ); connect( mWidget, SIGNAL(contextMenu(QWidget*,QPoint)), SLOT(contextMenu(QWidget*,QPoint))); connect( mWidget, SIGNAL(contextMenu(QPoint)), SLOT(tabbarContextMenu(QPoint))); connect( mWidget, SIGNAL(mouseDoubleClick(QWidget*)), SLOT(mouseDoubleClick(QWidget*))); connect( mWidget, SIGNAL(mouseMiddleClick()), SLOT(addTab())); connect( mWidget, SIGNAL(mouseMiddleClick(QWidget*)), SLOT(mouseMiddleClick(QWidget*))); connect( mWidget, SIGNAL(closeRequest(QWidget*)), SLOT(mouseMiddleClick(QWidget*))); connect( mWidget, SIGNAL(testCanDecode(const QDragMoveEvent*,bool&)), SLOT(testCanDecode(const QDragMoveEvent*,bool&))); connect( mWidget, SIGNAL(receivedDropEvent(QDropEvent*)), SLOT(receivedDropEvent(QDropEvent*))); connect( mWidget, SIGNAL(receivedDropEvent(QWidget*,QDropEvent*)), SLOT(receivedDropEvent(QWidget*,QDropEvent*))); connect( mWidget, SIGNAL(initiateDrag(QWidget*)), SLOT(initiateDrag(QWidget*))); connect( mWidget, SIGNAL(movedTab(int,int)), SLOT(movedTab(int,int))); mWidget->setMovable( true ); QWidget * grid = new QWidget(this); QGridLayout * gridlayout = new QGridLayout( grid ); QPushButton * addTab = new QPushButton( "Add Tab", grid ); gridlayout->addWidget( addTab, 0, 0 ); connect( addTab, SIGNAL(clicked()), SLOT(addTab()) ); QPushButton * removeTab = new QPushButton( "Remove Current Tab", grid ); gridlayout->addWidget( removeTab, 0, 1 ); connect( removeTab, SIGNAL(clicked()), SLOT(removeCurrentTab()) ); mLeftButton = new QCheckBox( "Show left button", grid ); gridlayout->addWidget( mLeftButton, 1, 0 ); connect( mLeftButton, SIGNAL(toggled(bool)), SLOT(toggleLeftButton(bool)) ); mLeftButton->setChecked(true); QCheckBox * leftPopup = new QCheckBox( "Enable left popup", grid ); gridlayout->addWidget( leftPopup, 2, 0 ); connect( leftPopup, SIGNAL(toggled(bool)), SLOT(toggleLeftPopup(bool)) ); leftPopup->setChecked(true); mRightButton = new QCheckBox( "Show right button", grid ); gridlayout->addWidget( mRightButton, 1, 1 ); connect( mRightButton, SIGNAL(toggled(bool)), SLOT(toggleRightButton(bool)) ); mRightButton->setChecked(true); QCheckBox * rightPopup = new QCheckBox( "Enable right popup", grid ); gridlayout->addWidget( rightPopup, 2, 1 ); connect( rightPopup, SIGNAL(toggled(bool)), SLOT(toggleRightPopup(bool)) ); rightPopup->setChecked(true); mTabsBottom = new QCheckBox( "Show tabs at bottom", grid ); gridlayout->addWidget( mTabsBottom, 3, 0 ); connect( mTabsBottom, SIGNAL(toggled(bool)), SLOT(toggleTabPosition(bool)) ); QCheckBox * tabshape = new QCheckBox( "Triangular tab shape", grid ); gridlayout->addWidget( tabshape, 3, 1 ); connect( tabshape, SIGNAL(toggled(bool)), SLOT(toggleTabShape(bool)) ); QCheckBox *tabClose = new QCheckBox( "Close button on icon hover", grid ); gridlayout->addWidget( tabClose, 4, 0 ); connect( tabClose, SIGNAL(toggled(bool)), SLOT(toggleCloseButtons(bool)) ); tabClose->setChecked(true); QCheckBox * showlabels = new QCheckBox( "Show labels", grid ); gridlayout->addWidget( showlabels, 4, 1 ); connect( showlabels, SIGNAL(toggled(bool)), this, SLOT(toggleLabels(bool)) ); QCheckBox * elideText = new QCheckBox( "Elide text", grid ); gridlayout->addWidget( elideText, 5, 0 ); connect( elideText, SIGNAL(toggled(bool)), this, SLOT(toggleEliding(bool)) ); QCheckBox * scrollButtons = new QCheckBox( "Enable scroll buttons", grid ); gridlayout->addWidget( scrollButtons, 5, 1 ); connect( scrollButtons, SIGNAL(toggled(bool)), this, SLOT(toggleScrollButtons(bool)) ); }
KonqFrameTabs::KonqFrameTabs(QWidget *parent, KonqFrameContainerBase *parentContainer, KonqViewManager *viewManager) : KTabWidget(parent), m_pPopupMenu(0), m_pSubPopupMenuTab(0), m_rightWidget(0), m_leftWidget(0), m_alwaysTabBar(false) { // Set an object name so the widget style can identify this widget. setObjectName(QStringLiteral("kde_konq_tabwidget")); setDocumentMode(true); KAcceleratorManager::setNoAccel(this); tabBar()->setWhatsThis(i18n("This bar contains the list of currently open tabs. Click on a tab to make it " "active. You can also use keyboard shortcuts to " "navigate through tabs. The text on the tab shows the content " "currently open in it; place your mouse over the tab to see the full title, in " "case it has been shortened to fit the tab width.")); //qDebug() << "KonqFrameTabs::KonqFrameTabs()"; m_pParentContainer = parentContainer; m_pActiveChild = 0L; m_pViewManager = viewManager; m_permanentCloseButtons = KonqSettings::permanentCloseButton(); if (m_permanentCloseButtons) { setTabsClosable(true); } tabBar()->setSelectionBehaviorOnRemove( KonqSettings::tabCloseActivatePrevious() ? QTabBar::SelectPreviousTab : QTabBar::SelectRightTab); if (KonqSettings::tabPosition() == QLatin1String("Bottom")) { setTabPosition(QTabWidget::South); } connect(this, SIGNAL(closeRequest(QWidget*)), SLOT(slotCloseRequest(QWidget*))); connect(this, SIGNAL(removeTabPopup()), m_pViewManager->mainWindow(), SLOT(slotRemoveTabPopup())); if (KonqSettings::addTabButton()) { m_leftWidget = new NewTabToolButton(this); connect(m_leftWidget, SIGNAL(clicked()), m_pViewManager->mainWindow(), SLOT(slotAddTab())); connect(m_leftWidget, SIGNAL(testCanDecode(const QDragMoveEvent*,bool&)), SLOT(slotTestCanDecode(const QDragMoveEvent*,bool&))); connect(m_leftWidget, SIGNAL(receivedDropEvent(QDropEvent*)), SLOT(slotReceivedDropEvent(QDropEvent*))); m_leftWidget->setIcon(QIcon::fromTheme(QStringLiteral("tab-new"))); m_leftWidget->adjustSize(); m_leftWidget->setToolTip(i18n("Open a new tab")); setCornerWidget(m_leftWidget, Qt::TopLeftCorner); } if (KonqSettings::closeTabButton()) { m_rightWidget = new QToolButton(this); connect(m_rightWidget, SIGNAL(clicked()), m_pViewManager->mainWindow(), SLOT(slotRemoveTab())); m_rightWidget->setIcon(QIcon::fromTheme(QStringLiteral("tab-close"))); m_rightWidget->adjustSize(); m_rightWidget->setToolTip(i18n("Close the current tab")); setCornerWidget(m_rightWidget, Qt::TopRightCorner); } setAutomaticResizeTabs(true); setMovable(true); connect(tabBar(), SIGNAL(tabMoved(int,int)), SLOT(slotMovedTab(int,int))); connect(this, SIGNAL(movedTab(int,int)), SLOT(slotMovedTab(int,int))); connect(this, SIGNAL(mouseMiddleClick()), SLOT(slotMouseMiddleClick())); connect(this, SIGNAL(mouseMiddleClick(QWidget*)), SLOT(slotMouseMiddleClick(QWidget*))); connect(this, SIGNAL(mouseDoubleClick()), m_pViewManager->mainWindow(), SLOT(slotAddTab())); connect(this, SIGNAL(testCanDecode(const QDragMoveEvent*,bool&)), SLOT(slotTestCanDecode(const QDragMoveEvent*,bool&))); connect(this, SIGNAL(receivedDropEvent(QDropEvent*)), SLOT(slotReceivedDropEvent(QDropEvent*))); connect(this, SIGNAL(receivedDropEvent(QWidget*,QDropEvent*)), SLOT(slotReceivedDropEvent(QWidget*,QDropEvent*))); connect(this, SIGNAL(initiateDrag(QWidget*)), SLOT(slotInitiateDrag(QWidget*))); #if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) #pragma message("KF5: revert the commit that introduced this line") #endif tabBar()->installEventFilter(this); initPopupMenu(); }
Test::Test( QWidget* parent, const char *name ) :QVBox( parent, name ), mChange(0), mLeftWidget(0), mRightWidget(0), mLeftPopup( false ), mRightPopup( false ), mTabbarContextPopup( false ), mContextPopup( false ) { resize( 600,300 ); mWidget = new KTabWidget( this ); mWidget->addTab( new QLabel( "Testlabel 1", mWidget ), "One" ); mWidget->addTab( new QLabel( "Testlabel 2", mWidget ), "Two" ); mWidget->addTab( new QWidget( mWidget), SmallIcon( "konsole" ), "Three" ); mWidget->addTab( new QWidget( mWidget), "Four" ); mWidget->setTabColor( mWidget->page(0), Qt::red ); mWidget->setTabColor( mWidget->page(1), Qt::blue ); connect( mWidget, SIGNAL( currentChanged( QWidget * ) ), SLOT( currentChanged( QWidget * ) ) ); connect( mWidget, SIGNAL( contextMenu( QWidget *, const QPoint & )), SLOT(contextMenu( QWidget *, const QPoint & ))); connect( mWidget, SIGNAL( contextMenu( const QPoint & )), SLOT(tabbarContextMenu( const QPoint & ))); connect( mWidget, SIGNAL( mouseDoubleClick( QWidget * )), SLOT(mouseDoubleClick( QWidget * ))); connect( mWidget, SIGNAL( mouseMiddleClick() ), SLOT(addTab() )); connect( mWidget, SIGNAL( mouseMiddleClick( QWidget * )), SLOT(mouseMiddleClick( QWidget * ))); connect( mWidget, SIGNAL( closeRequest( QWidget * )), SLOT(mouseMiddleClick( QWidget * ))); connect( mWidget, SIGNAL( testCanDecode(const QDragMoveEvent *, bool & )), SLOT(testCanDecode(const QDragMoveEvent *, bool & ))); connect( mWidget, SIGNAL( receivedDropEvent( QDropEvent * )), SLOT(receivedDropEvent( QDropEvent * ))); connect( mWidget, SIGNAL( receivedDropEvent( QWidget *, QDropEvent * )), SLOT(receivedDropEvent( QWidget *, QDropEvent * ))); connect( mWidget, SIGNAL( initiateDrag( QWidget * )), SLOT(initiateDrag( QWidget * ))); connect( mWidget, SIGNAL( movedTab( int, int )), SLOT(movedTab( int, int ))); mWidget->setTabReorderingEnabled( true ); QWidget * grid = new QWidget(this); QGridLayout * gridlayout = new QGridLayout( grid, 5, 2 ); QPushButton * addTab = new QPushButton( "Add Tab", grid ); gridlayout->addWidget( addTab, 0, 0 ); connect( addTab, SIGNAL( clicked() ), SLOT( addTab() ) ); QPushButton * removeTab = new QPushButton( "Remove Current Tab", grid ); gridlayout->addWidget( removeTab, 0, 1 ); connect( removeTab, SIGNAL( clicked() ), SLOT( removeCurrentTab() ) ); mLeftButton = new QCheckBox( "Show left button", grid ); gridlayout->addWidget( mLeftButton, 1, 0 ); connect( mLeftButton, SIGNAL( toggled(bool) ), SLOT( toggleLeftButton(bool) ) ); mLeftButton->setChecked(true); QCheckBox * leftPopup = new QCheckBox( "Enable left popup", grid ); gridlayout->addWidget( leftPopup, 2, 0 ); connect( leftPopup, SIGNAL( toggled(bool) ), SLOT( toggleLeftPopup(bool) ) ); leftPopup->setChecked(true); mRightButton = new QCheckBox( "Show right button", grid ); gridlayout->addWidget( mRightButton, 1, 1 ); connect( mRightButton, SIGNAL( toggled(bool) ), SLOT( toggleRightButton(bool) ) ); mRightButton->setChecked(true); QCheckBox * rightPopup = new QCheckBox( "Enable right popup", grid ); gridlayout->addWidget( rightPopup, 2, 1 ); connect( rightPopup, SIGNAL( toggled(bool) ), SLOT( toggleRightPopup(bool) ) ); rightPopup->setChecked(true); mTabsBottom = new QCheckBox( "Show tabs at bottom", grid ); gridlayout->addWidget( mTabsBottom, 3, 0 ); connect( mTabsBottom, SIGNAL( toggled(bool) ), SLOT( toggleTabPosition(bool) ) ); QCheckBox * tabshape = new QCheckBox( "Triangular tab shape", grid ); gridlayout->addWidget( tabshape, 3, 1 ); connect( tabshape, SIGNAL( toggled(bool) ), SLOT( toggleTabShape(bool) ) ); QCheckBox *tabClose = new QCheckBox( "Close button on icon hover", grid ); gridlayout->addWidget( tabClose, 4, 0 ); connect( tabClose, SIGNAL( toggled(bool) ), SLOT( toggleCloseButtons(bool) ) ); tabClose->setChecked(true); QCheckBox * showlabels = new QCheckBox( "Show labels", grid ); gridlayout->addWidget( showlabels, 4, 1 ); connect( showlabels, SIGNAL( toggled(bool) ), this, SLOT( toggleLabels(bool) ) ); }