diff --git a/data/ui/window.ui b/data/ui/window.ui
index cb5bf68c..c5065e03 100644
--- a/data/ui/window.ui
+++ b/data/ui/window.ui
@@ -348,6 +348,7 @@
True
True
none
+
diff --git a/src/gcal-window.c b/src/gcal-window.c
index 6966bc28..3864884b 100644
--- a/src/gcal-window.c
+++ b/src/gcal-window.c
@@ -189,6 +189,7 @@ static void add_source (GcalManager *m
gboolean enabled,
gpointer user_data);
+
static GtkWidget* make_row_for_source (GcalWindow *window,
ESource *source);
@@ -199,6 +200,10 @@ static void remove_source (GcalManager *m
static void show_source_dialog (GtkButton *button,
gpointer user_data);
+static void source_row_activated (GtkListBox *listbox,
+ GtkListBoxRow *row,
+ gpointer user_data);
+
static void on_calendar_toggled (GObject *object,
GParamSpec *pspec,
gpointer user_data);
@@ -866,6 +871,18 @@ show_source_dialog (GtkButton *button,
gtk_window_present (GTK_WINDOW (priv->source_dialog));
}
+static void
+source_row_activated (GtkListBox *listbox,
+ GtkListBoxRow *row,
+ gpointer user_data)
+{
+ GcalWindowPrivate *priv = gcal_window_get_instance_private (GCAL_WINDOW (user_data));
+
+ gcal_source_dialog_set_mode (GCAL_SOURCE_DIALOG (priv->source_dialog), GCAL_SOURCE_DIALOG_MODE_EDIT);
+
+ gtk_window_present (GTK_WINDOW (priv->source_dialog));
+}
+
static void
on_calendar_toggled (GObject *object,
GParamSpec *pspec,
@@ -1328,6 +1345,7 @@ gcal_window_class_init(GcalWindowClass *klass)
gtk_widget_class_bind_template_child_private (widget_class, GcalWindow, notification_close_button);
gtk_widget_class_bind_template_callback (widget_class, show_source_dialog);
+ gtk_widget_class_bind_template_callback (widget_class, source_row_activated);
gtk_widget_class_bind_template_callback (widget_class, key_pressed);
gtk_widget_class_bind_template_callback (widget_class, search_toggled);