[evolution] M!5 - Replace custom expand/collapse icons with gtk stock icons



commit c4d17ae923ac22204fdf388174fa0cfd8acb6263
Author: Johannes Zellner <johannes nebulon de>
Date:   Wed Mar 13 11:52:09 2019 +0100

    M!5 - Replace custom expand/collapse icons with gtk stock icons
    
    Closes https://gitlab.gnome.org/GNOME/evolution/merge_requests/5

 data/images/CMakeLists.txt                         |   2 -
 data/images/minus.png                              | Bin 344 -> 0 bytes
 data/images/plus.png                               | Bin 406 -> 0 bytes
 data/webview.css                                   |  19 +++++
 .../gui/widgets/eab-contact-formatter.c            |  11 +--
 src/em-format/e-mail-formatter-headers.c           |  11 +--
 src/em-format/e-mail-formatter-utils.c             |   6 +-
 src/web-extensions/e-dom-utils.c                   |  91 +++++++++++----------
 8 files changed, 80 insertions(+), 60 deletions(-)
---
diff --git a/data/images/CMakeLists.txt b/data/images/CMakeLists.txt
index 17f4d40173..1d8ee48b48 100644
--- a/data/images/CMakeLists.txt
+++ b/data/images/CMakeLists.txt
@@ -3,9 +3,7 @@ set(images
        draft-paper.png
        draft-stamp.jpg
        midnight-stars.jpg
-       minus.png
        paper.png
-       plus.png
        rect.png
        ribbon.jpg
        texture.png
diff --git a/data/webview.css b/data/webview.css
index 1481ad955b..a04154733c 100644
--- a/data/webview.css
+++ b/data/webview.css
@@ -87,6 +87,25 @@ a.evo-awrap {
 
 /**** HEADERS ****/
 
+button.header-collapse {
+  width: 18px;
+  height: 18px;
+  margin: 0;
+  padding: 0;
+  cursor: pointer;
+  overflow: hidden;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+button.header-collapse img {
+  width: 16px;
+  height: 16px;
+  padding: 0;
+  margin: 0;
+}
+
 table.header {
   border-spacing: 0px;
   border-top-width: 0px;
diff --git a/src/addressbook/gui/widgets/eab-contact-formatter.c 
b/src/addressbook/gui/widgets/eab-contact-formatter.c
index b86ab34f8a..ece9e5447c 100644
--- a/src/addressbook/gui/widgets/eab-contact-formatter.c
+++ b/src/addressbook/gui/widgets/eab-contact-formatter.c
@@ -607,13 +607,10 @@ render_contact_list_row (EABContactFormatter *formatter,
                          EDestination *destination,
                          GString *buffer)
 {
-       gchar *evolution_imagesdir;
        gboolean list_collapsed = FALSE;
        const gchar *textrep;
        gchar *name = NULL, *email_addr = NULL;
 
-       evolution_imagesdir = g_filename_to_uri (EVOLUTION_IMAGESDIR, NULL, NULL);
-
        textrep = e_destination_get_textrep (destination, TRUE);
        if (!eab_parse_qp_email (textrep, &name, &email_addr))
                email_addr = g_strdup (textrep);
@@ -623,11 +620,10 @@ render_contact_list_row (EABContactFormatter *formatter,
                g_string_append_printf (
                        buffer,
                        "<td width=" IMAGE_COL_WIDTH " valign=\"top\" align=\"left\">"
-                       "<img src=\"evo-file://%s/minus.png\" width=\"16px\" height=\"16px\" "
-                       "id=\"%s\" "
-                       "class=\"navigable _evo_collapse_button\">"
+                       "<button type=\"button\" id=\"%s\" class=\"header-collapse _evo_collapse_button\" 
style=\"display: inline-block;\">"
+                       "<img src=\"gtk-stock://pan-down-symbolic\" />"
+                       "</button>"
                        "</td><td width=\"100%%\" align=\"left\">%s",
-                       evolution_imagesdir,
                        e_destination_get_contact_uid (destination),
                        name ? name : email_addr);
 
@@ -669,7 +665,6 @@ render_contact_list_row (EABContactFormatter *formatter,
 
        g_string_append (buffer, "</tr>");
 
-       g_free (evolution_imagesdir);
        g_free (name);
        g_free (email_addr);
 }
diff --git a/src/em-format/e-mail-formatter-headers.c b/src/em-format/e-mail-formatter-headers.c
index 30a38601c8..6a92302b20 100644
--- a/src/em-format/e-mail-formatter-headers.c
+++ b/src/em-format/e-mail-formatter-headers.c
@@ -542,12 +542,13 @@ emfe_headers_format (EMailFormatterExtension *extension,
        if (is_collapsable)
                g_string_append_printf (
                        buffer,
-                       "<td valign=\"top\" width=\"16\" style=\"padding-left: 0px\">"
-                       "<img src=\"evo-file://%s/%s\" class=\"navigable\" "
-                       "     id=\"__evo-collapse-headers-img\" />"
+                       "<td valign=\"top\" width=\"18\" style=\"padding-left: 0px\">"
+                       "<button type=\"button\" class=\"header-collapse\" id=\"__evo-collapse-headers-img\">"
+                       "<img src=\"gtk-stock://%s\" />"
+                       "</button>"
                        "</td>",
-                       EVOLUTION_IMAGESDIR,
-                       is_collapsed ? "plus.png" : "minus.png");
+                       is_collapsed ? "pan-end-symbolic" : "pan-down-symbolic"
+               );
 
        g_string_append (buffer, "<td>");
 
diff --git a/src/em-format/e-mail-formatter-utils.c b/src/em-format/e-mail-formatter-utils.c
index d455932f6f..53ee738225 100644
--- a/src/em-format/e-mail-formatter-utils.c
+++ b/src/em-format/e-mail-formatter-utils.c
@@ -211,9 +211,9 @@ e_mail_formatter_format_address (EMailFormatter *formatter,
                                        "<span id=\"__evo-moreaddr\" "
                                        "style=\"display: none;\">");
                                str = g_strdup_printf (
-                                       "<img src=\"evo-file://%s/plus.png\" "
-                                       "id=\"__evo-moreaddr-img\" class=\"navigable\">",
-                                       EVOLUTION_IMAGESDIR);
+                                       "<button type=\"button\" id=\"__evo-moreaddr-button\" 
class=\"header-collapse\" style=\"display: inline-block;\">"
+                                       "<img src=\"gtk-stock://pan-end-symbolic\" />"
+                                       "</button>");
                        }
                }
        }
diff --git a/src/web-extensions/e-dom-utils.c b/src/web-extensions/e-dom-utils.c
index f1ca71031d..28ae051795 100644
--- a/src/web-extensions/e-dom-utils.c
+++ b/src/web-extensions/e-dom-utils.c
@@ -579,9 +579,8 @@ collapse_contacts_list (WebKitDOMEventTarget *event_target,
                         gpointer user_data)
 {
        WebKitDOMDocument *document;
-       WebKitDOMElement *list;
+       WebKitDOMElement *list, *child;
        gchar *id, *list_id;
-       gchar *imagesdir, *src;
        gboolean hidden;
 
        document = user_data;
@@ -598,21 +597,21 @@ collapse_contacts_list (WebKitDOMEventTarget *event_target,
        if (list == NULL)
                return;
 
-       imagesdir = g_filename_to_uri (EVOLUTION_IMAGESDIR, NULL, NULL);
        hidden = webkit_dom_html_element_get_hidden (WEBKIT_DOM_HTML_ELEMENT (list));
 
-       if (hidden)
-               src = g_strdup_printf ("evo-file://%s/minus.png", imagesdir);
-       else
-               src = g_strdup_printf ("evo-file://%s/plus.png", imagesdir);
-
        webkit_dom_html_element_set_hidden (
                WEBKIT_DOM_HTML_ELEMENT (list), !hidden);
-       webkit_dom_html_image_element_set_src (
-               WEBKIT_DOM_HTML_IMAGE_ELEMENT (event_target), src);
 
-       g_free (src);
-       g_free (imagesdir);
+       for (child = webkit_dom_element_get_first_element_child (WEBKIT_DOM_ELEMENT (event_target));
+            child;
+            child = webkit_dom_element_get_next_element_sibling (child)) {
+               if (WEBKIT_DOM_IS_HTML_IMAGE_ELEMENT (child)) {
+                       webkit_dom_html_image_element_set_src (
+                               WEBKIT_DOM_HTML_IMAGE_ELEMENT (child),
+                               hidden ? "gtk-stock://pan-down-symbolic" : "gtk-stock://pan-end-symbolic");
+                       break;
+               }
+       }
 }
 
 static void
@@ -620,8 +619,8 @@ toggle_headers_visibility (WebKitDOMElement *button,
                            WebKitDOMEvent *event,
                            WebKitDOMDocument *document)
 {
-       WebKitDOMElement *short_headers = NULL, *full_headers = NULL;
-       WebKitDOMCSSStyleDeclaration *css_short = NULL, *css_full = NULL;
+       WebKitDOMElement *short_headers, *full_headers, *button_image;
+       WebKitDOMCSSStyleDeclaration *css_short, *css_full;
        GSettings *settings;
        gboolean expanded;
        const gchar *path;
@@ -652,13 +651,15 @@ toggle_headers_visibility (WebKitDOMElement *button,
                css_short, "display",
                expanded ? "table" : "none", "", NULL);
 
+       button_image = webkit_dom_element_get_first_element_child (button);
+
        if (expanded)
-               path = "evo-file://" EVOLUTION_IMAGESDIR "/plus.png";
+               path = "gtk-stock://pan-end-symbolic";
        else
-               path = "evo-file://" EVOLUTION_IMAGESDIR "/minus.png";
+               path = "gtk-stock://pan-down-symbolic";
 
        webkit_dom_html_image_element_set_src (
-               WEBKIT_DOM_HTML_IMAGE_ELEMENT (button), path);
+               WEBKIT_DOM_HTML_IMAGE_ELEMENT (button_image), path);
 
        settings = e_util_ref_settings ("org.gnome.evolution.mail");
        g_settings_set_boolean (settings, "headers-collapsed", expanded);
@@ -669,24 +670,34 @@ toggle_headers_visibility (WebKitDOMElement *button,
        g_clear_object (&css_short);
        g_clear_object (&full_headers);
        g_clear_object (&css_full);
+       g_clear_object (&button_image);
 }
 
 static void
-toggle_address_visibility (WebKitDOMElement *button,
+toggle_address_visibility (WebKitDOMElement *element,
                            WebKitDOMEvent *event,
                            gpointer user_data)
 {
-       WebKitDOMElement *full_addr = NULL, *ellipsis = NULL;
-       WebKitDOMElement *parent = NULL, *bold = NULL;
-       WebKitDOMCSSStyleDeclaration *css_full = NULL, *css_ellipsis = NULL;
-       const gchar *path;
+       WebKitDOMElement *full_addr, *ellipsis, *parent, *img, *tmp;
+       WebKitDOMCSSStyleDeclaration *css_full, *css_ellipsis;
        gchar *property_value;
        gboolean expanded;
 
-       /* <b> element */
-       bold = webkit_dom_node_get_parent_element (WEBKIT_DOM_NODE (button));
-       /* <td> element */
-       parent = webkit_dom_node_get_parent_element (WEBKIT_DOM_NODE (bold));
+       /* get img and parent depending on which element the click came from (button/ellipsis) */
+       if (WEBKIT_DOM_IS_HTML_BUTTON_ELEMENT (element)) {
+               tmp = webkit_dom_node_get_parent_element (WEBKIT_DOM_NODE (element));
+               parent = webkit_dom_node_get_parent_element (WEBKIT_DOM_NODE (tmp));
+               img = webkit_dom_element_get_first_element_child (element);
+       } else {
+               WebKitDOMElement *button;
+
+               parent = webkit_dom_node_get_parent_element (WEBKIT_DOM_NODE (element));
+               tmp = webkit_dom_node_get_parent_element (WEBKIT_DOM_NODE (parent));
+               button = webkit_dom_element_query_selector (tmp, "#__evo-moreaddr-button", NULL);
+               img = webkit_dom_element_get_first_element_child (button);
+
+               g_clear_object (&button);
+       }
 
        full_addr = webkit_dom_element_query_selector (parent, "#__evo-moreaddr", NULL);
 
@@ -711,21 +722,8 @@ toggle_address_visibility (WebKitDOMElement *button,
        webkit_dom_css_style_declaration_set_property (
                css_ellipsis, "display", (expanded ? "inline" : "none"), "", NULL);
 
-       if (expanded)
-               path = "evo-file://" EVOLUTION_IMAGESDIR "/plus.png";
-       else
-               path = "evo-file://" EVOLUTION_IMAGESDIR "/minus.png";
-
-       if (!WEBKIT_DOM_IS_HTML_IMAGE_ELEMENT (button)) {
-               WebKitDOMElement *element;
-
-               element = webkit_dom_element_query_selector (parent, "#__evo-moreaddr-img", NULL);
-               if (!element)
-                       goto clean;
-
-               webkit_dom_html_image_element_set_src (WEBKIT_DOM_HTML_IMAGE_ELEMENT (element), path);
-       } else
-               webkit_dom_html_image_element_set_src (WEBKIT_DOM_HTML_IMAGE_ELEMENT (button), path);
+       webkit_dom_html_image_element_set_src (WEBKIT_DOM_HTML_IMAGE_ELEMENT (img),
+               expanded ? "gtk-stock://pan-end-symbolic" : "gtk-stock://pan-down-symbolic");
 
  clean:
        g_clear_object (&css_full);
@@ -733,6 +731,8 @@ toggle_address_visibility (WebKitDOMElement *button,
        g_clear_object (&full_addr);
        g_clear_object (&ellipsis);
        g_clear_object (&parent);
+       g_clear_object (&img);
+       g_clear_object (&tmp);
 }
 
 static void
@@ -1068,7 +1068,14 @@ e_dom_utils_e_mail_display_bind_dom (WebKitDOMDocument *document,
 
        e_dom_utils_bind_dom (
                document,
-               "*[id^=__evo-moreaddr-]",
+               "#__evo-moreaddr-ellipsis",
+               "click",
+               toggle_address_visibility,
+               NULL);
+
+       e_dom_utils_bind_dom (
+               document,
+               "#__evo-moreaddr-button",
                "click",
                toggle_address_visibility,
                NULL);


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