From 41416ba7f8944ac60a6c1d84409d05a2d9e4d787 Mon Sep 17 00:00:00 2001 From: Michael Terry Date: Wed, 22 Jun 2011 15:19:49 -0400 Subject: port to gtk3 --- src/metadata-widget.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'src/metadata-widget.c') diff --git a/src/metadata-widget.c b/src/metadata-widget.c index f687d0c..5c1db2f 100644 --- a/src/metadata-widget.c +++ b/src/metadata-widget.c @@ -267,7 +267,7 @@ static void draw_album_border(GtkWidget *metadata, gboolean selected) { cairo_t *cr; - cr = gdk_cairo_create (metadata->window); + cr = gdk_cairo_create (gtk_widget_get_window (metadata)); GtkStyle *style; style = gtk_widget_get_style (metadata); @@ -357,7 +357,7 @@ static void draw_album_art_placeholder(GtkWidget *metadata) { cairo_t *cr; - cr = gdk_cairo_create (metadata->window); + cr = gdk_cairo_create (gtk_widget_get_window (metadata)); GtkStyle *style; style = gtk_widget_get_style (metadata); @@ -659,10 +659,12 @@ metadata_widget_icon_triangle_draw_cb (GtkWidget *widget, style = gtk_widget_get_style (widget); - cr = (cairo_t*) gdk_cairo_create (widget->window); + cr = (cairo_t*) gdk_cairo_create (gtk_widget_get_window (widget)); - x = widget->allocation.x; - y = widget->allocation.y; + GtkAllocation allocation; + gtk_widget_get_allocation (widget, &allocation); + x = allocation.x; + y = allocation.y; // Draw player icon if (priv->icon_buf != NULL){ -- cgit v1.2.3 From 7cb291db26cc9eaac065e8583626eeff755d7c5a Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Mon, 27 Jun 2011 14:54:46 +0100 Subject: metadatawidget now drawing the album art --- src/metadata-widget.c | 272 +++++++++++++++++++++++++++++++++++++------------- 1 file changed, 202 insertions(+), 70 deletions(-) (limited to 'src/metadata-widget.c') diff --git a/src/metadata-widget.c b/src/metadata-widget.c index 5c1db2f..2c9960b 100644 --- a/src/metadata-widget.c +++ b/src/metadata-widget.c @@ -55,9 +55,6 @@ static void metadata_widget_class_init (MetadataWidgetClass *klass); static void metadata_widget_init (MetadataWidget *self); static void metadata_widget_dispose (GObject *object); static void metadata_widget_finalize (GObject *object); -static gboolean metadata_image_expose (GtkWidget *image, - GdkEventExpose *event, - gpointer user_data); static void metadata_widget_set_style (GtkWidget* button, GtkStyle* style); static void metadata_widget_set_twin_item (MetadataWidget* self, DbusmenuMenuitem* twin_item); @@ -72,15 +69,28 @@ static void metadata_widget_property_update (DbusmenuMenuitem* item, gpointer userdata); static void metadata_widget_style_labels ( MetadataWidget* self, GtkLabel* label); -static void draw_album_art_placeholder ( GtkWidget *metadata); -static void draw_album_border ( GtkWidget *metadata, gboolean selected); +static void draw_album_art_placeholder (GtkWidget *metadata); +static void draw_album_border (GtkWidget *metadata, gboolean selected); static void metadata_widget_selection_received_event_callback( GtkWidget *widget, GtkSelectionData *data, guint time, gpointer user_data); -static gboolean metadata_widget_icon_triangle_draw_cb ( GtkWidget *image, - GdkEventExpose *event, - gpointer user_data ); + +#if GTK_CHECK_VERSION(3, 0, 0) +static gboolean metadata_widget_icon_triangle_draw_cb_gtk_3 (GtkWidget *image, + cairo_t* cr, + gpointer user_data); +static gboolean metadata_image_expose_gtk_3 (GtkWidget *image, + cairo_t* cr, + gpointer user_data); +#else +static gboolean metadata_widget_icon_triangle_draw_cb (GtkWidget *image, + GdkEventExpose *event, + gpointer user_data); +static gboolean metadata_image_expose (GtkWidget *image, + GdkEventExpose *event, + gpointer user_data); +#endif static void metadata_widget_set_icon (MetadataWidget *self); static void metadata_widget_handle_resizing (MetadataWidget* self); @@ -102,8 +112,6 @@ metadata_widget_class_init (MetadataWidgetClass *klass) gobject_class->finalize = metadata_widget_finalize; } - - static void metadata_widget_init (MetadataWidget *self) { @@ -122,14 +130,23 @@ metadata_widget_init (MetadataWidget *self) priv->image_path = g_string_new(""); priv->old_image_path = g_string_new(""); + #if GTK_CHECK_VERSION(3, 0, 0) + g_signal_connect(priv->album_art, "draw", + G_CALLBACK(metadata_image_expose_gtk_3), + GTK_WIDGET(self)); + + g_signal_connect_after (GTK_WIDGET(self), "draw", + G_CALLBACK(metadata_widget_icon_triangle_draw_cb_gtk_3), + GTK_WIDGET(self)); + #else g_signal_connect(priv->album_art, "expose-event", G_CALLBACK(metadata_image_expose), GTK_WIDGET(self)); g_signal_connect_after (GTK_WIDGET(self), "expose-event", G_CALLBACK(metadata_widget_icon_triangle_draw_cb), - GTK_WIDGET(self)); - + GTK_WIDGET(self)); + #endif gtk_box_pack_start (GTK_BOX (priv->meta_data_h_box), priv->album_art, FALSE, @@ -211,13 +228,16 @@ metadata_widget_finalize (GObject *object) G_OBJECT_CLASS (metadata_widget_parent_class)->finalize (object); } - /** * We override the expose method to enable primitive drawing of the * empty album art image and rounded rectangles on the album art. */ + +#if GTK_CHECK_VERSION(3, 0, 0) static gboolean -metadata_image_expose (GtkWidget *metadata, GdkEventExpose *event, gpointer user_data) +metadata_image_expose_gtk_3 (GtkWidget *metadata, + cairo_t* cr, + gpointer user_data) { g_return_val_if_fail(IS_METADATA_WIDGET(user_data), FALSE); MetadataWidget* widget = METADATA_WIDGET(user_data); @@ -252,7 +272,117 @@ metadata_image_expose (GtkWidget *metadata, GdkEventExpose *event, gpointer user g_string_erase (priv->old_image_path, 0, -1); g_string_overwrite (priv->old_image_path, 0, priv->image_path->str); + g_object_unref(pixbuf); + } + return FALSE; + } + gtk_image_clear (GTK_IMAGE(priv->album_art)); + gtk_widget_set_size_request(GTK_WIDGET(priv->album_art), 60, 60); + draw_album_art_placeholder(metadata); + return FALSE; +} + +// Draw the triangle if the player is running ... +static gboolean +metadata_widget_icon_triangle_draw_cb_gtk_3 (GtkWidget *widget, + cairo_t* cr, + gpointer user_data) +{ + + g_return_val_if_fail(IS_METADATA_WIDGET(user_data), FALSE); + MetadataWidget* meta = METADATA_WIDGET(user_data); + MetadataWidgetPrivate * priv = METADATA_WIDGET_GET_PRIVATE(meta); + + GtkStyle *style; + int x, y, arrow_width, arrow_height; + + gint offset = 3; + arrow_width = 5; + arrow_height = 9; + + style = gtk_widget_get_style (widget); + + GtkAllocation allocation; + gtk_widget_get_allocation (widget, &allocation); + x = allocation.x; + y = allocation.y; + + g_debug ("icon expose method"); + + if (cr == NULL){ + g_debug ("Cairo context is null, get out of here"); + return; + } + // Draw player icon + if (priv->icon_buf != NULL){ + gdk_cairo_set_source_pixbuf (cr, + priv->icon_buf, + x + arrow_width + 1, + y + offset); + cairo_paint (cr); + } + + // Draw triangle but only if the player is running. + if (dbusmenu_menuitem_property_get_bool (priv->twin_item, + DBUSMENU_METADATA_MENUITEM_PLAYER_RUNNING)){ + y += (double)arrow_height/2.0 + offset; + cairo_set_line_width (cr, 1.0); + + cairo_move_to (cr, x, y); + cairo_line_to (cr, x, y + arrow_height); + cairo_line_to (cr, x + arrow_width, y + (double)arrow_height/2.0); + cairo_close_path (cr); + cairo_set_source_rgb (cr, style->fg[gtk_widget_get_state(widget)].red/65535.0, + style->fg[gtk_widget_get_state(widget)].green/65535.0, + style->fg[gtk_widget_get_state(widget)].blue/65535.0); + cairo_fill (cr); + } + + cairo_destroy (cr); + return FALSE; +} + +// GTK 2 Expose handler +#else + +static gboolean +metadata_image_expose (GtkWidget *metadata, + GdkEventExpose *event, + gpointer user_data) +{ + g_return_val_if_fail(IS_METADATA_WIDGET(user_data), FALSE); + MetadataWidget* widget = METADATA_WIDGET(user_data); + MetadataWidgetPrivate * priv = METADATA_WIDGET_GET_PRIVATE(widget); + + if ( TRUE == dbusmenu_menuitem_property_get_bool (DBUSMENU_MENUITEM(priv->twin_item), + DBUSMENU_METADATA_MENUITEM_HIDE_TRACK_DETAILS)) + { + return FALSE; + } + + draw_album_border(metadata, FALSE); + + if(priv->image_path->len > 0){ + if(g_string_equal(priv->image_path, priv->old_image_path) == FALSE || + priv->theme_change_occured == TRUE){ + priv->theme_change_occured = FALSE; + GdkPixbuf* pixbuf; + pixbuf = gdk_pixbuf_new_from_file_at_size(priv->image_path->str, 60, 60, NULL); + + if(GDK_IS_PIXBUF(pixbuf) == FALSE){ + gtk_image_clear ( GTK_IMAGE(priv->album_art)); + gtk_widget_set_size_request(GTK_WIDGET(priv->album_art), 60, 60); + draw_album_art_placeholder(metadata); + return FALSE; + } + + gtk_image_set_from_pixbuf(GTK_IMAGE(priv->album_art), pixbuf); + gtk_widget_set_size_request(GTK_WIDGET(priv->album_art), + gdk_pixbuf_get_width(pixbuf), + gdk_pixbuf_get_height(pixbuf)); + g_string_erase (priv->old_image_path, 0, -1); + g_string_overwrite (priv->old_image_path, 0, priv->image_path->str); g_object_unref(pixbuf); } return FALSE; @@ -263,6 +393,64 @@ metadata_image_expose (GtkWidget *metadata, GdkEventExpose *event, gpointer user return FALSE; } + +// Draw the triangle if the player is running ... +static gboolean +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); + MetadataWidgetPrivate * priv = METADATA_WIDGET_GET_PRIVATE(meta); + + GtkStyle *style; + cairo_t *cr; + int x, y, arrow_width, arrow_height; + + gint offset = 3; + arrow_width = 5; + arrow_height = 9; + + style = gtk_widget_get_style (widget); + + cr = (cairo_t*) gdk_cairo_create (gtk_widget_get_window (widget)); + + GtkAllocation allocation; + gtk_widget_get_allocation (widget, &allocation); + x = allocation.x; + y = allocation.y; + + // Draw player icon + if (priv->icon_buf != NULL){ + gdk_cairo_set_source_pixbuf (cr, + priv->icon_buf, + x + arrow_width + 1, + y + offset); + cairo_paint (cr); + } + + // Draw triangle but only if the player is running. + if (dbusmenu_menuitem_property_get_bool (priv->twin_item, + DBUSMENU_METADATA_MENUITEM_PLAYER_RUNNING)){ + y += (double)arrow_height/2.0 + offset; + cairo_set_line_width (cr, 1.0); + + cairo_move_to (cr, x, y); + cairo_line_to (cr, x, y + arrow_height); + cairo_line_to (cr, x + arrow_width, y + (double)arrow_height/2.0); + cairo_close_path (cr); + cairo_set_source_rgb (cr, style->fg[gtk_widget_get_state(widget)].red/65535.0, + style->fg[gtk_widget_get_state(widget)].green/65535.0, + style->fg[gtk_widget_get_state(widget)].blue/65535.0); + cairo_fill (cr); + } + + cairo_destroy (cr); + return FALSE; +} +#endif + static void draw_album_border(GtkWidget *metadata, gboolean selected) { @@ -639,62 +827,6 @@ metadata_widget_set_twin_item (MetadataWidget* self, metadata_widget_handle_resizing (self); } -// Draw the triangle if the player is running ... -static gboolean -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); - MetadataWidgetPrivate * priv = METADATA_WIDGET_GET_PRIVATE(meta); - - GtkStyle *style; - cairo_t *cr; - int x, y, arrow_width, arrow_height; - - gint offset = 3; - arrow_width = 5; - arrow_height = 9; - - style = gtk_widget_get_style (widget); - - cr = (cairo_t*) gdk_cairo_create (gtk_widget_get_window (widget)); - - GtkAllocation allocation; - gtk_widget_get_allocation (widget, &allocation); - x = allocation.x; - y = allocation.y; - - // Draw player icon - if (priv->icon_buf != NULL){ - gdk_cairo_set_source_pixbuf (cr, - priv->icon_buf, - x + arrow_width + 1, - y + offset); - cairo_paint (cr); - } - - // Draw triangle but only if the player is running. - if (dbusmenu_menuitem_property_get_bool (priv->twin_item, - DBUSMENU_METADATA_MENUITEM_PLAYER_RUNNING)){ - y += (double)arrow_height/2.0 + offset; - cairo_set_line_width (cr, 1.0); - - cairo_move_to (cr, x, y); - cairo_line_to (cr, x, y + arrow_height); - cairo_line_to (cr, x + arrow_width, y + (double)arrow_height/2.0); - cairo_close_path (cr); - cairo_set_source_rgb (cr, style->fg[gtk_widget_get_state(widget)].red/65535.0, - style->fg[gtk_widget_get_state(widget)].green/65535.0, - style->fg[gtk_widget_get_state(widget)].blue/65535.0); - cairo_fill (cr); - } - - cairo_destroy (cr); - return FALSE; -} - /** * transport_new: * @returns: a new #MetadataWidget. -- cgit v1.2.3 From b71505f2ebffc8b4c8766a6f2b5147fb61ee931e Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Tue, 28 Jun 2011 10:45:06 +0100 Subject: gtk widgets behaving themselves finally in gtk3 --- src/metadata-widget.c | 76 +++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 59 insertions(+), 17 deletions(-) (limited to 'src/metadata-widget.c') diff --git a/src/metadata-widget.c b/src/metadata-widget.c index 2c9960b..7681be6 100644 --- a/src/metadata-widget.c +++ b/src/metadata-widget.c @@ -46,6 +46,7 @@ struct _MetadataWidgetPrivate GtkWidget* player_label; GdkPixbuf* icon_buf; DbusmenuMenuitem* twin_item; + gint current_height; }; #define METADATA_WIDGET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), METADATA_WIDGET_TYPE, MetadataWidgetPrivate)) @@ -58,6 +59,13 @@ static void metadata_widget_finalize (GObject *object); static void metadata_widget_set_style (GtkWidget* button, GtkStyle* style); static void metadata_widget_set_twin_item (MetadataWidget* self, DbusmenuMenuitem* twin_item); +static void metadata_get_preferred_width (GtkWidget *widget, + gint *minimal_width, + gint *natural_width); +static void metadata_get_preferred_height (GtkWidget *widget, + gint *minimal_width, + gint *natural_width); + // keyevent consumers static gboolean metadata_widget_button_release_event (GtkWidget *menuitem, @@ -70,6 +78,7 @@ static void metadata_widget_property_update (DbusmenuMenuitem* item, static void metadata_widget_style_labels ( MetadataWidget* self, GtkLabel* label); static void draw_album_art_placeholder (GtkWidget *metadata); + static void draw_album_border (GtkWidget *metadata, gboolean selected); static void metadata_widget_selection_received_event_callback( GtkWidget *widget, GtkSelectionData *data, @@ -106,12 +115,36 @@ metadata_widget_class_init (MetadataWidgetClass *klass) widget_class->button_release_event = metadata_widget_button_release_event; + #if GTK_CHECK_VERSION(3, 0, 0) + widget_class->get_preferred_width = metadata_get_preferred_width; + widget_class->get_preferred_height = metadata_get_preferred_height; + #endif g_type_class_add_private (klass, sizeof (MetadataWidgetPrivate)); gobject_class->dispose = metadata_widget_dispose; gobject_class->finalize = metadata_widget_finalize; } +#if GTK_CHECK_VERSION(3, 0, 0) +static void +metadata_get_preferred_width (GtkWidget *widget, + gint *minimal_width, + gint *natural_width) +{ + *minimal_width = *natural_width = 200; +} + +static void +metadata_get_preferred_height (GtkWidget *widget, + gint *minimal_height, + gint *natural_height) +{ + //MetadataWidget* self = METADATA_WIDGET (widget); + //MetadataWidgetPrivate * priv = METADATA_WIDGET_GET_PRIVATE(self); + *minimal_height = *natural_height = 95;//priv->current_height; +} +#endif + static void metadata_widget_init (MetadataWidget *self) { @@ -124,13 +157,14 @@ metadata_widget_init (MetadataWidget *self) hbox = gtk_hbox_new(FALSE, 0); priv->meta_data_h_box = hbox; - + priv->current_height = 1; + // image priv->album_art = gtk_image_new(); priv->image_path = g_string_new(""); priv->old_image_path = g_string_new(""); - #if GTK_CHECK_VERSION(3, 0, 0) + #if GTK_CHECK_VERSION(3, 0, 0) g_signal_connect(priv->album_art, "draw", G_CALLBACK(metadata_image_expose_gtk_3), GTK_WIDGET(self)); @@ -206,9 +240,14 @@ metadata_widget_init (MetadataWidget *self) priv->player_label = player_label; gtk_box_pack_start (GTK_BOX(outer_v_box), priv->player_label, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX(outer_v_box), priv->meta_data_h_box, FALSE, FALSE, 0); gtk_container_add (GTK_CONTAINER (self), outer_v_box); + + gtk_widget_show_all (priv->meta_data_h_box); + gtk_widget_set_no_show_all (priv->meta_data_h_box, TRUE); + gtk_widget_hide (priv->meta_data_h_box); } static void @@ -249,8 +288,8 @@ metadata_image_expose_gtk_3 (GtkWidget *metadata, return FALSE; } - draw_album_border(metadata, FALSE); - + draw_album_border (metadata, FALSE); + if(priv->image_path->len > 0){ if(g_string_equal(priv->image_path, priv->old_image_path) == FALSE || priv->theme_change_occured == TRUE){ @@ -305,14 +344,8 @@ metadata_widget_icon_triangle_draw_cb_gtk_3 (GtkWidget *widget, GtkAllocation allocation; gtk_widget_get_allocation (widget, &allocation); x = allocation.x; - y = allocation.y; - - g_debug ("icon expose method"); + y = 0; - if (cr == NULL){ - g_debug ("Cairo context is null, get out of here"); - return; - } // Draw player icon if (priv->icon_buf != NULL){ gdk_cairo_set_source_pixbuf (cr, @@ -328,6 +361,8 @@ metadata_widget_icon_triangle_draw_cb_gtk_3 (GtkWidget *widget, y += (double)arrow_height/2.0 + offset; cairo_set_line_width (cr, 1.0); + //g_debug ("triangle drawing"); + cairo_move_to (cr, x, y); cairo_line_to (cr, x, y + arrow_height); cairo_line_to (cr, x + arrow_width, y + (double)arrow_height/2.0); @@ -338,7 +373,6 @@ metadata_widget_icon_triangle_draw_cb_gtk_3 (GtkWidget *widget, cairo_fill (cr); } - cairo_destroy (cr); return FALSE; } @@ -695,25 +729,33 @@ metadata_widget_handle_resizing (MetadataWidget* self) { MetadataWidgetPrivate * priv = METADATA_WIDGET_GET_PRIVATE(self); + g_debug ("SHOW/HIDE TRACK DETAILS - %i", dbusmenu_menuitem_property_get_bool (priv->twin_item, DBUSMENU_METADATA_MENUITEM_HIDE_TRACK_DETAILS)); + if (dbusmenu_menuitem_property_get_bool (priv->twin_item, DBUSMENU_METADATA_MENUITEM_HIDE_TRACK_DETAILS) == TRUE){ + // TODO + // revert to hide + #if GTK_CHECK_VERSION(3, 0, 0) + gtk_widget_show (priv->meta_data_h_box); + #else gtk_widget_hide (priv->meta_data_h_box); gtk_widget_hide (priv->artist_label); gtk_widget_hide (priv->piece_label); gtk_widget_hide (priv->container_label); gtk_widget_hide (priv->album_art); - gtk_widget_hide (priv->meta_data_v_box); - gtk_widget_set_size_request(GTK_WIDGET(self), 200, 20); + gtk_widget_hide (priv->meta_data_v_box); + #endif } else{ - + #if GTK_CHECK_VERSION(3, 0, 0) + gtk_widget_show (priv->meta_data_h_box); + #else gtk_widget_show (priv->meta_data_h_box); gtk_widget_show (priv->artist_label); gtk_widget_show (priv->piece_label); gtk_widget_show (priv->container_label); gtk_widget_show (priv->album_art); - gtk_widget_show (priv->meta_data_v_box); - gtk_widget_set_size_request(GTK_WIDGET(self), 200, 95); + #endif } gtk_widget_queue_draw(GTK_WIDGET(self)); } -- cgit v1.2.3 From 61d2139ecadae8ba301fc7b760dc514541868ecc Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Tue, 28 Jun 2011 11:39:16 +0100 Subject: colours of buttons and blank album art background fixed --- src/metadata-widget.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/metadata-widget.c') diff --git a/src/metadata-widget.c b/src/metadata-widget.c index 7681be6..d522358 100644 --- a/src/metadata-widget.c +++ b/src/metadata-widget.c @@ -490,6 +490,11 @@ draw_album_border(GtkWidget *metadata, gboolean selected) { cairo_t *cr; cr = gdk_cairo_create (gtk_widget_get_window (metadata)); + #if GTK_CHECK_VERSION(3, 0, 0) + gtk_style_context_add_class (gtk_widget_get_style_context (metadata), + "menu"); + #endif + GtkStyle *style; style = gtk_widget_get_style (metadata); -- cgit v1.2.3 From ffd0bd8160dde014d14f31cf3c5f0ab904aee654 Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Wed, 6 Jul 2011 12:50:58 +0100 Subject: fixed the collapsing and expanding of the metadata widget, removed some unnecessary gtk3 stuff I thought that was necessary, tidied metadatawidget plus added a timeout for the metadata prop update query --- src/metadata-widget.c | 58 ++------------------------------------------------- 1 file changed, 2 insertions(+), 56 deletions(-) (limited to 'src/metadata-widget.c') diff --git a/src/metadata-widget.c b/src/metadata-widget.c index d522358..f3f856c 100644 --- a/src/metadata-widget.c +++ b/src/metadata-widget.c @@ -59,14 +59,6 @@ static void metadata_widget_finalize (GObject *object); static void metadata_widget_set_style (GtkWidget* button, GtkStyle* style); static void metadata_widget_set_twin_item (MetadataWidget* self, DbusmenuMenuitem* twin_item); -static void metadata_get_preferred_width (GtkWidget *widget, - gint *minimal_width, - gint *natural_width); -static void metadata_get_preferred_height (GtkWidget *widget, - gint *minimal_width, - gint *natural_width); - - // keyevent consumers static gboolean metadata_widget_button_release_event (GtkWidget *menuitem, GdkEventButton *event); @@ -85,7 +77,7 @@ static void metadata_widget_selection_received_event_callback( GtkWidget guint time, gpointer user_data); -#if GTK_CHECK_VERSION(3, 0, 0) +#if GTK_CHECK_VERSION(3, 0, 0) static gboolean metadata_widget_icon_triangle_draw_cb_gtk_3 (GtkWidget *image, cairo_t* cr, gpointer user_data); @@ -115,36 +107,12 @@ metadata_widget_class_init (MetadataWidgetClass *klass) widget_class->button_release_event = metadata_widget_button_release_event; - #if GTK_CHECK_VERSION(3, 0, 0) - widget_class->get_preferred_width = metadata_get_preferred_width; - widget_class->get_preferred_height = metadata_get_preferred_height; - #endif g_type_class_add_private (klass, sizeof (MetadataWidgetPrivate)); gobject_class->dispose = metadata_widget_dispose; gobject_class->finalize = metadata_widget_finalize; } -#if GTK_CHECK_VERSION(3, 0, 0) -static void -metadata_get_preferred_width (GtkWidget *widget, - gint *minimal_width, - gint *natural_width) -{ - *minimal_width = *natural_width = 200; -} - -static void -metadata_get_preferred_height (GtkWidget *widget, - gint *minimal_height, - gint *natural_height) -{ - //MetadataWidget* self = METADATA_WIDGET (widget); - //MetadataWidgetPrivate * priv = METADATA_WIDGET_GET_PRIVATE(self); - *minimal_height = *natural_height = 95;//priv->current_height; -} -#endif - static void metadata_widget_init (MetadataWidget *self) { @@ -712,10 +680,7 @@ metadata_widget_property_update(DbusmenuMenuitem* item, gchar* property, else if(g_ascii_strcasecmp(DBUSMENU_METADATA_MENUITEM_ARTURL, property) == 0){ g_string_erase(priv->image_path, 0, -1); g_string_overwrite(priv->image_path, 0, g_variant_get_string (value, NULL)); - // if its a remote image queue a redraw incase the download took too long - //if (g_str_has_prefix(g_variant_get_string (value, NULL), g_get_user_cache_dir())){ gtk_widget_queue_draw(GTK_WIDGET(mitem)); - //} } else if (g_ascii_strcasecmp (DBUSMENU_METADATA_MENUITEM_PLAYER_NAME, property) == 0){ gtk_label_set_label (GTK_LABEL (priv->player_label), @@ -734,33 +699,14 @@ metadata_widget_handle_resizing (MetadataWidget* self) { MetadataWidgetPrivate * priv = METADATA_WIDGET_GET_PRIVATE(self); - g_debug ("SHOW/HIDE TRACK DETAILS - %i", dbusmenu_menuitem_property_get_bool (priv->twin_item, DBUSMENU_METADATA_MENUITEM_HIDE_TRACK_DETAILS)); + //g_debug ("SHOW/HIDE TRACK DETAILS - %i", dbusmenu_menuitem_property_get_bool (priv->twin_item, DBUSMENU_METADATA_MENUITEM_HIDE_TRACK_DETAILS)); if (dbusmenu_menuitem_property_get_bool (priv->twin_item, DBUSMENU_METADATA_MENUITEM_HIDE_TRACK_DETAILS) == TRUE){ - // TODO - // revert to hide - #if GTK_CHECK_VERSION(3, 0, 0) - gtk_widget_show (priv->meta_data_h_box); - #else gtk_widget_hide (priv->meta_data_h_box); - gtk_widget_hide (priv->artist_label); - gtk_widget_hide (priv->piece_label); - gtk_widget_hide (priv->container_label); - gtk_widget_hide (priv->album_art); - gtk_widget_hide (priv->meta_data_v_box); - #endif } else{ - #if GTK_CHECK_VERSION(3, 0, 0) - gtk_widget_show (priv->meta_data_h_box); - #else gtk_widget_show (priv->meta_data_h_box); - gtk_widget_show (priv->artist_label); - gtk_widget_show (priv->piece_label); - gtk_widget_show (priv->container_label); - gtk_widget_show (priv->album_art); - #endif } gtk_widget_queue_draw(GTK_WIDGET(self)); } -- cgit v1.2.3 From 0fbfa4d67da89c27a67c3b0144ecdd7f0b39185f Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Thu, 7 Jul 2011 11:18:29 +0100 Subject: removed another debug@ --- src/metadata-widget.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'src/metadata-widget.c') diff --git a/src/metadata-widget.c b/src/metadata-widget.c index f3f856c..d34f1fc 100644 --- a/src/metadata-widget.c +++ b/src/metadata-widget.c @@ -698,9 +698,7 @@ static void metadata_widget_handle_resizing (MetadataWidget* self) { MetadataWidgetPrivate * priv = METADATA_WIDGET_GET_PRIVATE(self); - - //g_debug ("SHOW/HIDE TRACK DETAILS - %i", dbusmenu_menuitem_property_get_bool (priv->twin_item, DBUSMENU_METADATA_MENUITEM_HIDE_TRACK_DETAILS)); - + if (dbusmenu_menuitem_property_get_bool (priv->twin_item, DBUSMENU_METADATA_MENUITEM_HIDE_TRACK_DETAILS) == TRUE){ gtk_widget_hide (priv->meta_data_h_box); -- cgit v1.2.3 From bd4277e440221ae75e450d1fe967cfc5e46140ab Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Thu, 28 Jul 2011 11:37:13 +0100 Subject: fixed the resizing bug --- src/metadata-widget.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) (limited to 'src/metadata-widget.c') diff --git a/src/metadata-widget.c b/src/metadata-widget.c index d34f1fc..ee9957f 100644 --- a/src/metadata-widget.c +++ b/src/metadata-widget.c @@ -77,7 +77,12 @@ static void metadata_widget_selection_received_event_callback( GtkWidget guint time, gpointer user_data); + + #if GTK_CHECK_VERSION(3, 0, 0) +static void metadata_widget_get_preferred_width (GtkWidget* self, + gint* minimum_width, + gint* natural_width); static gboolean metadata_widget_icon_triangle_draw_cb_gtk_3 (GtkWidget *image, cairo_t* cr, gpointer user_data); @@ -106,7 +111,9 @@ metadata_widget_class_init (MetadataWidgetClass *klass) GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); widget_class->button_release_event = metadata_widget_button_release_event; - + #if GTK_CHECK_VERSION(3, 0, 0) + widget_class->get_preferred_width = metadata_widget_get_preferred_width; + #endif g_type_class_add_private (klass, sizeof (MetadataWidgetPrivate)); gobject_class->dispose = metadata_widget_dispose; @@ -163,6 +170,7 @@ metadata_widget_init (MetadataWidget *self) gtk_misc_set_alignment(GTK_MISC(artist), (gfloat)0, (gfloat)0); gtk_misc_set_padding (GTK_MISC(artist), (gfloat)10, (gfloat)0); gtk_widget_set_size_request (artist, 140, 15); + gtk_label_set_ellipsize(GTK_LABEL(artist), PANGO_ELLIPSIZE_MIDDLE); metadata_widget_style_labels(self, GTK_LABEL(artist)); priv->artist_label = artist; @@ -172,6 +180,7 @@ metadata_widget_init (MetadataWidget *self) piece = gtk_label_new(""); gtk_misc_set_alignment(GTK_MISC(piece), (gfloat)0, (gfloat)0); gtk_misc_set_padding (GTK_MISC(piece), (gfloat)10, (gfloat)-5); + gtk_widget_set_size_request (piece, 140, 15); gtk_label_set_ellipsize(GTK_LABEL(piece), PANGO_ELLIPSIZE_MIDDLE); metadata_widget_style_labels(self, GTK_LABEL(piece)); @@ -183,6 +192,7 @@ metadata_widget_init (MetadataWidget *self) gtk_misc_set_alignment(GTK_MISC(container), (gfloat)0, (gfloat)0); gtk_misc_set_padding (GTK_MISC(container), (gfloat)10, (gfloat)0); gtk_widget_set_size_request (container, 140, 15); + gtk_label_set_ellipsize(GTK_LABEL(container), PANGO_ELLIPSIZE_MIDDLE); metadata_widget_style_labels(self, GTK_LABEL(container)); priv->container_label = container; @@ -215,6 +225,7 @@ metadata_widget_init (MetadataWidget *self) gtk_widget_show_all (priv->meta_data_h_box); gtk_widget_set_no_show_all (priv->meta_data_h_box, TRUE); + gtk_widget_hide (priv->meta_data_h_box); } @@ -235,12 +246,19 @@ metadata_widget_finalize (GObject *object) G_OBJECT_CLASS (metadata_widget_parent_class)->finalize (object); } + +#if GTK_CHECK_VERSION(3, 0, 0) +static void +metadata_widget_get_preferred_width (GtkWidget* self, + gint* minimum_width, + gint* natural_width) +{ + *minimum_width = *natural_width = 200; +} /** * We override the expose method to enable primitive drawing of the * empty album art image and rounded rectangles on the album art. */ - -#if GTK_CHECK_VERSION(3, 0, 0) static gboolean metadata_image_expose_gtk_3 (GtkWidget *metadata, cairo_t* cr, -- cgit v1.2.3