diff options
-rw-r--r-- | data/icons/Makefile.am | 2 | ||||
-rw-r--r-- | data/icons/indicator-notification-close-deselect.svg | 79 | ||||
-rw-r--r-- | data/icons/indicator-notification-close-select.svg | 61 | ||||
-rw-r--r-- | src/notification-menuitem.c | 20 |
4 files changed, 160 insertions, 2 deletions
diff --git a/data/icons/Makefile.am b/data/icons/Makefile.am index 97f2535..2543305 100644 --- a/data/icons/Makefile.am +++ b/data/icons/Makefile.am @@ -1,6 +1,8 @@ iconsdir = $(INDICATORICONSDIR) icons_DATA = \ + indicator-notification-close-select.svg \ + indicator-notification-close-deselect.svg \ indicator-notification-read.svg \ indicator-notification-unread.svg diff --git a/data/icons/indicator-notification-close-deselect.svg b/data/icons/indicator-notification-close-deselect.svg new file mode 100644 index 0000000..3e92220 --- /dev/null +++ b/data/icons/indicator-notification-close-deselect.svg @@ -0,0 +1,79 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="24" + height="24" + id="svg3920" + version="1.1" + inkscape:version="0.48.4 r9939" + sodipodi:docname="New document 5"> + <defs + id="defs3922" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="11.2" + inkscape:cx="4.1773985" + inkscape:cy="15.060459" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="959" + inkscape:window-height="576" + inkscape:window-x="65" + inkscape:window-y="24" + inkscape:window-maximized="1" /> + <metadata + id="metadata3925"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1028.3622)"> + <path + style="fill:#e6ddd5;fill-opacity:1;stroke:#333333;stroke-width:1;stroke-opacity:1" + d="M 6.34375 2.84375 C 5.8871312 2.84375 5.4436349 3.0251151 5.09375 3.375 L 3.375 5.09375 C 2.6752302 5.7935198 2.6752302 6.8939802 3.375 7.59375 L 7.78125 12 L 3.375 16.40625 C 2.6752302 17.10602 2.6752302 18.20648 3.375 18.90625 L 5.09375 20.625 C 5.7935198 21.32477 6.8939802 21.32477 7.59375 20.625 L 12 16.21875 L 16.40625 20.625 C 17.10602 21.32477 18.20648 21.32477 18.90625 20.625 L 20.625 18.90625 C 21.32477 18.20648 21.32477 17.10602 20.625 16.40625 L 16.21875 12 L 20.625 7.59375 C 21.32477 6.8939802 21.32477 5.7935198 20.625 5.09375 L 18.90625 3.375 C 18.20648 2.6752302 17.10602 2.6752302 16.40625 3.375 L 12 7.78125 L 7.59375 3.375 C 7.2438651 3.0251151 6.8003688 2.84375 6.34375 2.84375 z " + transform="translate(0,1028.3622)" + id="rect3928" /> + <rect + style="fill:#333333;fill-opacity:1;stroke:none" + id="rect4479" + width="3" + height="19" + x="-728.66187" + y="734.63245" + ry="0.91624337" + transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,0,0)" /> + <rect + ry="0.91624337" + y="717.66187" + x="742.63245" + height="19" + width="3" + id="rect4487" + style="fill:#333333;fill-opacity:1;stroke:none" + transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,0,0)" /> + </g> +</svg> diff --git a/data/icons/indicator-notification-close-select.svg b/data/icons/indicator-notification-close-select.svg new file mode 100644 index 0000000..21f5026 --- /dev/null +++ b/data/icons/indicator-notification-close-select.svg @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="24" + height="24" + id="svg3920" + version="1.1" + inkscape:version="0.48.4 r9939" + sodipodi:docname="indicator-notification-close-deselect.svg"> + <defs + id="defs3922" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="11.2" + inkscape:cx="4.1773985" + inkscape:cy="15.060459" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="959" + inkscape:window-height="576" + inkscape:window-x="65" + inkscape:window-y="24" + inkscape:window-maximized="1" /> + <metadata + id="metadata3925"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1028.3622)"> + <path + style="fill:#e6ddd5;fill-opacity:1;stroke:#333333;stroke-width:1;stroke-opacity:1" + d="M 6.34375 2.84375 C 5.8871312 2.84375 5.4436349 3.0251151 5.09375 3.375 L 3.375 5.09375 C 2.6752302 5.7935198 2.6752302 6.8939802 3.375 7.59375 L 7.78125 12 L 3.375 16.40625 C 2.6752302 17.10602 2.6752302 18.20648 3.375 18.90625 L 5.09375 20.625 C 5.7935198 21.32477 6.8939802 21.32477 7.59375 20.625 L 12 16.21875 L 16.40625 20.625 C 17.10602 21.32477 18.20648 21.32477 18.90625 20.625 L 20.625 18.90625 C 21.32477 18.20648 21.32477 17.10602 20.625 16.40625 L 16.21875 12 L 20.625 7.59375 C 21.32477 6.8939802 21.32477 5.7935198 20.625 5.09375 L 18.90625 3.375 C 18.20648 2.6752302 17.10602 2.6752302 16.40625 3.375 L 12 7.78125 L 7.59375 3.375 C 7.2438651 3.0251151 6.8003688 2.84375 6.34375 2.84375 z " + transform="translate(0,1028.3622)" + id="rect3928" /> + </g> +</svg> diff --git a/src/notification-menuitem.c b/src/notification-menuitem.c index 08274cf..3240de1 100644 --- a/src/notification-menuitem.c +++ b/src/notification-menuitem.c @@ -11,6 +11,8 @@ #include "urlregex.h" #define NOTIFICATION_MENUITEM_MAX_CHARS 42 +#define NOTIFICATION_MENUITEM_CLOSE_SELECT "indicator-notification-close-select" +#define NOTIFICATION_MENUITEM_CLOSE_DESELECT "indicator-notification-close-deselect" enum { CLICKED, @@ -50,6 +52,7 @@ notification_menuitem_class_init(NotificationMenuItemClass *klass) g_type_class_add_private(klass, sizeof(NotificationMenuItemPrivate)); + menu_item_class->hide_on_activate = FALSE; menu_item_class->activate = notification_menuitem_activate; menu_item_class->select = notification_menuitem_select; menu_item_class->deselect = notification_menuitem_deselect; @@ -87,7 +90,7 @@ notification_menuitem_init(NotificationMenuItem *self) gtk_box_pack_start(GTK_BOX(self->priv->hbox), self->priv->label, TRUE, TRUE, 0); gtk_widget_show(self->priv->label); - self->priv->close_image = gtk_image_new_from_icon_name("gtk-close", GTK_ICON_SIZE_MENU); + self->priv->close_image = gtk_image_new_from_icon_name(NOTIFICATION_MENUITEM_CLOSE_DESELECT, GTK_ICON_SIZE_MENU); gtk_widget_show(self->priv->close_image); gtk_box_pack_start(GTK_BOX(self->priv->hbox), self->priv->close_image, FALSE, FALSE, 0); @@ -229,12 +232,25 @@ notification_menuitem_button_release(GtkWidget *widget, GdkEventButton *event) static void notification_menuitem_select(GtkMenuItem *menuitem) { - /* FIXME: breaks keyboard navigation */ + g_return_if_fail(IS_NOTIFICATION_MENUITEM(menuitem)); + + NotificationMenuItem *self = NOTIFICATION_MENUITEM(menuitem); + + gtk_image_set_from_icon_name(GTK_IMAGE(self->priv->close_image), + NOTIFICATION_MENUITEM_CLOSE_SELECT, + GTK_ICON_SIZE_MENU); } static void notification_menuitem_deselect(GtkMenuItem *menuitem) { + g_return_if_fail(IS_NOTIFICATION_MENUITEM(menuitem)); + + NotificationMenuItem *self = NOTIFICATION_MENUITEM(menuitem); + + gtk_image_set_from_icon_name(GTK_IMAGE(self->priv->close_image), + NOTIFICATION_MENUITEM_CLOSE_DESELECT, + GTK_ICON_SIZE_MENU); } static gboolean |