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.
This commit is contained in:
Georges Basile Stavracas Neto
2015-04-02 12:35:29 -03:00
parent 85dd995329
commit 955c934956
2 changed files with 37 additions and 0 deletions
+35
View File
@@ -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 ();