aboutsummaryrefslogtreecommitdiff
path: root/src/ChatWindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ChatWindow.cpp')
-rw-r--r--src/ChatWindow.cpp27
1 files changed, 15 insertions, 12 deletions
diff --git a/src/ChatWindow.cpp b/src/ChatWindow.cpp
index 473b5d1..529b857 100644
--- a/src/ChatWindow.cpp
+++ b/src/ChatWindow.cpp
@@ -40,8 +40,9 @@ namespace dchat
stack.add(roomSettingsWindow, "settings");
stack.add(roomNotificationsWindow, "notifications");
- Gtk::Paned *sidePanels = Gtk::manage(new Gtk::Paned(Gtk::ORIENTATION_HORIZONTAL));
+ Gtk::ResponsivePaned *sidePanels = Gtk::manage(new Gtk::ResponsivePaned(Gtk::ORIENTATION_HORIZONTAL));
sidePanels->get_style_context()->add_class("side-panels");
+ sidePanels->set_wide_handle(true);
chatPage.attach(*sidePanels, 0, 1, 1, 2);
setupLeftPanel(sidePanels);
@@ -116,15 +117,15 @@ namespace dchat
});
}
- void ChatWindow::setupLeftPanel(Gtk::Paned *sidePanels)
+ void ChatWindow::setupLeftPanel(Gtk::ResponsivePaned *sidePanels)
{
Gtk::Grid *leftPanelLayout = Gtk::manage(new Gtk::Grid());
leftPanelLayout->set_vexpand(true);
- leftPanelLayout->set_size_request(200);
+ leftPanelLayout->set_size_request(190);
leftPanelLayout->get_style_context()->add_class("left-panel");
sidePanels->add1(*leftPanelLayout);
- Gtk::Paned *leftPanel = Gtk::manage(new Gtk::Paned(Gtk::ORIENTATION_VERTICAL));
+ Gtk::ResponsivePaned *leftPanel = Gtk::manage(new Gtk::ResponsivePaned(Gtk::ORIENTATION_VERTICAL));
leftPanel->set_vexpand(true);
leftPanelLayout->attach(*leftPanel, 0, 0, 1, 2);
@@ -141,11 +142,13 @@ namespace dchat
channelsLayout->attach(*channelsTitle, 0, 0, 1, 1);
Gtk::ScrolledWindow *channelsScrollWindow = Gtk::manage(new Gtk::ScrolledWindow());
+ channelsScrollWindow->set_policy(Gtk::PolicyType::POLICY_NEVER, Gtk::PolicyType::POLICY_NEVER);
channelsScrollWindow->set_vexpand(true);
channelsScrollWindow->set_hexpand(true);
channelsScrollWindow->set_overlay_scrolling(false);
channelsLayout->attach_next_to(*channelsScrollWindow, *channelsTitle, Gtk::POS_BOTTOM, 1, 2);
+ leftPanelChannels.set_row_spacing(5);
leftPanelChannels.set_vexpand(true);
leftPanelChannels.set_hexpand(true);
channelsScrollWindow->add(leftPanelChannels);
@@ -228,14 +231,15 @@ namespace dchat
messageArea.set_policy(Gtk::PolicyType::POLICY_NEVER, Gtk::PolicyType::POLICY_AUTOMATIC);
rightPanel->attach(messageArea, 0, 0, 1, 2);
- messageAreaStack.set_name("chat-area-layout");
+ messageAreaStack.set_name("message-area-layout");
messageArea.add(messageAreaStack);
}
void ChatWindow::setupChatInput(Gtk::Grid *rightPanel)
{
Gtk::Grid *chatArea = Gtk::manage(new Gtk::Grid());
- rightPanel->attach_next_to(*chatArea, messageArea, Gtk::POS_BOTTOM, 1, 1);
+ chatArea->set_name("chat-area");
+ rightPanel->attach(*chatArea, 0, 2, 1, 1);
Gtk::ScrolledWindow *chatScrollWindow = Gtk::manage(new Gtk::ScrolledWindow());
chatScrollWindow->set_hexpand(true);
@@ -353,12 +357,10 @@ namespace dchat
messageAreaStack.add(*messageAreaLayout, roomIdStr);
fprintf(stderr, "Added channel %s\n", room->id->toString().c_str());
- Gtk::ToggleButton *roomButton = new Gtk::ToggleButton("Room name");
- roomButton->set_active(true);
+ Gtk::RadioButton *roomButton = new Gtk::RadioButton("Room name");
+ roomButton->property_draw_indicator().set_value(false);
roomButton->get_style_context()->add_class("room-button");
roomButton->set_hexpand(true);
- roomButton->set_halign(Gtk::ALIGN_START);
- roomButton->get_child()->set_halign(Gtk::ALIGN_START);
roomButton->show();
roomButton->signal_clicked().connect([this, room]
{
@@ -371,6 +373,7 @@ namespace dchat
roomDataById[*room->id] = roomData;
if(!currentRoom)
{
+ roomButton->set_active(true);
currentRoom = room;
currentRoomData = roomData;
if(room->localUser)
@@ -480,8 +483,8 @@ namespace dchat
void ChatWindow::changeRoomName(const RoomChangeNameRequest &request)
{
- Gtk::Button *button = roomDataById[*request.room->id]->button;
- static_cast<Gtk::Label*>(button->get_child())->set_text(request.newName);
+ Gtk::RadioButton *button = roomDataById[*request.room->id]->button;
+ button->set_label(request.newName);
if(*request.room->id == *currentRoom->id)
topbar->setTitle(request.newName);
fprintf(stderr, "Changed room %s name to %s\n", request.room->id->toString().c_str(), request.newName.c_str());