[gnome-calendar] window: block automatic creation of nameless events
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-calendar] window: block automatic creation of nameless events
- Date: Thu, 2 Apr 2015 15:36:18 +0000 (UTC)
commit 955c9349562c83d0c2f58acfcd7becf714beaade
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Thu Apr 2 12:17:20 2015 -0300
window: block automatic creation of nameless events
We shouldn't let nameless events be created.
This commit blocks all ways to create them
when the name is not set.
The user can still edit events' data.
data/ui/window.ui | 2 ++
src/gcal-window.c | 35 +++++++++++++++++++++++++++++++++++
2 files changed, 37 insertions(+), 0 deletions(-)
---
diff --git a/data/ui/window.ui b/data/ui/window.ui
index 952c9b6..f2fab00 100644
--- a/data/ui/window.ui
+++ b/data/ui/window.ui
@@ -367,6 +367,7 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
+ <property name="sensitive">False</property>
<signal name="clicked" handler="create_event" object="GcalWindow" swapped="yes"/>
<style>
<class name="suggested-action"/>
@@ -396,6 +397,7 @@
<property name="can_focus">True</property>
<property name="hexpand">True</property>
<signal name="activate" handler="create_event" object="GcalWindow" swapped="yes"/>
+ <signal name="notify::text" handler="new_event_entry_text_changed" object="GcalWindow"
swapped="yes"/>
</object>
<packing>
<property name="left_attach">0</property>
diff --git a/src/gcal-window.c b/src/gcal-window.c
index 6334832..0b0d9ed 100644
--- a/src/gcal-window.c
+++ b/src/gcal-window.c
@@ -168,6 +168,10 @@ static void place_new_event_widget (GcalWindow *w
static void close_new_event_widget (GtkButton *button,
gpointer user_data);
+static void new_event_entry_text_changed (GObject *object,
+ GParamSpec *pspec,
+ gpointer user_data);
+
static void create_notification (GcalWindow *window,
gchar *message,
gchar *button_label);
@@ -673,6 +677,34 @@ close_new_event_widget (GtkButton *button,
set_new_event_mode (GCAL_WINDOW (user_data), FALSE);
}
+static void
+new_event_entry_text_changed (GObject *object,
+ GParamSpec *pspec,
+ gpointer user_data)
+{
+ GcalWindowPrivate *priv;
+ static gboolean blocked = TRUE;
+ gint length;
+
+ g_return_if_fail (user_data);
+ priv = gcal_window_get_instance_private (GCAL_WINDOW (object));
+
+ length = g_utf8_strlen (gtk_entry_get_text (GTK_ENTRY (user_data)), -1);
+
+ gtk_widget_set_sensitive (priv->new_event_create_button, length > 0);
+
+ if (length > 0 && blocked)
+ {
+ g_signal_handlers_unblock_by_func (user_data, create_event, object);
+ blocked = FALSE;
+ }
+ else if (length < 1 && !blocked)
+ {
+ g_signal_handlers_block_by_func (user_data, create_event, object);
+ blocked = TRUE;
+ }
+}
+
/**
* create_notification: Internal method for creating a notification
* @window:
@@ -1292,6 +1324,7 @@ gcal_window_class_init(GcalWindowClass *klass)
gtk_widget_class_bind_template_callback (widget_class, create_event_detailed_cb);
gtk_widget_class_bind_template_callback (widget_class, show_new_event_widget);
gtk_widget_class_bind_template_callback (widget_class, close_new_event_widget);
+ gtk_widget_class_bind_template_callback (widget_class, new_event_entry_text_changed);
gtk_widget_class_bind_template_callback (widget_class, event_activated);
/* Syncronization related */
@@ -1335,6 +1368,8 @@ gcal_window_constructed (GObject *object)
g_free (clock_format);
g_object_unref (helper_settings);
+ // Prevents nameless events' creation
+ g_signal_handlers_block_by_func (priv->new_event_what_entry, create_event, object);
/* header_bar: menu */
builder = gtk_builder_new ();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]