diff options
author | Zhang Xianwei <[email protected]> | 2018-01-07 16:07:12 +0800 |
---|---|---|
committer | Zhang Xianwei <[email protected]> | 2018-01-11 09:59:45 +0800 |
commit | afcb324eb181a9c6cb0b3c8e8589ed99391a63a0 (patch) | |
tree | 3fe5cf0b331c06cb7b86c658e41a548cd2bbc460 | |
parent | a34ea4de6c653e184bf5eeef17dd2d73a9955fb1 (diff) | |
download | mate-control-center-afcb324eb181a9c6cb0b3c8e8589ed99391a63a0.tar.bz2 mate-control-center-afcb324eb181a9c6cb0b3c8e8589ed99391a63a0.tar.xz |
libslab: fix search icon misaligned
Make use GtkSearchEntry instead of builtin NldSearchEntry
fixes #299
Signed-off-by: Zhang Xianwei <[email protected]>
-rw-r--r-- | libslab/Makefile.am | 21 | ||||
-rw-r--r-- | libslab/search-bar.c | 13 | ||||
-rw-r--r-- | libslab/search-entry-watermark.svg | 58 | ||||
-rw-r--r-- | libslab/search-entry.c | 148 | ||||
-rw-r--r-- | libslab/search-entry.h | 54 | ||||
-rw-r--r-- | libslab/slab.h | 1 |
6 files changed, 9 insertions, 286 deletions
diff --git a/libslab/Makefile.am b/libslab/Makefile.am index e4f2ffdc..93a728d0 100644 --- a/libslab/Makefile.am +++ b/libslab/Makefile.am @@ -18,7 +18,6 @@ HEADER_FILES= \ nameplate-tile.h \ search-bar.h \ search-context-picker.h \ - search-entry.h \ shell-window.h \ slab-mate-util.h \ slab-section.h \ @@ -39,8 +38,6 @@ libmate_slab_la_SOURCES = \ nameplate-tile.c \ search-bar.c \ search-context-picker.c \ - search-entry-watermark.h \ - search-entry.c \ shell-window.c \ slab-mate-util.c \ slab-section.c \ @@ -53,12 +50,6 @@ libmate_slab_includedir = $(includedir)/libmate-slab libmate_slab_include_HEADERS = $(HEADER_FILES) libmate_slab_la_LIBADD = $(LIBSLAB_LIBS) -search-entry-watermark.h: search-entry-watermark.svg - echo '#define SEARCH_ENTRY_WATERMARK_SVG "\' > $@; \ - sed -e 's/"/\\"/g' -e 's/$$/\\/' -e 's/#000000/#%s/g' $< >> $@; \ - echo '"' >> $@ - - MARSHAL_GENERATED = nld-marshal.c nld-marshal.h nld-marshal.h: nld-marshal.list @@ -72,16 +63,10 @@ nld-marshal.c: nld-marshal.h || ( rm -f nld-marshal.tmp && exit 1 ) -BUILT_SOURCES = \ - search-entry-watermark.h \ - $(MARSHAL_GENERATED) +BUILT_SOURCES = $(MARSHAL_GENERATED) -CLEANFILES = \ - search-entry-watermark.h \ - $(MARSHAL_GENERATED) +CLEANFILES = $(MARSHAL_GENERATED) -EXTRA_DIST= \ - search-entry-watermark.svg \ - nld-marshal.list +EXTRA_DIST = nld-marshal.list -include $(top_srcdir)/git.mk diff --git a/libslab/search-bar.c b/libslab/search-bar.c index fd480f34..7645c0fa 100644 --- a/libslab/search-bar.c +++ b/libslab/search-bar.c @@ -21,7 +21,6 @@ #include "search-bar.h" #include "config.h" -#include "search-entry.h" #include "search-context-picker.h" #include "nld-marshal.h" @@ -31,7 +30,7 @@ typedef struct { GtkWidget *hbox; NldSearchContextPicker *context_picker; - GtkEntry *entry; + GtkSearchEntry *entry; GtkWidget *button; int search_timeout; @@ -92,10 +91,10 @@ nld_search_bar_init (NldSearchBar * search_bar) priv->hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3); gtk_box_pack_start (GTK_BOX (search_bar), priv->hbox, TRUE, FALSE, 0); - entry = nld_search_entry_new (); + entry = gtk_search_entry_new (); gtk_widget_set_halign (entry, GTK_ALIGN_START); gtk_widget_set_valign (entry, GTK_ALIGN_CENTER); - priv->entry = GTK_ENTRY (entry); + priv->entry = GTK_SEARCH_ENTRY (entry); gtk_widget_show (entry); gtk_box_pack_start (GTK_BOX (priv->hbox), entry, TRUE, TRUE, 0); @@ -151,7 +150,7 @@ nld_search_bar_clear (NldSearchBar * search_bar) NldSearchBarPrivate *priv = NLD_SEARCH_BAR_GET_PRIVATE (search_bar); priv->block_signal = TRUE; - gtk_entry_set_text (priv->entry, ""); + gtk_entry_set_text (GTK_ENTRY (priv->entry), ""); if (priv->context_picker) nld_search_context_picker_set_context (priv->context_picker, 0); priv->block_signal = FALSE; @@ -325,7 +324,7 @@ nld_search_bar_get_text (NldSearchBar * search_bar) { NldSearchBarPrivate *priv = NLD_SEARCH_BAR_GET_PRIVATE (search_bar); - return gtk_entry_get_text (priv->entry); + return gtk_entry_get_text (GTK_ENTRY (priv->entry)); } void @@ -333,7 +332,7 @@ nld_search_bar_set_text (NldSearchBar * search_bar, const char *text, gboolean a { NldSearchBarPrivate *priv = NLD_SEARCH_BAR_GET_PRIVATE (search_bar); - gtk_entry_set_text (priv->entry, text); + gtk_entry_set_text (GTK_ENTRY (priv->entry), text); if (activate) emit_search (search_bar); } diff --git a/libslab/search-entry-watermark.svg b/libslab/search-entry-watermark.svg deleted file mode 100644 index f72efff1..00000000 --- a/libslab/search-entry-watermark.svg +++ /dev/null @@ -1,58 +0,0 @@ -<?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://web.resource.org/cc/" - 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://inkscape.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="24" - height="16" - id="svg5418" - sodipodi:version="0.32" - inkscape:version="0.42+devel" - version="1.0" - sodipodi:docbase="/home/jimmac/Desktop" - sodipodi:docname="search-control-watermark.svg"> - <defs - id="defs5420" /> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#d0d0d0" - borderopacity="1" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="11.313708" - inkscape:cx="16.668254" - inkscape:cy="7.6484815" - inkscape:document-units="px" - inkscape:current-layer="layer1" - inkscape:showpageshadow="false" - inkscape:window-width="770" - inkscape:window-height="580" - inkscape:window-x="218" - inkscape:window-y="121" /> - <metadata - id="metadata5423"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1"> - <path - style="opacity:0.15340911;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" - d="M 3.4291453,1.1191527 C 2.6305762,2.3552041 2.1745042,3.8208445 2.1745042,5.400878 C 2.174511,9.770892 5.7107317,13.327038 10.080746,13.327038 C 11.948965,13.327031 13.605421,12.578488 14.959918,11.494855 C 14.849633,12.035463 14.910326,12.599456 15.358218,12.988478 L 17.807759,15.099467 L 22.627183,15.099467 L 17.429377,10.578766 C 17.423744,10.573876 17.415133,10.563637 17.409459,10.558855 C 17.055382,10.268755 16.617709,10.181311 16.194648,10.240213 C 17.261341,8.891261 18.006906,7.252857 18.006906,5.400878 C 18.006906,3.8201565 17.531556,2.355531 16.732353,1.1191527 L 14.481959,1.1191527 C 15.505805,2.208877 16.1349,3.6692927 16.1349,5.281383 C 16.134907,8.642939 13.402473,11.375366 10.040917,11.375366 C 6.679374,11.375366 3.9469402,8.642939 3.9469402,5.281383 C 3.9469402,3.6706415 4.5775542,2.2085978 5.5998813,1.1191527 L 3.4291453,1.1191527 z " - id="path5105" /> - </g> -</svg> diff --git a/libslab/search-entry.c b/libslab/search-entry.c deleted file mode 100644 index 4e843ca4..00000000 --- a/libslab/search-entry.c +++ /dev/null @@ -1,148 +0,0 @@ -/* - * This file is part of libslab. - * - * Copyright (c) 2006 Novell, Inc. - * - * Libslab is free software; you can redistribute it and/or modify it under the - * terms of the GNU Lesser General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) - * any later version. - * - * Libslab is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for - * more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with libslab; if not, write to the Free Software Foundation, Inc., 51 - * Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "search-entry.h" -#include "search-entry-watermark.h" - -#include <librsvg/rsvg.h> -#include <string.h> - -typedef struct -{ - GdkPixbuf *watermark; - int width, height; -} NldSearchEntryPrivate; - -#define NLD_SEARCH_ENTRY_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NLD_TYPE_SEARCH_ENTRY, NldSearchEntryPrivate)) - -static void nld_search_entry_class_init (NldSearchEntryClass *); -static void nld_search_entry_init (NldSearchEntry *); -static void nld_search_entry_finalize (GObject *); - -static void nld_search_entry_realize (GtkWidget * widget); -static gboolean nld_search_entry_draw (GtkWidget * widget, cairo_t * cr); - -G_DEFINE_TYPE (NldSearchEntry, nld_search_entry, GTK_TYPE_ENTRY) - -static void nld_search_entry_class_init (NldSearchEntryClass * nld_search_entry_class) -{ - GObjectClass *g_obj_class = G_OBJECT_CLASS (nld_search_entry_class); - GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (nld_search_entry_class); - - g_type_class_add_private (nld_search_entry_class, sizeof (NldSearchEntryPrivate)); - - widget_class->realize = nld_search_entry_realize; - widget_class->draw = nld_search_entry_draw; - - g_obj_class->finalize = nld_search_entry_finalize; -} - -static void -nld_search_entry_init (NldSearchEntry * entry) -{ -} - -static void -nld_search_entry_finalize (GObject * object) -{ - NldSearchEntryPrivate *priv = NLD_SEARCH_ENTRY_GET_PRIVATE (object); - - if (priv->watermark) - g_object_unref (priv->watermark); - - G_OBJECT_CLASS (nld_search_entry_parent_class)->finalize (object); -} - -static void -rsvg_size_callback (int *width, int *height, gpointer user_data) -{ - NldSearchEntryPrivate *priv = user_data; - - *width = priv->width = priv->height * (double) *width / (double) *height; - *height = priv->height; -} - -static void -nld_search_entry_realize (GtkWidget * widget) -{ - NldSearchEntryPrivate *priv = NLD_SEARCH_ENTRY_GET_PRIVATE (widget); - int height; - GdkColor *gdkcolor; - char *svg, color[7]; - RsvgHandle *rsvg; - GdkRectangle text_area; - - GTK_WIDGET_CLASS (nld_search_entry_parent_class)->realize (widget); - - gtk_entry_get_text_area (GTK_ENTRY (widget), &text_area); - height = text_area.height; - - if (height - 2 == priv->height) - return; - priv->height = height - 2; - - gdkcolor = >k_widget_get_style (widget)->fg[gtk_widget_get_state (widget)]; - snprintf (color, 7, "%02x%02x%02x", gdkcolor->red >> 8, gdkcolor->green >> 8, - gdkcolor->blue >> 8); - svg = g_strdup_printf (SEARCH_ENTRY_WATERMARK_SVG, color, color); - - rsvg = rsvg_handle_new (); - rsvg_handle_set_size_callback (rsvg, rsvg_size_callback, priv, NULL); - rsvg_handle_write (rsvg, (const guchar *) svg, strlen (svg), NULL); - rsvg_handle_close (rsvg, NULL); - g_free (svg); - - if (priv->watermark) - g_object_unref (priv->watermark); - priv->watermark = rsvg_handle_get_pixbuf (rsvg); - g_object_unref (rsvg); -} - -static gboolean -nld_search_entry_draw (GtkWidget * widget, cairo_t * cr) -{ - NldSearchEntryPrivate *priv = NLD_SEARCH_ENTRY_GET_PRIVATE (widget); - GdkRectangle text_area; - - gtk_entry_get_text_area (GTK_ENTRY (widget), &text_area); - - GTK_WIDGET_CLASS (nld_search_entry_parent_class)->draw (widget, cr); - - int width, x; - - if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR) - { - width = text_area.width; - x = width - priv->width - 1; - } - else - x = 1; - - gdk_cairo_set_source_pixbuf (cr, priv->watermark, x, 1); - cairo_paint (cr); - - return FALSE; -} - -GtkWidget * -nld_search_entry_new (void) -{ - return g_object_new (NLD_TYPE_SEARCH_ENTRY, NULL); -} diff --git a/libslab/search-entry.h b/libslab/search-entry.h deleted file mode 100644 index 0cb07db2..00000000 --- a/libslab/search-entry.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * This file is part of libslab. - * - * Copyright (c) 2006 Novell, Inc. - * - * Libslab is free software; you can redistribute it and/or modify it under the - * terms of the GNU Lesser General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) - * any later version. - * - * Libslab is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for - * more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with libslab; if not, write to the Free Software Foundation, Inc., 51 - * Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef __NLD_SEARCH_ENTRY_H__ -#define __NLD_SEARCH_ENTRY_H__ - -#include <gtk/gtk.h> - -#ifdef __cplusplus -extern "C" { -#endif - -#define NLD_TYPE_SEARCH_ENTRY (nld_search_entry_get_type ()) -#define NLD_SEARCH_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NLD_TYPE_SEARCH_ENTRY, NldSearchEntry)) -#define NLD_SEARCH_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NLD_TYPE_SEARCH_ENTRY, NldSearchEntryClass)) -#define NLD_IS_SEARCH_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NLD_TYPE_SEARCH_ENTRY)) -#define NLD_IS_SEARCH_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NLD_TYPE_SEARCH_ENTRY)) -#define NLD_SEARCH_ENTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NLD_TYPE_SEARCH_ENTRY, NldSearchEntryClass)) - -typedef struct -{ - GtkEntry parent; -} NldSearchEntry; - -typedef struct -{ - GtkEntryClass parent_class; -} NldSearchEntryClass; - -GType nld_search_entry_get_type (void); - -GtkWidget *nld_search_entry_new (void); - -#ifdef __cplusplus -} -#endif -#endif /* __NLD_SEARCH_ENTRY_H__ */ diff --git a/libslab/slab.h b/libslab/slab.h index 2e4b0575..a50dddf9 100644 --- a/libslab/slab.h +++ b/libslab/slab.h @@ -32,7 +32,6 @@ #include "nameplate-tile.h" #include "search-bar.h" #include "search-context-picker.h" -#include "search-entry.h" #include "shell-window.h" #include "slab-mate-util.h" #include "slab-section.h" |