Hi, The attached patch adds "Copy URL" to the popup menu when the user right-clicks on a url. If "Copy URL" is selected, the url is copied to both the Ctrl+C/V/X clipboard and the selection clipboard.
The reason for this patch is that I often find myself copying a url, changing desktop and opening the webpage in an already running konqueror instance. Trying to select the url is not as easy as just right-clicking on the url and selecting copy url, hence the patch :) I add the url to both clipboards since I personally prefer the selection clipboard, but I'm guessing that others may prefer the "Windows"-clipboard. // Erik -- Fatal error! Hit any user to continue.. Erik Johansson http://ejohansson.se
Index: mlview3.cpp =================================================================== --- mlview3.cpp (revision 4416) +++ mlview3.cpp (working copy) @@ -30,6 +30,8 @@ #include <qpainter.h> #include <qaccel.h> #include <qregexp.h> +#include <qapplication.h> +#include <qclipboard.h> #include "ewidgets.h" #include "licq_icqd.h" @@ -144,7 +146,37 @@ setPaper(QBrush(c)); } +/** @brief Adds "Copy URL" to the popup menu if the user right clicks on a URL. */ +QPopupMenu* MLView::createPopupMenu(const QPoint& point) +{ + QPopupMenu *menu = QTextBrowser::createPopupMenu(point); + m_url = anchorAt(point); + if (!m_url.isNull() && !m_url.isEmpty()) + menu->insertItem(tr("Copy URL"), this, SLOT(slotCopyUrl())); + + return menu; +} + +/** @brief Adds the contents of m_url to the clipboard. */ +void MLView::slotCopyUrl() +{ + if (!m_url.isNull() && !m_url.isEmpty()) + { + // This copies m_url to both the normal clipboard (Ctrl+C/V/X) + // and the selection clipboard (paste with middle mouse button). + QClipboard *cb = QApplication::clipboard(); + cb->setText(m_url); + if (cb->supportsSelection()) + { + bool enabled = cb->selectionModeEnabled(); + cb->setSelectionMode(!enabled); + cb->setText(m_url); + cb->setSelectionMode(enabled); + } + } +} + // ----------------------------------------------------------------------------- Index: mlview3.h =================================================================== --- mlview3.h (revision 4416) +++ mlview3.h (working copy) @@ -24,10 +24,18 @@ void setHandleLinks(bool enable); static QString toRichText(const QString& s, bool highlightURLs = false, bool useHTML = false); + +protected: + virtual QPopupMenu *createPopupMenu(const QPoint& pos); + public slots: virtual void setSource(const QString& name); + void slotCopyUrl(); + private: bool m_handleLinks; + QString m_url; + signals: void viewurl(QWidget*, QString); };