diff options
author | Andrei Karas <akaras@inbox.ru> | 2011-12-03 21:05:17 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2011-12-03 21:05:17 +0300 |
commit | 284458d6c7644159eb14479e9f41127fd400ffdb (patch) | |
tree | 802e190c77a337a7645e1b6d01f66dcbbf8ef2e5 /src/gui/widgets | |
parent | 5acadea119fc2a89e944dc9431e298e5e9544770 (diff) | |
download | manaplus-284458d6c7644159eb14479e9f41127fd400ffdb.tar.gz manaplus-284458d6c7644159eb14479e9f41127fd400ffdb.tar.bz2 manaplus-284458d6c7644159eb14479e9f41127fd400ffdb.tar.xz manaplus-284458d6c7644159eb14479e9f41127fd400ffdb.zip |
Allow copy any line from chat log to clipboard by
context menu item "Copy to clipboard".
Diffstat (limited to 'src/gui/widgets')
-rw-r--r-- | src/gui/widgets/browserbox.cpp | 29 | ||||
-rw-r--r-- | src/gui/widgets/browserbox.h | 3 |
2 files changed, 32 insertions, 0 deletions
diff --git a/src/gui/widgets/browserbox.cpp b/src/gui/widgets/browserbox.cpp index 5ded29c55..4af38bf67 100644 --- a/src/gui/widgets/browserbox.cpp +++ b/src/gui/widgets/browserbox.cpp @@ -645,6 +645,35 @@ void BrowserBox::updateHeight() } } +std::string BrowserBox::getTextAtPos(const int x, const int y) +{ + int textX = 0; + int textY = 0; + + getAbsolutePosition(textX, textY); + if (x < textX || y < textY) + return ""; // mouse position ourside of correct widget (outside of tab) + + textX = x - textX; + textY = y - textY; + + std::string str = ""; + + for (LinePartIterator i = mLineParts.begin(); + i != mLineParts.end(); + ++i) + { + const LinePart &part = *i; + if (part.mY + 50 < mYStart) + continue; + if (part.mY > textY) + break; + str = part.mText; + } + + return str; +} + LinePart::~LinePart() { if (mImage) diff --git a/src/gui/widgets/browserbox.h b/src/gui/widgets/browserbox.h index 06609b318..e26ae32e0 100644 --- a/src/gui/widgets/browserbox.h +++ b/src/gui/widgets/browserbox.h @@ -137,6 +137,7 @@ class BrowserBox : public gcn::Widget, * Handles mouse actions. */ void mousePressed(gcn::MouseEvent &event); + void mouseMoved(gcn::MouseEvent &event); /** @@ -198,6 +199,8 @@ class BrowserBox : public gcn::Widget, void setEnableImages(bool n) { mEnableImages = n; } + std::string getTextAtPos(const int x, const int y); + private: int calcHeight(); |