summaryrefslogtreecommitdiff
path: root/src/windows
diff options
context:
space:
mode:
Diffstat (limited to 'src/windows')
-rw-r--r--src/windows/guildsettings/infopane.cpp7
-rw-r--r--src/windows/mainwindow.cpp54
-rw-r--r--src/windows/mainwindow.hpp8
-rw-r--r--src/windows/profile/userinfopane.cpp4
-rw-r--r--src/windows/profilewindow.cpp4
5 files changed, 51 insertions, 26 deletions
diff --git a/src/windows/guildsettings/infopane.cpp b/src/windows/guildsettings/infopane.cpp
index 578aaac..a27c1a8 100644
--- a/src/windows/guildsettings/infopane.cpp
+++ b/src/windows/guildsettings/infopane.cpp
@@ -56,10 +56,9 @@ GuildSettingsInfoPane::GuildSettingsInfoPane(Snowflake id)
guild_icon_url = guild.GetIconURL("gif", "512");
else
guild_icon_url = guild.GetIconURL("png", "512");
- m_guild_icon_ev.signal_button_press_event().connect([guild_icon_url](GdkEventButton *event) -> bool {
- if (event->type == GDK_BUTTON_PRESS)
- if (event->button == GDK_BUTTON_PRIMARY)
- LaunchBrowser(guild_icon_url);
+ m_guild_icon_ev.signal_button_release_event().connect([guild_icon_url](GdkEventButton *event) -> bool {
+ if (event->type == GDK_BUTTON_RELEASE && event->button == GDK_BUTTON_PRIMARY)
+ LaunchBrowser(guild_icon_url);
return false;
});
diff --git a/src/windows/mainwindow.cpp b/src/windows/mainwindow.cpp
index 17edfa3..8a85d49 100644
--- a/src/windows/mainwindow.cpp
+++ b/src/windows/mainwindow.cpp
@@ -158,6 +158,10 @@ void MainWindow::UpdateMenus() {
OnViewSubmenuPopup();
}
+void MainWindow::ToggleMenuVisibility() {
+ m_menu_bar.set_visible(!m_menu_bar.get_visible());
+}
+
#ifdef WITH_LIBHANDY
void MainWindow::GoBack() {
m_chat.GoBack();
@@ -195,7 +199,6 @@ void MainWindow::OnDiscordSubmenuPopup() {
std::string token = Abaddon::Get().GetDiscordToken();
m_menu_discord_connect.set_sensitive(!token.empty() && !discord_active);
m_menu_discord_disconnect.set_sensitive(discord_active);
- m_menu_discord_join_guild.set_sensitive(discord_active);
m_menu_discord_set_token.set_sensitive(!discord_active);
m_menu_discord_set_status.set_sensitive(discord_active);
}
@@ -238,15 +241,12 @@ void MainWindow::SetupMenu() {
m_menu_discord_disconnect.set_label("Disconnect");
m_menu_discord_disconnect.set_sensitive(false);
m_menu_discord_set_token.set_label("Set Token");
- m_menu_discord_join_guild.set_label("Accept Invite");
- m_menu_discord_join_guild.set_sensitive(false);
m_menu_discord_set_status.set_label("Set Status");
m_menu_discord_set_status.set_sensitive(false);
m_menu_discord_add_recipient.set_label("Add user to DM");
m_menu_discord_sub.append(m_menu_discord_connect);
m_menu_discord_sub.append(m_menu_discord_disconnect);
m_menu_discord_sub.append(m_menu_discord_set_token);
- m_menu_discord_sub.append(m_menu_discord_join_guild);
m_menu_discord_sub.append(m_menu_discord_set_status);
m_menu_discord_sub.append(m_menu_discord_add_recipient);
m_menu_discord.set_submenu(m_menu_discord_sub);
@@ -265,6 +265,12 @@ void MainWindow::SetupMenu() {
m_menu_view_threads.set_label("Threads");
m_menu_view_mark_guild_as_read.set_label("Mark Server as Read");
m_menu_view_mark_guild_as_read.add_accelerator("activate", m_accels, GDK_KEY_Escape, Gdk::SHIFT_MASK, Gtk::ACCEL_VISIBLE);
+ m_menu_view_channels.set_label("Channels");
+ m_menu_view_channels.add_accelerator("activate", m_accels, GDK_KEY_L, Gdk::CONTROL_MASK, Gtk::ACCEL_VISIBLE);
+ m_menu_view_channels.set_active(true);
+ m_menu_view_members.set_label("Members");
+ m_menu_view_members.add_accelerator("activate", m_accels, GDK_KEY_M, Gdk::CONTROL_MASK, Gtk::ACCEL_VISIBLE);
+ m_menu_view_members.set_active(true);
#ifdef WITH_LIBHANDY
m_menu_view_go_back.set_label("Go Back");
m_menu_view_go_forward.set_label("Go Forward");
@@ -275,6 +281,8 @@ void MainWindow::SetupMenu() {
m_menu_view_sub.append(m_menu_view_pins);
m_menu_view_sub.append(m_menu_view_threads);
m_menu_view_sub.append(m_menu_view_mark_guild_as_read);
+ m_menu_view_sub.append(m_menu_view_channels);
+ m_menu_view_sub.append(m_menu_view_members);
#ifdef WITH_LIBHANDY
m_menu_view_sub.append(m_menu_view_go_back);
m_menu_view_sub.append(m_menu_view_go_forward);
@@ -283,7 +291,25 @@ void MainWindow::SetupMenu() {
m_menu_bar.append(m_menu_file);
m_menu_bar.append(m_menu_discord);
m_menu_bar.append(m_menu_view);
- m_menu_bar.show_all();
+
+ if (Abaddon::Get().GetSettings().AltMenu) {
+ auto set_hide_cb = [this](Gtk::Menu &menu) {
+ for (auto *child : menu.get_children()) {
+ auto *item = dynamic_cast<Gtk::MenuItem *>(child);
+ if (item != nullptr) {
+ item->signal_activate().connect([this]() {
+ m_menu_bar.hide();
+ });
+ }
+ }
+ };
+ set_hide_cb(m_menu_discord_sub);
+ set_hide_cb(m_menu_file_sub);
+ set_hide_cb(m_menu_view_sub);
+ m_menu_bar.show_all_children();
+ } else {
+ m_menu_bar.show_all();
+ }
m_menu_discord_connect.signal_activate().connect([this] {
m_signal_action_connect.emit();
@@ -297,10 +323,6 @@ void MainWindow::SetupMenu() {
m_signal_action_set_token.emit();
});
- m_menu_discord_join_guild.signal_activate().connect([this] {
- m_signal_action_join_guild.emit();
- });
-
m_menu_file_reload_css.signal_activate().connect([this] {
m_signal_action_reload_css.emit();
});
@@ -340,6 +362,14 @@ void MainWindow::SetupMenu() {
}
});
+ m_menu_view_channels.signal_activate().connect([this]() {
+ m_channel_list.set_visible(m_menu_view_channels.get_active());
+ });
+
+ m_menu_view_members.signal_activate().connect([this]() {
+ m_members.GetRoot()->set_visible(m_menu_view_members.get_active());
+ });
+
#ifdef WITH_LIBHANDY
m_menu_view_go_back.signal_activate().connect([this] {
GoBack();
@@ -383,10 +413,6 @@ MainWindow::type_signal_action_reload_css MainWindow::signal_action_reload_css()
return m_signal_action_reload_css;
}
-MainWindow::type_signal_action_join_guild MainWindow::signal_action_join_guild() {
- return m_signal_action_join_guild;
-}
-
MainWindow::type_signal_action_set_status MainWindow::signal_action_set_status() {
return m_signal_action_set_status;
}
@@ -401,4 +427,4 @@ MainWindow::type_signal_action_view_pins MainWindow::signal_action_view_pins() {
MainWindow::type_signal_action_view_threads MainWindow::signal_action_view_threads() {
return m_signal_action_view_threads;
-}
+} \ No newline at end of file
diff --git a/src/windows/mainwindow.hpp b/src/windows/mainwindow.hpp
index b5b6fc1..78e0115 100644
--- a/src/windows/mainwindow.hpp
+++ b/src/windows/mainwindow.hpp
@@ -24,6 +24,7 @@ public:
void UpdateChatReactionAdd(Snowflake id, const Glib::ustring &param);
void UpdateChatReactionRemove(Snowflake id, const Glib::ustring &param);
void UpdateMenus();
+ void ToggleMenuVisibility();
#ifdef WITH_LIBHANDY
void GoBack();
@@ -63,7 +64,6 @@ private:
Gtk::MenuItem m_menu_discord_connect;
Gtk::MenuItem m_menu_discord_disconnect;
Gtk::MenuItem m_menu_discord_set_token;
- Gtk::MenuItem m_menu_discord_join_guild;
Gtk::MenuItem m_menu_discord_set_status;
Gtk::MenuItem m_menu_discord_add_recipient; // move me somewhere else some day
void OnDiscordSubmenuPopup();
@@ -79,10 +79,13 @@ private:
Gtk::MenuItem m_menu_view_pins;
Gtk::MenuItem m_menu_view_threads;
Gtk::MenuItem m_menu_view_mark_guild_as_read;
+ Gtk::CheckMenuItem m_menu_view_channels;
+ Gtk::CheckMenuItem m_menu_view_members;
#ifdef WITH_LIBHANDY
Gtk::MenuItem m_menu_view_go_back;
Gtk::MenuItem m_menu_view_go_forward;
#endif
+
void OnViewSubmenuPopup();
public:
@@ -90,7 +93,6 @@ public:
typedef sigc::signal<void> type_signal_action_disconnect;
typedef sigc::signal<void> type_signal_action_set_token;
typedef sigc::signal<void> type_signal_action_reload_css;
- typedef sigc::signal<void> type_signal_action_join_guild;
typedef sigc::signal<void> type_signal_action_set_status;
// this should probably be removed
typedef sigc::signal<void, Snowflake> type_signal_action_add_recipient; // channel id
@@ -101,7 +103,6 @@ public:
type_signal_action_disconnect signal_action_disconnect();
type_signal_action_set_token signal_action_set_token();
type_signal_action_reload_css signal_action_reload_css();
- type_signal_action_join_guild signal_action_join_guild();
type_signal_action_set_status signal_action_set_status();
type_signal_action_add_recipient signal_action_add_recipient();
type_signal_action_view_pins signal_action_view_pins();
@@ -112,7 +113,6 @@ private:
type_signal_action_disconnect m_signal_action_disconnect;
type_signal_action_set_token m_signal_action_set_token;
type_signal_action_reload_css m_signal_action_reload_css;
- type_signal_action_join_guild m_signal_action_join_guild;
type_signal_action_set_status m_signal_action_set_status;
type_signal_action_add_recipient m_signal_action_add_recipient;
type_signal_action_view_pins m_signal_action_view_pins;
diff --git a/src/windows/profile/userinfopane.cpp b/src/windows/profile/userinfopane.cpp
index a17dbff..b62da93 100644
--- a/src/windows/profile/userinfopane.cpp
+++ b/src/windows/profile/userinfopane.cpp
@@ -41,13 +41,13 @@ ConnectionItem::ConnectionItem(const ConnectionData &conn)
m_box.add(m_name);
if (!url.empty()) {
auto cb = [url](GdkEventButton *event) -> bool {
- if (event->type == GDK_BUTTON_PRESS && event->button == GDK_BUTTON_PRIMARY) {
+ if (event->type == GDK_BUTTON_RELEASE && event->button == GDK_BUTTON_PRIMARY) {
LaunchBrowser(url);
return true;
}
return false;
};
- signal_button_press_event().connect(sigc::track_obj(cb, *this));
+ signal_button_release_event().connect(sigc::track_obj(cb, *this));
AddPointerCursor(*this);
}
m_overlay.add(m_box);
diff --git a/src/windows/profilewindow.cpp b/src/windows/profilewindow.cpp
index aff98c5..d73731d 100644
--- a/src/windows/profilewindow.cpp
+++ b/src/windows/profilewindow.cpp
@@ -34,8 +34,8 @@ ProfileWindow::ProfileWindow(Snowflake user_id)
if (user.HasAvatar())
AddPointerCursor(m_avatar_ev);
- m_avatar_ev.signal_button_press_event().connect([user](GdkEventButton *event) -> bool {
- if (event->type == GDK_BUTTON_PRESS && event->button == GDK_BUTTON_PRIMARY) {
+ m_avatar_ev.signal_button_release_event().connect([user](GdkEventButton *event) -> bool {
+ if (event->type == GDK_BUTTON_RELEASE && event->button == GDK_BUTTON_PRIMARY) {
if (user.HasAnimatedAvatar())
LaunchBrowser(user.GetAvatarURL("gif", "512"));
else