[gnome-software] Do not hide review buttons when offline



commit 6c2ee1ae9fab0f9e8be6174245e1eb11e153b682
Author: Richard Hughes <richard hughsie com>
Date:   Thu Dec 1 09:55:16 2016 +0000

    Do not hide review buttons when offline
    
    Hiding and showing the buttons makes the UI reflow when the network goes up
    or down.
    
    Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=775172

 src/gs-review-row.c    |   28 +++++++++++++++++++---------
 src/gs-shell-details.c |   11 +++++++++--
 2 files changed, 28 insertions(+), 11 deletions(-)
---
diff --git a/src/gs-review-row.c b/src/gs-review-row.c
index a648b57..e7cbead 100644
--- a/src/gs-review-row.c
+++ b/src/gs-review-row.c
@@ -61,7 +61,6 @@ gs_review_row_refresh (GsReviewRow *row)
 {
        GsReviewRowPrivate *priv = gs_review_row_get_instance_private (row);
        const gchar *reviewer;
-       guint64 actions = 0;
        GDateTime *date;
        g_autofree gchar *text = NULL;
 
@@ -89,25 +88,36 @@ gs_review_row_refresh (GsReviewRow *row)
                priv->actions = 0;
 
        /* set actions up */
-       if (priv->network_available)
-               actions = priv->actions;
-       if ((actions & (1 << GS_PLUGIN_ACTION_REVIEW_UPVOTE |
+       if ((priv->actions & (1 << GS_PLUGIN_ACTION_REVIEW_UPVOTE |
                        1 << GS_PLUGIN_ACTION_REVIEW_DOWNVOTE |
                        1 << GS_PLUGIN_ACTION_REVIEW_DISMISS)) == 0) {
                gtk_widget_set_visible (priv->box_voting, FALSE);
        } else {
                gtk_widget_set_visible (priv->box_voting, TRUE);
                gtk_widget_set_visible (priv->button_yes,
-                                       actions & 1 << GS_PLUGIN_ACTION_REVIEW_UPVOTE);
+                                       priv->actions & 1 << GS_PLUGIN_ACTION_REVIEW_UPVOTE);
                gtk_widget_set_visible (priv->button_no,
-                                       actions & 1 << GS_PLUGIN_ACTION_REVIEW_DOWNVOTE);
+                                       priv->actions & 1 << GS_PLUGIN_ACTION_REVIEW_DOWNVOTE);
                gtk_widget_set_visible (priv->button_dismiss,
-                                       actions & 1 << GS_PLUGIN_ACTION_REVIEW_DISMISS);
+                                       priv->actions & 1 << GS_PLUGIN_ACTION_REVIEW_DISMISS);
        }
        gtk_widget_set_visible (priv->button_remove,
-                               actions & 1 << GS_PLUGIN_ACTION_REVIEW_REMOVE);
+                               priv->actions & 1 << GS_PLUGIN_ACTION_REVIEW_REMOVE);
        gtk_widget_set_visible (priv->button_report,
-                               actions & 1 << GS_PLUGIN_ACTION_REVIEW_REPORT);
+                               priv->actions & 1 << GS_PLUGIN_ACTION_REVIEW_REPORT);
+
+       /* mark insensitive if no network */
+       if (priv->network_available) {
+               gtk_widget_set_sensitive (priv->button_yes, TRUE);
+               gtk_widget_set_sensitive (priv->button_no, TRUE);
+               gtk_widget_set_sensitive (priv->button_remove, TRUE);
+               gtk_widget_set_sensitive (priv->button_report, TRUE);
+       } else {
+               gtk_widget_set_sensitive (priv->button_yes, FALSE);
+               gtk_widget_set_sensitive (priv->button_no, FALSE);
+               gtk_widget_set_sensitive (priv->button_remove, FALSE);
+               gtk_widget_set_sensitive (priv->button_report, FALSE);
+       }
 }
 
 void
diff --git a/src/gs-shell-details.c b/src/gs-shell-details.c
index 31aeeca..3545e14 100644
--- a/src/gs-shell-details.c
+++ b/src/gs-shell-details.c
@@ -1285,8 +1285,15 @@ gs_shell_details_refresh_reviews (GsShellDetails *self)
 
        /* show the button only if the user never reviewed */
        gtk_widget_set_visible (self->button_review, show_review_button);
-       gtk_widget_set_sensitive (self->button_review,
-                                 gs_plugin_loader_get_network_available (self->plugin_loader));
+       if (gs_plugin_loader_get_network_available (self->plugin_loader)) {
+               gtk_widget_set_sensitive (self->button_review, TRUE);
+               gtk_widget_set_tooltip_text (self->button_review, NULL);
+       } else {
+               gtk_widget_set_sensitive (self->button_review, FALSE);
+               gtk_widget_set_tooltip_text (self->button_review,
+                                            /* TRANSLATORS: we need a remote server to process */
+                                            _("You need internet access to write a review"));
+       }
 }
 
 static void


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]