summary refs log tree commit diff
diff options
context:
space:
mode:
authorVika <vika@fireburn.ru>2024-08-25 19:26:16 +0300
committerVika <vika@fireburn.ru>2024-08-25 19:26:16 +0300
commitdd12f31bf504675abadb0e2c0cdb540597fc9220 (patch)
tree5c46d4a2696a752e15f9a9c25edbcb24e533ce5f
parent861e3ea8b58edc420f83bce93f9630151f16ece5 (diff)
downloadbowl-dd12f31bf504675abadb0e2c0cdb540597fc9220.tar.zst
Style changes to work better with the default theme
Yes, I'm stupid and I'm developing under a custom theme
-rw-r--r--src/components/post_editor.rs44
-rw-r--r--src/components/tag_pill.rs17
2 files changed, 41 insertions, 20 deletions
diff --git a/src/components/post_editor.rs b/src/components/post_editor.rs
index fe69ac7..86bd91d 100644
--- a/src/components/post_editor.rs
+++ b/src/components/post_editor.rs
@@ -139,10 +139,9 @@ impl<E: std::error::Error + std::fmt::Debug + Send + 'static> Component for Post
                         #[name = "name_label"]
                         gtk::Label {
                             set_markup: "Name",
-                            set_margin_vertical: 10,
                             set_margin_horizontal: 10,
                             set_halign: gtk::Align::Start,
-                            set_valign: gtk::Align::Start,
+                            set_valign: gtk::Align::Center,
                         },
                         #[name = "name_field"]
                         gtk::Entry {
@@ -155,10 +154,9 @@ impl<E: std::error::Error + std::fmt::Debug + Send + 'static> Component for Post
                         #[name = "summary_label"]
                         gtk::Label {
                             set_markup: "Summary",
-                            set_margin_vertical: 10,
                             set_margin_horizontal: 10,
                             set_halign: gtk::Align::Start,
-                            set_valign: gtk::Align::Start,
+                            set_valign: gtk::Align::Center,
                         },
                         #[name = "summary_field"]
                         gtk::Box {
@@ -178,17 +176,15 @@ impl<E: std::error::Error + std::fmt::Debug + Send + 'static> Component for Post
                         #[name = "tag_label"]
                         gtk::Label {
                             set_markup: "Tags",
-                            set_margin_vertical: 10,
                             set_margin_horizontal: 10,
                             set_halign: gtk::Align::Start,
-                            set_valign: gtk::Align::Start,
+                            set_valign: gtk::Align::Center,
                         },
                         #[name = "tag_holder"]
                         gtk::Box {
                             set_hexpand: true,
                             set_orientation: gtk::Orientation::Vertical,
                             set_spacing: 5,
-                            set_height_request: 36,
 
                             gtk::Box {
                                 add_css_class: "linked",
@@ -199,23 +195,29 @@ impl<E: std::error::Error + std::fmt::Debug + Send + 'static> Component for Post
                                     set_hexpand: true,
                                     set_width_request: 200,
                                     set_buffer: &model.pending_tag_buffer,
+                                    connect_activate => Self::Input::AddTagFromBuffer,
                                     #[track = "model.changed(Self::sending())"]
                                     set_sensitive: !model.sending,
                                 },
                                 gtk::Button {
-                                    set_icon_name: "plus-symbolic",
+                                    set_icon_name: "list-add-symbolic",
                                     add_css_class: "suggested-action",
                                     connect_clicked => Self::Input::AddTagFromBuffer,
                                 }
                             },
+                        },
 
-                            gtk::ScrolledWindow {
-                                gtk::Viewport {
-                                    set_scroll_to_focus: true,
+                        #[name = "tag_viewport"]
+                        gtk::ScrolledWindow {
+                            set_height_request: 32,
+                            set_valign: gtk::Align::Center,
 
-                                    #[wrap(Some)]
-                                    set_child = model.tags.widget(),
-                                }
+                            gtk::Viewport {
+                                set_scroll_to_focus: true,
+                                set_valign: gtk::Align::Center,
+
+                                #[wrap(Some)]
+                                set_child = model.tags.widget(),
                             }
                         },
 
@@ -395,6 +397,7 @@ impl<E: std::error::Error + std::fmt::Debug + Send + 'static> Component for Post
             model.visibility = post.visibility;
         }
 
+        let prev_layout = widgets.content.layout_manager().unwrap();
         let layout = &model.wide_layout;
         widgets.content.set_layout_manager(Some(layout.clone()));
         layout.set_column_homogeneous(false);
@@ -402,13 +405,15 @@ impl<E: std::error::Error + std::fmt::Debug + Send + 'static> Component for Post
 
         enum Row<'a> {
             TwoColumn(&'a gtk::Label, &'a gtk::Widget),
-            Span(&'a gtk::Widget)
+            Span(&'a gtk::Widget),
+            SecondColumn(&'a gtk::Widget)
         }
 
         for (row, content) in [
             Row::TwoColumn(&widgets.name_label, widgets.name_field.upcast_ref::<gtk::Widget>()),
             Row::TwoColumn(&widgets.summary_label, widgets.summary_field.upcast_ref::<gtk::Widget>()),
             Row::TwoColumn(&widgets.tag_label, widgets.tag_holder.upcast_ref::<gtk::Widget>()),
+            Row::SecondColumn(widgets.tag_viewport.upcast_ref::<gtk::Widget>()),
             Row::TwoColumn(&widgets.content_label, widgets.content_textarea_wrapper.upcast_ref::<gtk::Widget>()),
             Row::Span(widgets.misc_prop_wrapper.upcast_ref::<gtk::Widget>()),
         ].into_iter().enumerate() {
@@ -432,11 +437,18 @@ impl<E: std::error::Error + std::fmt::Debug + Send + 'static> Component for Post
                         .unwrap();
                     widget_layout.set_row(row as i32);
                     widget_layout.set_column_span(2);
+                },
+                Row::SecondColumn(widget) => {
+                    let widget_layout = layout.layout_child(widget)
+                        .downcast::<GridLayoutChild>()
+                        .unwrap();
+                    widget_layout.set_row(row as i32);
+                    widget_layout.set_column(1);
                 }
             }
         }
 
-        widgets.content.set_layout_manager(Some(model.narrow_layout.clone()));
+        widgets.content.set_layout_manager(Some(prev_layout));
 
         ComponentParts { model, widgets }
     }
