aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main/data/preferences_window/change_password_dialog.ui3
-rw-r--r--main/data/style.css19
-rw-r--r--main/src/ui/call_window/call_bottom_bar.vala4
-rw-r--r--main/src/ui/conversation_content_view/conversation_item_skeleton.vala6
-rw-r--r--main/src/ui/conversation_content_view/message_widget.vala5
-rw-r--r--main/src/ui/conversation_selector/conversation_selector_row.vala22
-rw-r--r--main/src/ui/util/helper.vala35
-rw-r--r--main/src/ui/util/preference_group.vala3
-rw-r--r--main/src/windows/preferences_window/change_password_dialog.vala1
9 files changed, 47 insertions, 51 deletions
diff --git a/main/data/preferences_window/change_password_dialog.ui b/main/data/preferences_window/change_password_dialog.ui
index 05feda60..5629872c 100644
--- a/main/data/preferences_window/change_password_dialog.ui
+++ b/main/data/preferences_window/change_password_dialog.ui
@@ -76,6 +76,9 @@
<property name="halign">center</property>
<property name="hexpand">True</property>
<property name="margin-top">7</property>
+ <style>
+ <class name="error"/>
+ </style>
<attributes>
<attribute name="scale" value="0.9"></attribute>
</attributes>
diff --git a/main/data/style.css b/main/data/style.css
index db9f07c5..1700a624 100644
--- a/main/data/style.css
+++ b/main/data/style.css
@@ -96,6 +96,11 @@ window.dino-main .dino-conversation .message-box.edit-mode:hover {
background: alpha(@theme_selected_bg_color, 0.12);
}
+window.dino-main .dino-conversation .message-box.edit-mode frame {
+ border-radius: 3px;
+ padding: 0 7px;
+}
+
window.dino-main .dino-conversation .message-box.error {
background: alpha(@error_color, 0.1);
}
@@ -233,6 +238,20 @@ window.dino-main .dino-sidebar frame.auto-complete list > row {
transition: none;
}
+/* Sidebar tooltip */
+
+image.dino-status-away {
+ color: #ff7800;
+}
+
+image.dino-status-xa, image.dino-status-dnd {
+ color: #e01b24;
+}
+
+image.dino-status-online, image.dino-status-chat {
+ color: #33d17a;
+}
+
/* Time offset warning */
.dino-main .dino-conversation .time-offset {
diff --git a/main/src/ui/call_window/call_bottom_bar.vala b/main/src/ui/call_window/call_bottom_bar.vala
index dcb869c7..6f349cb9 100644
--- a/main/src/ui/call_window/call_bottom_bar.vala
+++ b/main/src/ui/call_window/call_bottom_bar.vala
@@ -108,7 +108,7 @@ public class Dino.Ui.CallBottomBar : Gtk.Box {
public void show_audio_device_error() {
audio_settings_button.set_icon_name("dino-dialog-warning-symbolic");
- Util.force_error_color(audio_settings_button);
+ audio_settings_button.add_css_class("error");
}
public VideoSettingsPopover? show_video_device_choices(bool show) {
@@ -125,7 +125,7 @@ public class Dino.Ui.CallBottomBar : Gtk.Box {
public void show_video_device_error() {
video_settings_button.set_icon_name("dino-dialog-warning-symbolic");
- Util.force_error_color(video_settings_button);
+ video_settings_button.add_css_class("error");
}
public void on_audio_enabled_changed() {
diff --git a/main/src/ui/conversation_content_view/conversation_item_skeleton.vala b/main/src/ui/conversation_content_view/conversation_item_skeleton.vala
index d8cf469c..5bf6b0ae 100644
--- a/main/src/ui/conversation_content_view/conversation_item_skeleton.vala
+++ b/main/src/ui/conversation_content_view/conversation_item_skeleton.vala
@@ -164,7 +164,7 @@ public class ConversationItemSkeleton : Plugins.ConversationItemWidgetInterface,
if (conversation.encryption != Encryption.NONE) {
encryption_image.icon_name = "dino-changes-allow-symbolic";
encryption_image.tooltip_text = Util.string_if_tooltips_active(_("Unencrypted"));
- Util.force_error_color(encryption_image);
+ encryption_image.add_css_class("error");
encryption_image.visible = true;
} else if (conversation.encryption == Encryption.NONE) {
encryption_image.icon_name = null;
@@ -203,8 +203,8 @@ public class ConversationItemSkeleton : Plugins.ConversationItemWidgetInterface,
break;
case Message.Marked.WONTSEND:
received_image.icon_name = "dino-dialog-warning-symbolic";
- Util.force_error_color(received_image);
- Util.force_error_color(time_label);
+ received_image.add_css_class("error");
+ time_label.add_css_class("error");
string error_text = Util.string_if_tooltips_active(_("Unable to send message"));
received_image.tooltip_text = error_text;
time_label.tooltip_text = error_text;
diff --git a/main/src/ui/conversation_content_view/message_widget.vala b/main/src/ui/conversation_content_view/message_widget.vala
index 7d441657..25d3775b 100644
--- a/main/src/ui/conversation_content_view/message_widget.vala
+++ b/main/src/ui/conversation_content_view/message_widget.vala
@@ -186,7 +186,8 @@ public class MessageMetaItem : ContentMetaItem {
}
} else if (message.direction == Message.DIRECTION_SENT && message.marked == Message.Marked.ERROR) {
// Append "delivery failed" if there was a server error
- string error_color = Util.rgba_to_hex(Util.get_label_pango_color(label, "@error_color"));
+ // TODO: Use a dedicated label, not appended text
+ string error_color = Util.rgba_to_hex(Util.get_label_pango_color(label, "error_color"));
markup_text += " <span size='small' color='%s'>%s</span>".printf(error_color, _("delivery failed"));
theme_dependent = true;
additional_info = AdditionalInfo.DELIVERY_FAILED;
@@ -337,8 +338,6 @@ public class MessageItemEditMode : Box {
[GtkChild] public unowned Frame frame;
construct {
- Util.force_css(frame, "* { border-radius: 3px; padding: 0px 7px; }");
-
EmojiChooser chooser = new EmojiChooser();
chooser.emoji_picked.connect((emoji) => {
chat_text_view.text_view.buffer.insert_at_cursor(emoji, emoji.data.length);
diff --git a/main/src/ui/conversation_selector/conversation_selector_row.vala b/main/src/ui/conversation_selector/conversation_selector_row.vala
index 73bc36bd..fd5814fa 100644
--- a/main/src/ui/conversation_selector/conversation_selector_row.vala
+++ b/main/src/ui/conversation_selector/conversation_selector_row.vala
@@ -322,12 +322,22 @@ public class ConversationSelectorRow : ListBoxRow {
image.set_from_icon_name("dino-device-desktop-symbolic");
}
- if (show == Presence.Stanza.SHOW_AWAY) {
- Util.force_color(image, "#FF9800");
- } else if (show == Presence.Stanza.SHOW_XA || show == Presence.Stanza.SHOW_DND) {
- Util.force_color(image, "#FF5722");
- } else {
- Util.force_color(image, "#4CAF50");
+ switch (show) {
+ case Presence.Stanza.SHOW_ONLINE:
+ image.add_css_class("dino-status-online");
+ break;
+ case Presence.Stanza.SHOW_CHAT:
+ image.add_css_class("dino-status-chat");
+ break;
+ case Presence.Stanza.SHOW_AWAY:
+ image.add_css_class("dino-status-away");
+ break;
+ case Presence.Stanza.SHOW_XA:
+ image.add_css_class("dino-status-xa");
+ break;
+ case Presence.Stanza.SHOW_DND:
+ image.add_css_class("dino-status-dnd");
+ break;
}
string? status = null;
diff --git a/main/src/ui/util/helper.vala b/main/src/ui/util/helper.vala
index 93437add..e9035be0 100644
--- a/main/src/ui/util/helper.vala
+++ b/main/src/ui/util/helper.vala
@@ -81,10 +81,10 @@ public static string get_occupant_display_name(StreamInteractor stream_interacto
return Dino.get_occupant_display_name(stream_interactor, conversation, jid, me_is_me ? _("Me") : null);
}
+[Version (deprecated = true)]
public static Gdk.RGBA get_label_pango_color(Label label, string css_color) {
- Gtk.CssProvider provider = force_color(label, css_color);
Gdk.RGBA color_rgba = label.get_style_context().get_color();
- label.get_style_context().remove_provider(provider);
+ label.get_style_context().lookup_color(css_color, out color_rgba);
return color_rgba;
}
@@ -97,37 +97,6 @@ public static string rgba_to_hex(Gdk.RGBA rgba) {
.up();
}
-private const string force_background_css = "%s { background-color: %s; }";
-private const string force_color_css = "%s { color: %s; }";
-
-public static Gtk.CssProvider force_css(Gtk.Widget widget, string css) {
- var p = new Gtk.CssProvider();
- try {
-#if GTK_4_12 && (VALA_0_56_GREATER_11 || VALA_0_58)
- p.load_from_string(css);
-#elif (VALA_0_56_11 || VALA_0_56_12)
- p.load_from_data(css, css.length);
-#else
- p.load_from_data(css.data);
-#endif
- widget.get_style_context().add_provider(p, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION);
- } catch (GLib.Error err) {
- // handle err
- }
- return p;
-}
-
-public static void force_background(Gtk.Widget widget, string color, string selector = "*") {
- force_css(widget, force_background_css.printf(selector, color));
-}
-
-public static Gtk.CssProvider force_color(Gtk.Widget widget, string color, string selector = "*") {
- return force_css(widget, force_color_css.printf(selector, color));
-}
-
-public static void force_error_color(Gtk.Widget widget, string selector = "*") {
- force_color(widget, "@error_color", selector);
-}
public static bool is_dark_theme(Gtk.Widget widget) {
Gdk.RGBA bg = widget.get_style_context().get_color();
diff --git a/main/src/ui/util/preference_group.vala b/main/src/ui/util/preference_group.vala
index 3911bb80..f34f0d92 100644
--- a/main/src/ui/util/preference_group.vala
+++ b/main/src/ui/util/preference_group.vala
@@ -86,9 +86,6 @@ namespace Dino.Ui.Util {
};
row_text.bind_property("text", view, "subtitle", BindingFlags.SYNC_CREATE, null_string_to_empty);
view.add_css_class("property");
-
- Util.force_css(view, "row.property > box.header > box.title > .title { font-weight: 400; font-size: 9pt; opacity: 0.55; }");
- Util.force_css(view, "row.property > box.header > box.title > .subtitle { font-size: inherit; opacity: 1; }");
}
var toggle_view_model = preferences_row as ViewModel.PreferencesRow.Toggle;
diff --git a/main/src/windows/preferences_window/change_password_dialog.vala b/main/src/windows/preferences_window/change_password_dialog.vala
index 4a2c136c..388c2f3d 100644
--- a/main/src/windows/preferences_window/change_password_dialog.vala
+++ b/main/src/windows/preferences_window/change_password_dialog.vala
@@ -22,7 +22,6 @@ namespace Dino.Ui{
public ChangePasswordDialog(ViewModel.ChangePasswordDialog model) {
this.model = model;
- Util.force_error_color(change_password_error_label);
cancel_button.clicked.connect(() => { close(); });
current_password_entry.changed.connect(is_form_filled);
new_password_entry.changed.connect(is_form_filled);