aboutsummaryrefslogtreecommitdiff
path: root/src/metadata-widget.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/metadata-widget.c')
-rw-r--r--src/metadata-widget.c65
1 files changed, 27 insertions, 38 deletions
diff --git a/src/metadata-widget.c b/src/metadata-widget.c
index 5f04fd7..aea6f2e 100644
--- a/src/metadata-widget.c
+++ b/src/metadata-widget.c
@@ -79,9 +79,9 @@ static void metadata_widget_selection_received_event_callback( GtkWidget
GtkSelectionData *data,
guint time,
gpointer user_data);
-static gboolean metadata_widget_triangle_draw_cb ( GtkWidget *image,
- GdkEventExpose *event,
- gpointer user_data);
+static gboolean metadata_widget_icon_triangle_draw_cb ( GtkWidget *image,
+ GdkEventExpose *event,
+ gpointer user_data );
static void metadata_widget_set_icon (MetadataWidget *self);
static void metadata_widget_handle_resizing (MetadataWidget* self);
@@ -127,9 +127,9 @@ metadata_widget_init (MetadataWidget *self)
G_CALLBACK(metadata_image_expose),
GTK_WIDGET(self));
- g_signal_connect(GTK_WIDGET(self), "expose-event",
- G_CALLBACK(metadata_widget_triangle_draw_cb),
- GTK_WIDGET(self));
+ g_signal_connect_after (GTK_WIDGET(self), "expose-event",
+ G_CALLBACK(metadata_widget_icon_triangle_draw_cb),
+ GTK_WIDGET(self));
gtk_box_pack_start (GTK_BOX (priv->meta_data_h_box),
priv->album_art,
@@ -185,7 +185,7 @@ metadata_widget_init (MetadataWidget *self)
GtkWidget* player_label;
player_label = gtk_label_new("");
gtk_misc_set_alignment(GTK_MISC(player_label), (gfloat)0, (gfloat)0);
- gtk_misc_set_padding (GTK_MISC(player_label), (gfloat)0, (gfloat)0);
+ gtk_misc_set_padding (GTK_MISC(player_label), (gfloat)1, (gfloat)0);
gtk_widget_set_size_request (player_label, 200, 25);
priv->player_label = player_label;
@@ -391,7 +391,7 @@ draw_album_art_placeholder(GtkWidget *metadata)
1.0);
pango_cairo_update_layout(cr, layout);
- cairo_move_to (cr, alloc.x + alloc.width/6, alloc.y + alloc.height/8);
+ cairo_move_to (cr, alloc.x + alloc.width/6, alloc.y + 3);
pango_cairo_show_layout(cr, layout);
g_object_unref(layout);
@@ -586,8 +586,8 @@ metadata_widget_set_icon (MetadataWidget *self)
NULL );
gdk_pixbuf_ref (icon_buf);
priv->icon_buf = icon_buf;
- g_string_free ( app_panel, FALSE) ;
- g_string_free ( banshee_string, FALSE) ;
+ g_string_free ( app_panel, FALSE);
+ g_string_free ( banshee_string, FALSE);
}
static void
@@ -636,9 +636,9 @@ metadata_widget_set_twin_item (MetadataWidget* self,
// Draw the triangle if the player is running ...
static gboolean
-metadata_widget_triangle_draw_cb (GtkWidget *widget,
- GdkEventExpose *event,
- gpointer user_data)
+metadata_widget_icon_triangle_draw_cb (GtkWidget *widget,
+ GdkEventExpose *event,
+ gpointer user_data)
{
g_return_val_if_fail(IS_METADATA_WIDGET(user_data), FALSE);
MetadataWidget* meta = METADATA_WIDGET(user_data);
@@ -647,47 +647,36 @@ metadata_widget_triangle_draw_cb (GtkWidget *widget,
GtkStyle *style;
cairo_t *cr;
int x, y, arrow_width, arrow_height;
-
- style = gtk_widget_get_style (widget);
+ gint offset = 3;
arrow_width = 5;
arrow_height = 9;
- gint vertical_offset = 3;
+
+ style = gtk_widget_get_style (widget);
+
+ cr = (cairo_t*) gdk_cairo_create (widget->window);
x = widget->allocation.x;
- y = widget->allocation.y + (double)arrow_height/2.0 + vertical_offset;
+ y = widget->allocation.y;
// Draw player icon
- if (priv->icon_buf != NULL){
- g_debug ("Is the icon a pixbuf for image string : %i",
- GDK_IS_PIXBUF (priv->icon_buf));
-
- gint pixbuf_width = gdk_pixbuf_get_width (priv->icon_buf);
- gint pixbuf_height = gdk_pixbuf_get_width (priv->icon_buf);
-
- cairo_surface_t *surface = cairo_image_surface_create_for_data (gdk_pixbuf_get_pixels(priv->icon_buf),
- CAIRO_FORMAT_RGB24,
- pixbuf_width,
- pixbuf_height,
- gdk_pixbuf_get_rowstride(priv->icon_buf));
- cr = cairo_create (surface);
- cairo_move_to (cr, x, y);
-
+ if (priv->icon_buf != NULL){
+ gdk_cairo_set_source_pixbuf (cr,
+ priv->icon_buf,
+ x + arrow_width + 1,
+ y + offset);
cairo_paint (cr);
-
- cairo_destroy (cr);
- cairo_surface_destroy (surface);
- g_debug ("here 1");
}
// Draw triangle but only if the player is running.
if (! dbusmenu_menuitem_property_get_bool (priv->twin_item,
DBUSMENU_METADATA_MENUITEM_PLAYER_RUNNING)){
+ cairo_destroy (cr);
return FALSE;
}
- cr = (cairo_t*) gdk_cairo_create (widget->window);
-
+
+ y += (double)arrow_height/2.0 + offset;
cairo_set_line_width (cr, 1.0);
cairo_move_to (cr, x, y);