Ticket #1486: midclick.patch

File midclick.patch, 3.6 kB (added by hammer, 19 months ago)

middle click -> close _clicked_ tab

  • plugins/qt-gui/src/ewidgets.cpp

    diff -Baburw licq-orig/plugins/qt-gui/src/ewidgets.cpp licq-current/plugins/qt-gui/src/ewidgets.cpp
    old new  
    541541    setNextTab(); 
    542542} 
    543543          
     544void CETabBar::mouseReleaseEvent(QMouseEvent* e) 
     545{ 
     546  if(e->button() == MidButton) 
     547  { 
     548    QPoint pt = e->pos(); 
     549    QTab *tab = selectTab(pt); 
     550    int t = indexOf(tab->identifier()); 
     551    emit middleClick(t); 
     552  } 
     553  else 
     554    QTabBar::mousePressEvent(e); 
     555} 
    544556 
    545557//CETabWidget 
    546558CETabWidget::CETabWidget(QWidget *parent, const char *name, WFlags f) 
    547559  : QTabWidget(parent, name, f) 
    548560{ 
    549   setTabBar(new CETabBar(this, "tabbar")); 
     561  CETabBar * tmpp = new CETabBar(this, "tabbar"); 
     562  setTabBar(tmpp); 
     563  connect(tmpp, SIGNAL(middleClick(int)), this, SLOT(slot_middleClick(int))); 
    550564} 
    551565 
    552566void CETabWidget::setTabColor(QWidget *w, const QColor &color) 
     
    589603    setNextPage(); 
    590604} 
    591605 
     606void CETabWidget::slot_middleClick(int t) 
     607{ 
     608  QWidget *p = page(t); 
     609  if(p) 
     610    emit sig_middleClick(p); 
     611} 
     612 
    592613//-----CInfoField::constructor-------------------------------------------------- 
    593614CInfoField::CInfoField(QWidget *parent, bool readonly) 
    594615  : QLineEdit(parent) 
  • plugins/qt-gui/src/ewidgets.h

    diff -Baburw licq-orig/plugins/qt-gui/src/ewidgets.h licq-current/plugins/qt-gui/src/ewidgets.h
    old new  
    129130 
    130131  void setPreviousTab(); 
    131132  void setNextTab(); 
     133signals: 
     134  void middleClick(int t); 
    132135   
    133136protected: 
    134137  virtual void paintLabel(QPainter *, const QRect &, QTab *, bool) const; 
    135138  virtual void wheelEvent(QWheelEvent *e); 
     139  virtual void mouseReleaseEvent(QMouseEvent *); 
     140   
    136141   
    137142private: 
    138143  QMap<int, QColor> mTabColors; 
     
    144149public: 
    145150  CETabWidget(QWidget * = 0, const char * = 0, WFlags = 0); 
    146151  void setTabColor(QWidget *, const QColor &); 
    147  
    148152  void setPreviousPage(); 
    149153  void setNextPage(); 
    150  
     154public slots: 
     155  void slot_middleClick(int t); 
     156signals: 
     157  void sig_middleClick(QWidget *p); 
    151158protected: 
    152159  virtual void wheelEvent(QWheelEvent *e); 
    153160}; 
  • plugins/qt-gui/src/usereventdlg.cpp

    diff -Baburw licq-orig/plugins/qt-gui/src/usereventdlg.cpp licq-current/plugins/qt-gui/src/usereventdlg.cpp
    old new  
    248248  lay->addWidget(tabw); 
    249249  connect(tabw, SIGNAL(currentChanged(QWidget *)), 
    250250          this, SLOT(slot_currentChanged(QWidget *))); 
     251   connect(tabw, SIGNAL(sig_middleClick(QWidget*)), this, SLOT(closeTab(QWidget*))); 
     252} 
     253 
     254void UserEventTabDlg::closeTab(QWidget *p) 
     255{ 
     256  removeTab(p); 
    251257} 
    252258 
    253259UserEventTabDlg::~UserEventTabDlg() 
     
    25772583void UserSendCommon::slot_close() 
    25782584{ 
    25792585  server->ProtoTypingNotification(m_lUsers.front().c_str(), m_nPPID, false, m_nConvoId); 
    2580    
     2586//   printf("tab closed\n"); 
    25812587  if (mainwin->m_bMsgChatView) 
    25822588  { 
    25832589    // the window is at the front, if the timer has not expired and we close 
  • plugins/qt-gui/src/usereventdlg.h

    diff -Baburw licq-orig/plugins/qt-gui/src/usereventdlg.h licq-current/plugins/qt-gui/src/usereventdlg.h
    old new  
    119119  void slot_currentChanged(QWidget *tab); 
    120120  void moveLeft(); 
    121121  void moveRight(); 
     122  void closeTab(QWidget *p); 
    122123 
    123124protected slots: 
    124125  void setMsgWinSticky();