3131typedef 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+
4454static 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