Psi Jabber Client

See this page for instructions on how to use Flyspray: http://psi-im.org/wiki/Flyspray

Please Note!

Please do not create tasks here without discussing your bug or feature request on the forums or groupchat psi@conference.psi-im.org, *and* getting explicit confirmation by a developer to add it to flyspray.
Tasklist

FS#757 - Middle click on Tab

Attached to Project: Psi Jabber Client
Opened by Kud Gray (Kud_Gray) - Monday, 14 January 2008, 11:14 GMT-5
Last edited by Kevin Smith (kev) - Sunday, 16 March 2008, 18:11 GMT-5
Task Type Feature Request
Category UserInterface
Status New
Assigned To No-one
Operating System All
Severity Medium
Priority Nice to Have
Reported Version 0.12-devel
Due in Version 0.13
Due Date Undecided
Percent Complete 0%
Votes 1
Private No

Details

Close the tab when clicking with middle click.
This task depends upon

View Dependency Graph

Comment by duryodhan (duryodhan) - Sunday, 24 February 2008, 08:46 GMT-5
I think I might have did the reverse thing , you might have to apply patch with -R :) (sorry)


diff -r psi/src/tabs/tabdlg.cpp psi-dev-snapshot-2008-02-04/src/tabs/tabdlg.cpp
138d137
< connect(tabWidget_, SIGNAL(mouseMiddleClickTab(QWidget*)), SLOT(mouseMiddleClickTab(QWidget*)));
358,362d356
< void TabDlg::mouseMiddleClickTab(QWidget* widget)
< {
< closeTab(static_cast<TabbableWidget*>(widget));
< }
<
Only in psi/src/tabs: tabdlg.cpp~
diff -r psi/src/tabs/tabdlg.h psi-dev-snapshot-2008-02-04/src/tabs/tabdlg.h
104d103
< void mouseMiddleClickTab(QWidget*);
Only in psi/src/tabs: tabdlg.h~
Only in psi/src/tools/trayicon: trayicon.cpp~
Only in psi/src/unittest/psipopup: testpsipopup.cpp~
Only in psi/src/unittest: textutil
diff -r psi/src/widgets/psitabbar.cpp psi-dev-snapshot-2008-02-04/src/widgets/psitabbar.cpp
80,84d79
< // Enable Middle Click
< if (event->button() == Qt::MidButton) {
< int tabno = findTabUnder(event->pos());
< emit mouseMiddleClickTab(tabno);
< }
Only in psi/src/widgets: psitabbar.cpp~
diff -r psi/src/widgets/psitabbar.h psi-dev-snapshot-2008-02-04/src/widgets/psitabbar.h
42d41
< void mouseMiddleClickTab(int tab);
Only in psi/src/widgets: psitabbar.h~
diff -r psi/src/widgets/psitabwidget.cpp psi-dev-snapshot-2008-02-04/src/widgets/psitabwidget.cpp
79,80d78
<
< connect( tabBar_, SIGNAL(mouseMiddleClickTab(int)), SLOT(mouseMiddleClickTab(int)));
120,123d117
< void PsiTabWidget::mouseMiddleClickTab(int tab) {
< emit mouseMiddleClickTab(widget(tab));
< }
<
Only in psi/src/widgets: psitabwidget.cpp~
diff -r psi/src/widgets/psitabwidget.h psi-dev-snapshot-2008-02-04/src/widgets/psitabwidget.h
72d71
< void mouseMiddleClickTab(QWidget *tab);
82d80
< void mouseMiddleClickTab(int tab);
Only in psi/src/widgets: psitabwidget.h~
Comment by Moritz Schmidt (Fusselwurm) - Sunday, 02 March 2008, 11:24 GMT-5
don't just revert duryodhan's changes... Psi will crash when you middle-click on the tab bar without having the pointer on a tab.

Index: widgets/psitabbar.h
===================================================================
--- widgets/psitabbar.h (Revision 1069)
+++ widgets/psitabbar.h (Arbeitskopie)
@@ -39,6 +39,7 @@

signals:
void mouseDoubleClickTab(int tab);
+ void mouseMiddleClickTab(int tab);
void tabDropped(int tab, PsiTabBar *source);
// context menu on the blank space will have tab==-1
void contextMenu(QContextMenuEvent *event, int tab);
Index: widgets/psitabwidget.h
===================================================================
--- widgets/psitabwidget.h (Revision 1069)
+++ widgets/psitabwidget.h (Arbeitskopie)
@@ -69,6 +69,8 @@

