diff --git a/src/ui/sheet_edit_dialog.rs b/src/ui/sheet_edit_dialog.rs
index 17ef9a5..052e07b 100644
--- a/src/ui/sheet_edit_dialog.rs
+++ b/src/ui/sheet_edit_dialog.rs
@@ -3,6 +3,7 @@ use std::sync::Arc;
 
 use relm4::{
     component::{AsyncComponent, AsyncComponentParts, Connector},
+    gtk::EntryBuffer,
     prelude::*,
     AsyncComponentSender,
 };
@@ -14,8 +15,8 @@ pub struct SheetEditDialogModel {
     database: Arc<Database>,
     hidden: bool,
     sheet: Option<Sheet>,
-    sheet_name: String,
-    sheet_composer: String,
+    name_entry_buffer: EntryBuffer,
+    composer_entry_buffer: EntryBuffer,
     is_book: bool,
     book_sheets: Vec<(String, String, i64)>,
     alert_empty_fields: Connector<Alert>,
@@ -62,8 +63,7 @@ impl AsyncComponent for SheetEditDialogModel {
                         set_text: "Sheet name"
                     },
                     gtk::Entry {
-                        #[watch]
-                        set_text: &model.sheet_name,
+                        set_buffer: &model.name_entry_buffer,
                         set_width_chars: 40,
                     },
                 },
@@ -73,8 +73,7 @@ impl AsyncComponent for SheetEditDialogModel {
                         set_text: "Sheet composer"
                     },
                     gtk::Entry {
-                        #[watch]
-                        set_text : &model.sheet_composer,
+                        set_buffer: &model.composer_entry_buffer,
                         set_hexpand: true,
                     },
                 },
@@ -153,8 +152,8 @@ impl AsyncComponent for SheetEditDialogModel {
             database: params.database,
             hidden: false,
             sheet: Some(sheet),
-            sheet_name,
-            sheet_composer,
+            name_entry_buffer: EntryBuffer::new(Some(sheet_name)),
+            composer_entry_buffer: EntryBuffer::new(Some(sheet_composer)),
             is_book,
             book_sheets: Vec::new(),
             alert_empty_fields: Alert::builder().transient_for(&root).launch(AlertSettings {
@@ -183,10 +182,17 @@ impl AsyncComponent for SheetEditDialogModel {
         match msg {
             SheetEditDialogInput::Accept => {
                 if let Some(_sheet) = &self.sheet {
-                    if self.sheet_name.is_empty() || self.sheet_composer.is_empty() {
+                    let sheet_name_string = self.name_entry_buffer.text();
+                    let sheet_name = sheet_name_string.trim();
+
+                    let sheet_composer_string = self.composer_entry_buffer.text();
+                    let sheet_composer = sheet_composer_string.trim();
+
+                    if sheet_name.is_empty() || sheet_composer.is_empty() {
                         self.alert_empty_fields.emit(AlertMsg::Show);
                         return;
                     }
+
                     //     match sheet.kind.borrow_mut() {
                     //         crate::sheet::SheetKind::Sheet {
                     //             name,