Skip to content

Commit 356104d

Browse files
committed
workspace: Do not allow empty workspace name.
Fixes #19616.
1 parent 047092b commit 356104d

File tree

1 file changed

+18
-3
lines changed

1 file changed

+18
-3
lines changed

src/gui/workspace.c

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
typedef struct _workspace_t {
3232
GtkWidget *db_screen;
3333
GtkWidget *entry;
34+
GtkWidget *create;
3435
const char *datadir;
3536
} dt_workspace_t;
3637

@@ -41,6 +42,15 @@ static void _workspace_screen_destroy(dt_workspace_t *session)
4142
session->db_screen = NULL;
4243
}
4344

45+
static void _workspace_entry_changed(GtkWidget *button, dt_workspace_t *session)
46+
{
47+
const gchar *label = gtk_entry_get_text(GTK_ENTRY(session->entry));
48+
49+
const gboolean status = strlen(label) != 0;
50+
51+
gtk_widget_set_sensitive(session->create, status);
52+
}
53+
4454
static void _workspace_delete_db(GtkWidget *button, dt_workspace_t *session)
4555
{
4656
GtkWidget *b = g_object_get_data(G_OBJECT(button), "db");
@@ -208,10 +218,15 @@ void dt_workspace_create(const char *datadir)
208218

209219
GtkBox *box = GTK_BOX(dt_gui_hbox());
210220
session->entry = gtk_entry_new();
211-
GtkWidget *create = gtk_button_new_with_label(_("create"));
212-
g_signal_connect(G_OBJECT(create), "clicked",
221+
g_signal_connect(G_OBJECT(session->entry),
222+
"changed", G_CALLBACK(_workspace_entry_changed), session);
223+
224+
session->create = gtk_button_new_with_label(_("create"));
225+
gtk_widget_set_sensitive(session->create, FALSE);
226+
227+
g_signal_connect(G_OBJECT(session->create), "clicked",
213228
G_CALLBACK(_workspace_new_db), session);
214-
dt_gui_box_add(box, session->entry, create);
229+
dt_gui_box_add(box, session->entry, session->create);
215230

216231
dt_gui_dialog_add(session->db_screen, l2, box);
217232

0 commit comments

Comments
 (0)