signals:
void mouseDoubleClickTab(QWidget *tab);
+ void mouseMiddleClickTab(QWidget *tab);
+
void currentChanged(QWidget *selected);
void closeButtonClicked();
void aboutToShowMenu(QMenu *);
@@ -78,6 +80,7 @@

private slots:
void mouseDoubleClickTab(int tab);
+ void mouseMiddleClickTab(int tab);
void tab_currentChanged(int tab);
void tab_contextMenu(QContextMenuEvent *event, int tab);
void menu_aboutToShow();
Index: widgets/psitabbar.cpp
===================================================================
--- widgets/psitabbar.cpp (Revision 1069)
+++ widgets/psitabbar.cpp (Arbeitskopie)
@@ -69,13 +69,16 @@
}

void PsiTabBar::mousePressEvent(QMouseEvent *event) {
- if (event->button() == Qt::LeftButton) {
- int tabno = findTabUnder(event->pos());
- dragStartPosition_ = event->pos();
- dragTab_ = tabno;
- if (tabno != -1) {
+ int tabno = findTabUnder(event->pos());
+ if (tabno != -1) {
+ if (event->button() == Qt::LeftButton) {
+ dragStartPosition_ = event->pos();
+ dragTab_ = tabno;
setCurrentIndex(tabno);
}
+ else if (event->button() == Qt::MidButton) {
+ emit mouseMiddleClickTab(tabno);
+ }
}
event->accept();
}
Index: widgets/psitabwidget.cpp
===================================================================
--- widgets/psitabwidget.cpp (Revision 1069)
+++ widgets/psitabwidget.cpp (Arbeitskopie)
@@ -73,6 +73,7 @@
setTabPosition(QTabWidget::Top);

connect( tabBar_, SIGNAL(mouseDoubleClickTab(int)), SLOT(mouseDoubleClickTab(int)));
+ connect( tabBar_, SIGNAL(mouseMiddleClickTab(int)), SLOT(mouseMiddleClickTab(int)));
connect( tabBar_, SIGNAL( currentChanged(int)), SLOT(tab_currentChanged(int)));
connect( tabBar_, SIGNAL( contextMenu(QContextMenuEvent*,int)), SLOT( tab_contextMenu(QContextMenuEvent*,int)));
connect( closeButton_, SIGNAL(clicked()), SIGNAL(closeButtonClicked()));
@@ -115,6 +116,10 @@
emit mouseDoubleClickTab(widget(tab));
}

+void PsiTabWidget::mouseMiddleClickTab(int tab) {
+ emit mouseMiddleClickTab(widget(tab));
+}
+
/**
* Number of tabs/widgets
*/
Index: tabs/tabdlg.h
===================================================================
--- tabs/tabdlg.h (Revision 1069)
+++ tabs/tabdlg.h (Arbeitskopie)
@@ -105,6 +105,7 @@

protected slots:
void detachCurrentTab();
+ void mouseMiddleClickTab(QWidget*);
void mouseDoubleClickTab(QWidget*);

public slots:
Index: tabs/tabdlg.cpp
===================================================================
--- tabs/tabdlg.cpp (Revision 1069)
+++ tabs/tabdlg.cpp (Arbeitskopie)
@@ -140,6 +140,7 @@

tabWidget_ = new PsiTabWidget(this);
tabWidget_->setCloseIcon(IconsetFactory::icon("psi/closetab").icon());
+ connect(tabWidget_, SIGNAL(mouseMiddleClickTab(QWidget*)), SLOT(mouseMiddleClickTab(QWidget*)));
connect(tabWidget_, SIGNAL(mouseDoubleClickTab(QWidget*)), SLOT(mouseDoubleClickTab(QWidget*)));
connect(tabWidget_, SIGNAL(aboutToShowMenu(QMenu*)), SLOT(tab_aboutToShowMenu(QMenu*)));
connect(tabWidget_, SIGNAL(tabContextMenu(int, QPoint, QContextMenuEvent*)), SLOT(showTabMenu(int, QPoint, QContextMenuEvent*)));
@@ -369,6 +370,10 @@
detachTab(static_cast<TabbableWidget*>(widget));
}

+void TabDlg::mouseMiddleClickTab(QWidget* widget) {
+ closeTab(static_cast<TabbableWidget*>(widget));
+}
+
void TabDlg::detachTab(TabbableWidget* tab)
{
if (tabWidget_->count() == 1 || !tab)

Loading...