diff --git a/src/qtgui/rclmain_w.cpp b/src/qtgui/rclmain_w.cpp index fe85e7c6..dab17aec 100644 --- a/src/qtgui/rclmain_w.cpp +++ b/src/qtgui/rclmain_w.cpp @@ -1,5 +1,5 @@ #ifndef lint -static char rcsid[] = "@(#$Id: rclmain_w.cpp,v 1.8 2006-11-17 10:09:07 dockes Exp $ (C) 2005 J.F.Dockes"; +static char rcsid[] = "@(#$Id: rclmain_w.cpp,v 1.9 2006-11-17 12:55:59 dockes Exp $ (C) 2005 J.F.Dockes"; #endif /* * This program is free software; you can redistribute it and/or modify @@ -114,8 +114,8 @@ void RclMain::init() this, SLOT(enablePrevPage(bool))); connect(resList, SIGNAL(docEditClicked(int)), this, SLOT(startNativeViewer(int))); - connect(resList, SIGNAL(docPreviewClicked(int)), - this, SLOT(startPreview(int))); + connect(resList, SIGNAL(docPreviewClicked(int, int)), + this, SLOT(startPreview(int, int))); connect(fileExitAction, SIGNAL(activated() ), this, SLOT(fileExit() ) ); connect(fileStart_IndexingAction, SIGNAL(activated()), @@ -443,8 +443,9 @@ void RclMain::previewClosed(QWidget *w) * existing window. * * @param docnum db query index + * @param mod keyboards modifiers like ControlButton, ShiftButton */ -void RclMain::startPreview(int docnum) +void RclMain::startPreview(int docnum, int mod) { Rcl::Doc doc; if (!resList->getDoc(docnum, doc)) { @@ -462,7 +463,10 @@ void RclMain::startPreview(int docnum) fn.c_str()); return; } - + if (mod & Qt::ShiftButton) { + // User wants new preview window + curPreview = 0; + } if (curPreview == 0) { curPreview = new Preview(0, tr("Preview")); if (curPreview == 0) { diff --git a/src/qtgui/rclmain_w.h b/src/qtgui/rclmain_w.h index e8fe9dd9..5ace171d 100644 --- a/src/qtgui/rclmain_w.h +++ b/src/qtgui/rclmain_w.h @@ -65,7 +65,7 @@ public slots: virtual void enablePrevPage(bool); virtual void docExpand(int); virtual void ssearchAddTerm(QString); - virtual void startPreview(int docnum); + virtual void startPreview(int docnum, int); virtual void startNativeViewer(int docnum); virtual void previewNextInTab(int sid, int docnum); virtual void previewPrevInTab(int sid, int docnum); diff --git a/src/qtgui/reslist.cpp b/src/qtgui/reslist.cpp index 104e8b03..b131edad 100644 --- a/src/qtgui/reslist.cpp +++ b/src/qtgui/reslist.cpp @@ -1,5 +1,5 @@ #ifndef lint -static char rcsid[] = "@(#$Id: reslist.cpp,v 1.10 2006-11-17 10:09:07 dockes Exp $ (C) 2005 J.F.Dockes"; +static char rcsid[] = "@(#$Id: reslist.cpp,v 1.11 2006-11-17 12:55:59 dockes Exp $ (C) 2005 J.F.Dockes"; #endif #include @@ -46,8 +46,8 @@ ResList::ResList(QWidget* parent, const char* name) // signals and slots connections connect(this, SIGNAL(clicked(int, int)), this, SLOT(clicked(int,int))); - connect(this, SIGNAL(linkClicked(const QString &)), - this, SLOT(linkWasClicked(const QString &))); + connect(this, SIGNAL(linkClicked(const QString &, int)), + this, SLOT(linkWasClicked(const QString &, int))); connect(this, SIGNAL(headerClicked()), this, SLOT(showQueryDetails())); connect(this, SIGNAL(doubleClicked(int,int)), this, SLOT(doubleClicked(int, int))); @@ -532,7 +532,7 @@ void ResList::doubleClicked(int, int) emit(wordSelect(selectedText())); } -void ResList::linkWasClicked(const QString &s) +void ResList::linkWasClicked(const QString &s, int clkmod) { LOGDEB(("ResList::linkClicked: [%s]\n", s.ascii())); int i = atoi(s.ascii()+1); @@ -542,7 +542,7 @@ void ResList::linkWasClicked(const QString &s) emit headerClicked(); break; case 'P': - emit docPreviewClicked(i); + emit docPreviewClicked(i, clkmod); break; case 'E': emit docEditClicked(i); @@ -573,7 +573,7 @@ QPopupMenu *ResList::createPopupMenu(const QPoint& pos) void ResList::menuPreview() { - emit docPreviewClicked(m_popDoc); + emit docPreviewClicked(m_popDoc, 0); } void ResList::menuEdit() { diff --git a/src/qtgui/reslist.h b/src/qtgui/reslist.h index 47efba15..b2e0ab02 100644 --- a/src/qtgui/reslist.h +++ b/src/qtgui/reslist.h @@ -1,6 +1,6 @@ #ifndef _RESLIST_H_INCLUDED_ #define _RESLIST_H_INCLUDED_ -/* @(#$Id: reslist.h,v 1.3 2006-11-17 10:09:07 dockes Exp $ (C) 2005 J.F.Dockes */ +/* @(#$Id: reslist.h,v 1.4 2006-11-17 12:55:59 dockes Exp $ (C) 2005 J.F.Dockes */ #include @@ -56,10 +56,11 @@ class ResList : public QTextBrowser void nextPageAvailable(bool); void prevPageAvailable(bool); void docEditClicked(int); - void docPreviewClicked(int); + void docPreviewClicked(int, int); void headerClicked(); void docExpand(int); void wordSelect(QString); + void linkClicked(const QString&, int); protected: void keyPressEvent(QKeyEvent *e); @@ -67,7 +68,7 @@ class ResList : public QTextBrowser protected slots: virtual void languageChange(); - virtual void linkWasClicked(const QString &); + virtual void linkWasClicked(const QString &, int); virtual void showQueryDetails(); private: @@ -86,7 +87,7 @@ class ResList : public QTextBrowser // Don't know why this is necessary but it is void emitLinkClicked(const QString &s) { - emit linkClicked(s); + emit linkClicked(s, m_lstClckMod); }; };