Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2013-11-08 17:53:54 +0000
committerStijn Buys <ingar@osirion.org>2013-11-08 17:53:54 +0000
commit995a12fca267302d267ea59cf1c7c631b9e1075f (patch)
tree41920a11a3963f0872eebb7b592259c8797c1bce /src/client/chat.cc
parentbeefcbd30e5cb1b700c977090021cd4784989c1e (diff)
Updated inventory, chat, map and reputation windows.
Diffstat (limited to 'src/client/chat.cc')
-rw-r--r--src/client/chat.cc62
1 files changed, 46 insertions, 16 deletions
diff --git a/src/client/chat.cc b/src/client/chat.cc
index 25b437c..21fe698 100644
--- a/src/client/chat.cc
+++ b/src/client/chat.cc
@@ -25,7 +25,7 @@ Chat::Chat(ui::Widget *parent) : ui::Window(parent)
history.push_back("");
history_pos = history.rbegin();
- // window title
+ // window title
chat_titlelabel = new ui::Label(this);
chat_titlelabel->set_label("title");
chat_titlelabel->set_background(false);
@@ -37,14 +37,25 @@ Chat::Chat(ui::Widget *parent) : ui::Window(parent)
// close button
chat_closebutton = new ui::IconButton(chat_titlelabel, "bitmaps/icons/window_close");
- chat_scrollpane = new ui::ScrollPane(this, chat_log);
+ // player list
+ chat_playerlist = new ui::ListView(this);
+ chat_playerlist->set_label("playerlist");
+
+ // ---- right pane
+ chat_pane_right = new ui::Widget(this);
+ chat_pane_right->set_background(true);
+ chat_pane_right->set_border(true);
+ chat_pane_right->set_focus();
+
+ // chat text
+ chat_scrollpane = new ui::ScrollPane(chat_pane_right, chat_log);
+ chat_scrollpane->set_background(false);
chat_scrollpane->set_border(false);
chat_scrollpane->set_label("text");
- chat_playerlist = new ui::ListView(this);
- chat_playerlist->set_label("playerlist");
-
- chat_input = new ui::InputBox(this);
+ // chat input
+ chat_input = new ui::InputBox(chat_pane_right);
+ chat_input->set_background(false);
chat_input->set_border(false);
set_prompt();
chat_input->set_focus();
@@ -254,14 +265,22 @@ void Chat::resize()
const float padding = ui::root()->font_large()->height();
if (chat_small) {
+ chat_titlelabel->hide();
chat_playerlist->hide();
chat_scrollpane->hide();
- chat_titlelabel->hide();
+
+ // resize right panbe to input bar size
+ chat_pane_right->set_size(size());
+ chat_pane_right->set_location(0.0f, 0.0f);
+
+ // input bar
+ chat_input->set_size(chat_pane_right->width() - 2.0f * padding, chat_input->font()->height());
+ chat_input->set_location(padding, (chat_pane_right->height() - chat_input->height()) * 0.5f );
} else {
+ chat_titlelabel->show();
chat_playerlist->show();
chat_scrollpane->show();
- chat_titlelabel->show();
// resize title label
chat_titlelabel->set_size(width() - padding * 2.0f, chat_titlelabel->font()->height());
@@ -270,19 +289,30 @@ void Chat::resize()
// resize close button
chat_closebutton->set_size(chat_titlelabel->font()->height(), chat_titlelabel->font()->height());
chat_closebutton->set_location(chat_titlelabel->width() - chat_closebutton->width(), 0);
-
+
// resize player names listview
chat_playerlist->set_location(padding, chat_titlelabel->bottom() + padding);
- chat_playerlist->set_size(ui::UI::elementsize.width(), height() - chat_playerlist->top() - padding * 2.0f);
+ chat_playerlist->set_size(ui::UI::elementsize.width(), height() - chat_titlelabel->bottom() - padding * 2.0f);
+
+ // resize right pane
+ chat_pane_right->set_size(width() - chat_playerlist->right() - padding * 2.0f, chat_playerlist->height());
+ chat_pane_right->set_location(chat_playerlist->right() + padding, chat_titlelabel->bottom() + padding);
+
+ {
+ const ui::Widget *pane = chat_pane_right;
+ const float margin_horizontal = pane->font()->width();
+ const float margin_vertical = pane->font()->height() * 0.5f;
- // resize chat text pane
- chat_scrollpane->set_location(chat_playerlist->right() + padding, chat_titlelabel->bottom() + padding);
- chat_scrollpane->set_size(width() - chat_scrollpane->left() - padding, chat_playerlist->height());
+ // resize input bar
+ chat_input->set_size(pane->width() - 2.0f * margin_horizontal, chat_input->font()->height());
+ chat_input->set_location(margin_horizontal, pane->height() - chat_input->height() - margin_vertical);
+
+ // resize chat text pane
+ chat_scrollpane->set_size(pane->width() - 2.0f * margin_horizontal, chat_input->top() - 2.0f * margin_vertical);
+ chat_scrollpane->set_location(margin_horizontal, margin_vertical);
+ }
}
- // input bar
- chat_input->set_location(padding, height() - padding);
- chat_input->set_size(width() - 2.0f * padding , padding);
}