summaryrefslogtreecommitdiff
path: root/src/gui/chat.cpp
diff options
context:
space:
mode:
authorPhilipp Sehmisch <crush@themanaworld.org>2009-08-16 17:47:51 +0200
committerPhilipp Sehmisch <crush@themanaworld.org>2009-08-16 17:47:51 +0200
commite0ba8f7f67ddd08c54f0d453a316b3620d52529d (patch)
tree7324fa33f2c6af04067b77e0ce7f73d9effed1c6 /src/gui/chat.cpp
parent346d68307553c18777df4c49f9b3fe57955c5c0d (diff)
parent6460413ee2f50be561fd0824e3eaa9c2c09415b1 (diff)
downloadmana-e0ba8f7f67ddd08c54f0d453a316b3620d52529d.tar.gz
mana-e0ba8f7f67ddd08c54f0d453a316b3620d52529d.tar.bz2
mana-e0ba8f7f67ddd08c54f0d453a316b3620d52529d.tar.xz
mana-e0ba8f7f67ddd08c54f0d453a316b3620d52529d.zip
Merged changes from last month with a commit I forgot to commit before I went on vacation.
Diffstat (limited to 'src/gui/chat.cpp')
-rw-r--r--src/gui/chat.cpp44
1 files changed, 42 insertions, 2 deletions
diff --git a/src/gui/chat.cpp b/src/gui/chat.cpp
index 1ce1b77c..c337d33b 100644
--- a/src/gui/chat.cpp
+++ b/src/gui/chat.cpp
@@ -23,6 +23,7 @@
#include "gui/itemlinkhandler.h"
#include "gui/recorder.h"
+#include "gui/setup.h"
#include "gui/sdlinput.h"
#include "gui/widgets/chattab.h"
@@ -39,6 +40,7 @@
#include "net/net.h"
#include "utils/dtor.h"
+#include "utils/gettext.h"
#include "utils/stringutils.h"
#include <guichan/focushandler.hpp>
@@ -76,6 +78,8 @@ ChatWindow::ChatWindow():
{
setWindowName("Chat");
+ setupWindow->registerWindowForReset(this);
+
// no title presented, title bar is padding so window can be moved.
gcn::Window::setTitleBarHeight(gcn::Window::getPadding() + 4);
setShowTitle(false);
@@ -138,9 +142,14 @@ void ChatWindow::adjustTabSize()
ChatTab *tab = getFocused();
if (tab) {
gcn::Widget *content = tab->mScrollArea;
+ bool scrollLock = false;
+ if(tab->mScrollArea->getVerticalMaxScroll() == tab->mScrollArea->getVerticalScrollAmount())
+ scrollLock = true;
content->setSize(mChatTabs->getWidth() - 2 * content->getFrameSize(),
mChatTabs->getContainerHeight() - 2 * content->getFrameSize());
content->logic();
+ if(scrollLock)
+ tab->mScrollArea->setVerticalScrollAmount(tab->mScrollArea->getVerticalMaxScroll());
}
}
@@ -323,8 +332,8 @@ void ChatWindow::doPresent()
}
}
- std::string cpc = strprintf(_("%d players are present."), playercount);
- std::string log = _("Present: ") + response + std::string("; ") + cpc;
+ std::string log = strprintf(_("Present: %s; %d players are present."),
+ response.c_str(), playercount);
if (mRecorder->isRecording())
{
@@ -360,6 +369,37 @@ void ChatWindow::scroll(int amount)
tab->scroll(amount);
}
+void ChatWindow::mousePressed(gcn::MouseEvent &event)
+{
+ Window::mousePressed(event);
+
+ if(event.isConsumed())
+ return;
+
+ mMoved = event.getY() <= mCurrentTab->getHeight();
+ mDragOffsetX = event.getX();
+ mDragOffsetY = event.getY();
+
+}
+
+void ChatWindow::mouseDragged(gcn::MouseEvent &event)
+{
+ Window::mouseDragged(event);
+
+ if(event.isConsumed())
+ return;
+
+ if(isMovable() && mMoved)
+ {
+ int newX = std::max(0, getX() + event.getX() - mDragOffsetX);
+ int newY = std::max(0, getY() + event.getY() - mDragOffsetY);
+ newX = std::min(graphics->getWidth() - getWidth(), newX);
+ newY = std::min(graphics->getHeight() - getHeight(), newY);
+ setPosition(newX, newY);
+ }
+}
+
+
void ChatWindow::keyPressed(gcn::KeyEvent &event)
{
if (event.getKey().getValue() == Key::DOWN)