summaryrefslogtreecommitdiff
path: root/src/nautilus-file-name-widget-controller.c
diff options
context:
space:
mode:
authorRazvan Chitu <razvan.ch95@gmail.com>2016-08-22 15:12:18 +0300
committerRazvan Chitu <razvan.ch95@gmail.com>2016-08-23 00:37:17 +0300
commitd0934dbe5364581b53b529e8d91917e8fabe2f9e (patch)
tree04153f7d316755997eb31aff7bafaad5b3559c30 /src/nautilus-file-name-widget-controller.c
parente9efd047b242cb4e8bb72b498bd0853e09add39e (diff)
downloadnautilus-d0934dbe5364581b53b529e8d91917e8fabe2f9e.tar.gz
file-name-widgets: use a revealer to display errors
Each file name widget has an error label for displaying error messages. However, when there is no error, the label just takes up space for no reason. In order to fix this, use a revealer to display error messages. https://bugzilla.gnome.org/show_bug.cgi?id=770199
Diffstat (limited to 'src/nautilus-file-name-widget-controller.c')
-rw-r--r--src/nautilus-file-name-widget-controller.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/nautilus-file-name-widget-controller.c b/src/nautilus-file-name-widget-controller.c
index 6f0e4c03c..0eb474528 100644
--- a/src/nautilus-file-name-widget-controller.c
+++ b/src/nautilus-file-name-widget-controller.c
@@ -6,6 +6,7 @@
#define FILE_NAME_DUPLICATED_LABEL_TIMEOUT 500
typedef struct {
+ GtkWidget *error_revealer;
GtkWidget *error_label;
GtkWidget *name_entry;
GtkWidget *activate_button;
@@ -22,7 +23,8 @@ enum {
};
enum {
- PROP_ERROR_LABEL = 1,
+ PROP_ERROR_REVEALER = 1,
+ PROP_ERROR_LABEL,
PROP_NAME_ENTRY,
PROP_ACTION_BUTTON,
PROP_CONTAINING_DIRECTORY,
@@ -108,6 +110,9 @@ duplicated_file_label_show (NautilusFileNameWidgetController *self)
_("A file with that name already exists."));
}
+ gtk_revealer_set_reveal_child (GTK_REVEALER (priv->error_revealer),
+ TRUE);
+
priv->duplicated_label_timeout_id = 0;
return G_SOURCE_REMOVE;
@@ -130,6 +135,8 @@ file_name_widget_controller_process_new_name (NautilusFileNameWidgetController *
&error_message);
gtk_label_set_label (GTK_LABEL (priv->error_label), error_message);
+ gtk_revealer_set_reveal_child (GTK_REVEALER (priv->error_revealer),
+ error_message != NULL);
existing_file = nautilus_directory_get_file_by_name (priv->containing_directory, name);
*duplicated_name = existing_file != NULL &&
@@ -259,6 +266,9 @@ nautilus_file_name_widget_controller_set_property (GObject *object,
priv = nautilus_file_name_widget_controller_get_instance_private (controller);
switch (prop_id) {
+ case PROP_ERROR_REVEALER:
+ priv->error_revealer = GTK_WIDGET (g_value_get_object (value));
+ break;
case PROP_ERROR_LABEL:
priv->error_label = GTK_WIDGET (g_value_get_object (value));
break;
@@ -350,6 +360,16 @@ nautilus_file_name_widget_controller_class_init (NautilusFileNameWidgetControlle
g_object_class_install_property (
object_class,
+ PROP_ERROR_REVEALER,
+ g_param_spec_object ("error-revealer",
+ "Error Revealer",
+ "The error label revealer",
+ GTK_TYPE_WIDGET,
+ G_PARAM_WRITABLE |
+ G_PARAM_CONSTRUCT_ONLY));
+
+ g_object_class_install_property (
+ object_class,
PROP_ERROR_LABEL,
g_param_spec_object ("error-label",
"Error Label",