From 519df156f73419d83fbd043e73abc8d3f93233b0 Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
Date: Wed, 15 Jan 2014 16:45:34 -0500
Subject: [PATCH] panel: add an icon to the ActivitiesButton

---
 data/theme/gnome-shell-sass/_common.scss | 5 +++++
 js/ui/panel.js                           | 9 ++++++++-
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/data/theme/gnome-shell-sass/_common.scss b/data/theme/gnome-shell-sass/_common.scss
index 1b0c20650..639f062f1 100644
--- a/data/theme/gnome-shell-sass/_common.scss
+++ b/data/theme/gnome-shell-sass/_common.scss
@@ -749,60 +749,65 @@ StScrollBar {
     -panel-corner-background-color: rgba(0, 0, 0, 0.35);
     -panel-corner-border-width: 2px;
     -panel-corner-border-color: transparent;
 
     &:active, &:overview, &:focus {
       -panel-corner-border-color: lighten($selected_bg_color,5%);
     }
 
     &.lock-screen, &.login-screen, &.unlock-screen {
       -panel-corner-radius: 0;
       -panel-corner-background-color: transparent;
       -panel-corner-border-color: transparent;
     }
   }
 
   .panel-button {
     -natural-hpadding: 12px;
     -minimum-hpadding: 6px;
     font-weight: bold;
     color: #eee;
     text-shadow: 0px 1px 2px rgba(0, 0, 0, 0.9);
     transition-duration: 100ms;
 
     .app-menu-icon {
       -st-icon-style: symbolic;
       margin-left: 4px;
       margin-right: 4px;
       //dimensions of the icon are hardcoded
     }
 
+    .panel-logo-icon {
+      padding-right: .4em;
+      icon-size: 1em;
+    }
+
     .system-status-icon,
     .app-menu-icon > StIcon,
     .popup-menu-arrow {
       icon-shadow: 0px 1px 2px rgba(0, 0, 0, 0.9);
     }
 
     &:hover {
       color: lighten($fg_color, 10%);
       text-shadow: 0px 1px 6px rgba(0, 0, 0, 1);
 
       .system-status-icon,
       .app-menu-icon > StIcon,
       .popup-menu-arrow {
         icon-shadow: 0px 1px 6px rgba(0, 0, 0, 1);
       }
     }
 
     &:active, &:overview, &:focus, &:checked {
       // Trick due to St limitations. It needs a background to draw
       // a box-shadow
       background-color: rgba(0, 0, 0, 0.01);
       box-shadow: inset 0 -2px 0px lighten($selected_bg_color,5%);
       color: lighten($fg_color,10%);
 
       & > .system-status-icon { icon-shadow: black 0 2px 2px; }
     }
 
     .system-status-icon { icon-size: 1.09em; padding: 0 5px; }
     .unlock-screen &,
     .login-screen &,
diff --git a/js/ui/panel.js b/js/ui/panel.js
index 2f593247d..d1a572503 100644
--- a/js/ui/panel.js
+++ b/js/ui/panel.js
@@ -379,65 +379,72 @@ var AppMenuButton = new Lang.Class({
         }
         if (this._overviewShowingId > 0) {
             Main.overview.disconnect(this._overviewShowingId);
             this._overviewShowingId = 0;
         }
         if (this._showsAppMenuId > 0) {
             this._gtkSettings.disconnect(this._showsAppMenuId);
             this._showsAppMenuId = 0;
         }
         if (this._switchWorkspaceNotifyId > 0) {
             global.window_manager.disconnect(this._switchWorkspaceNotifyId);
             this._switchWorkspaceNotifyId = 0;
         }
 
         this.parent();
     }
 });
 
 Signals.addSignalMethods(AppMenuButton.prototype);
 
 var ActivitiesButton = new Lang.Class({
     Name: 'ActivitiesButton',
     Extends: PanelMenu.Button,
 
     _init() {
         this.parent(0.0, null, true);
         this.actor.accessible_role = Atk.Role.TOGGLE_BUTTON;
 
         this.actor.name = 'panelActivities';
 
+        let box = new St.BoxLayout();
+        this.actor.add_actor(box);
+        let iconFile = Gio.File.new_for_path('/usr/share/icons/hicolor/scalable/apps/start-here.svg');
+        this._icon = new St.Icon({ gicon: new Gio.FileIcon({ file: iconFile }),
+                                   style_class: 'panel-logo-icon' });
+        box.add_actor(this._icon);
+
         /* Translators: If there is no suitable word for "Activities"
            in your language, you can use the word for "Overview". */
         this._label = new St.Label({ text: _("Activities"),
                                      y_align: Clutter.ActorAlign.CENTER });
-        this.actor.add_actor(this._label);
+        box.add_actor(this._label);
 
         this.actor.label_actor = this._label;
 
         this.actor.connect('captured-event', this._onCapturedEvent.bind(this));
         this.actor.connect_after('key-release-event', this._onKeyRelease.bind(this));
 
         Main.overview.connect('showing', () => {
             this.actor.add_style_pseudo_class('overview');
             this.actor.add_accessible_state (Atk.StateType.CHECKED);
         });
         Main.overview.connect('hiding', () => {
             this.actor.remove_style_pseudo_class('overview');
             this.actor.remove_accessible_state (Atk.StateType.CHECKED);
         });
 
         this._xdndTimeOut = 0;
     },
 
     handleDragOver(source, actor, x, y, time) {
         if (source != Main.xdndHandler)
             return DND.DragMotionResult.CONTINUE;
 
         if (this._xdndTimeOut != 0)
             Mainloop.source_remove(this._xdndTimeOut);
         this._xdndTimeOut = Mainloop.timeout_add(BUTTON_DND_ACTIVATION_TIMEOUT, () => {
             this._xdndToggleOverview(actor);
         });
         GLib.Source.set_name_by_id(this._xdndTimeOut, '[gnome-shell] this._xdndToggleOverview');
 
         return DND.DragMotionResult.CONTINUE;
-- 
2.17.1