diff --git a/src/components/tag_pill.rs b/src/components/tag_pill.rs
index 4947540..7579c0e 100644
--- a/src/components/tag_pill.rs
+++ b/src/components/tag_pill.rs
@@ -30,13 +30,22 @@ impl FactoryComponent for TagPill {
         relm4::view! {
             root = gtk::Box {
                 #[iterate]
-                add_css_class: &["pill", "frame"],
+                add_css_class: &["pill", "frame", "tag-pill"],
                 inline_css: "border-radius: 48px",
                 set_spacing: 6,
                 set_height_request: 32,
+                set_valign: gtk::Align::Center,
             }
         }
 
+        use gtk::prelude::StyleContextExt;
+        let css = gtk::CssProvider::new();
+        css.load_from_bytes(&glib::Bytes::from_static(b".tag-pill button {
+    min-height: 30px;
+    min-width: 30px;
+}"));
+
+        root.style_context().add_provider(&css, gtk::STYLE_PROVIDER_PRIORITY_APPLICATION + 2);
         root
     }
 
@@ -51,12 +60,12 @@ impl FactoryComponent for TagPill {
             label = gtk::Label {
                 set_text: &self.0,
                 set_margin_horizontal: 6,
-                set_margin_start: 12,
+                set_margin_start: 16,
             },
             button = gtk::Button {
                 #[iterate]
-                add_css_class: &["destructive-action", "flat", "circular"],
-                set_icon_name: "close-symbolic",
+                add_css_class: &["destructive-action", "circular"],
+                set_icon_name: "window-close-symbolic",
 
                 connect_clicked[sender, index] => move |_| {
                     let _ = sender.output(TagPillDelete(index.clone()));