# Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: jstpierre@jstpierre-20090422134407-1ktnjvjt7c2rvrxt # target_branch: bzr+ssh://bazaar.launchpad.net/%7Enotify-osd-\ # developers/notify-osd/main/ # testament_sha1: dd98b85c480a807bd4c1b3b0a6bb107027fe4c10 # timestamp: 2009-04-22 12:14:06 -0400 # base_revision_id: mirco.mueller@ubuntu.com-20090416141832-\ # 98d1i0z32hj9isp0 # # Begin patch === modified file 'src/bubble.c' --- src/bubble.c 2009-04-16 14:13:47 +0000 +++ src/bubble.c 2009-04-22 13:44:07 +0000 @@ -590,8 +590,8 @@ outline_height / 2.0f + outline_thickness / 2.0f + 0.5f, - bar_radius, - bar_width / 100.0f * (gdouble) value, + bar_radius, + bar_width / 100.0f * (gdouble) value, bar_height); gradient = cairo_pattern_create_linear (0.0f, (gdouble) start_x + @@ -674,9 +674,9 @@ glow_surface = cairo_image_surface_create ( CAIRO_FORMAT_ARGB32, EM2PIXELS (defaults_get_bubble_width (d), d) - - 2 * EM2PIXELS (defaults_get_margin_size (d), d) + + 2 * gdk_pixbuf_get_width(priv->icon_pixbuf) + 2 * blur_radius, - EM2PIXELS (defaults_get_icon_size (d), d) + + gdk_pixbuf_get_height(priv->icon_pixbuf) + 2 * blur_radius); status = cairo_surface_status (glow_surface); if (status != CAIRO_STATUS_SUCCESS) @@ -710,13 +710,13 @@ glow_cr, priv->value, EM2PIXELS (defaults_get_margin_size (d), d) + - EM2PIXELS (defaults_get_icon_size (d), d) + + gdk_pixbuf_get_width(priv->icon_pixbuf) + blur_radius, blur_radius, EM2PIXELS (defaults_get_bubble_width (d), d) - 3 * EM2PIXELS (defaults_get_margin_size (d), d) - - EM2PIXELS (defaults_get_icon_size (d), d), - EM2PIXELS (defaults_get_icon_size (d), d)); + gdk_pixbuf_get_width(priv->icon_pixbuf), + gdk_pixbuf_get_height(priv->icon_pixbuf)); /* "blit" scratch-pad context to context of bubble */ cairo_set_source_surface (cr, @@ -849,7 +849,7 @@ left_margin); cairo_paint (cr); - left_margin += EM2PIXELS (defaults_get_icon_size (d), d); + left_margin += gdk_pixbuf_get_width(priv->icon_pixbuf); left_margin += EM2PIXELS (defaults_get_margin_size (d), d); /* render title */ @@ -938,7 +938,7 @@ left_margin); cairo_paint (cr); - left_margin += EM2PIXELS (defaults_get_icon_size (d), d); + left_margin += gdk_pixbuf_get_width(priv->icon_pixbuf); left_margin += EM2PIXELS (defaults_get_margin_size (d), d); /* render title */ @@ -1470,8 +1470,9 @@ d), EM2PIXELS (defaults_get_bubble_corner_radius (d), d), - EM2PIXELS (defaults_get_bubble_width (d), - d), + (gdouble) bubble_get_width (bubble) - + 2.0f * EM2PIXELS (defaults_get_bubble_shadow_size (d), + d), (gdouble) bubble_get_height (bubble) - 2.0f * EM2PIXELS (defaults_get_bubble_shadow_size (d), d)); @@ -1503,8 +1504,9 @@ d), EM2PIXELS (defaults_get_bubble_corner_radius (d), d), - EM2PIXELS (defaults_get_bubble_width (d), - d), + (gdouble) bubble_get_width (bubble) - + 2.0f * EM2PIXELS (defaults_get_bubble_shadow_size (d), + d), (gdouble) bubble_get_height (bubble) - 2.0f * EM2PIXELS (defaults_get_bubble_shadow_size (d), d)); @@ -1633,11 +1635,7 @@ /* Implementation note: blocking I/O; could be cancellable though */ { /* load image into pixbuf */ - pixbuf = gdk_pixbuf_new_from_file_at_scale (filename, - icon_size, - icon_size, - TRUE, - NULL); + pixbuf = gdk_pixbuf_new_from_file (filename, NULL); } else { /* TODO: rewrite, check for SVG support, raise apport ** notification for low-res icons */ @@ -2132,6 +2130,7 @@ d)); } +/* static GdkPixbuf * scale_pixbuf (const GdkPixbuf *pixbuf, gint size) { @@ -2149,7 +2148,7 @@ new_width = size * (w / max_edge); new_height = size * (h / max_edge); - /* Scale the pixbuf down, preserving the aspect ratio */ + // Scale the pixbuf down, preserving the aspect ratio scaled_icon = gdk_pixbuf_scale_simple (pixbuf, new_width, new_height, @@ -2158,22 +2157,22 @@ if (w == h) return scaled_icon; - /* Create a square pixbuf with an alpha channel */ + // Create a square pixbuf with an alpha channel new_icon = gdk_pixbuf_new (gdk_pixbuf_get_colorspace (scaled_icon), TRUE, gdk_pixbuf_get_bits_per_sample (scaled_icon), size, size); - /* Clear the pixbuf so it is transparent */ + // Clear the pixbuf so it is transparent gdk_pixbuf_fill (new_icon, 0x00000000); - /* Center the rectangular pixbuf inside the transparent square */ + // Center the rectangular pixbuf inside the transparent square if (new_width > new_height) dest_y = (new_width - new_height) / 2; else dest_x = (new_height - new_width) / 2; - /* Copy the rectangular pixbuf into the new pixbuf at a centered position */ + // Copy the rectangular pixbuf into the new pixbuf at a centered position gdk_pixbuf_copy_area (scaled_icon, 0, 0, gdk_pixbuf_get_width (scaled_icon), @@ -2184,15 +2183,16 @@ return new_icon; } +*/ void bubble_set_icon_from_pixbuf (Bubble* self, GdkPixbuf* pixbuf) { - GdkPixbuf* scaled; + /*GdkPixbuf* scaled; gint height; gint width; - Defaults* d; + Defaults* d;*/ BubblePrivate* priv; if (!self || !IS_BUBBLE (self) || !pixbuf) @@ -2205,7 +2205,8 @@ g_object_unref (priv->icon_pixbuf); priv->icon_pixbuf = NULL; } - + + /* height = gdk_pixbuf_get_height (pixbuf); width = gdk_pixbuf_get_width (pixbuf); @@ -2218,7 +2219,7 @@ g_object_unref (pixbuf); pixbuf = scaled; - } + }*/ priv->icon_pixbuf = pixbuf; } @@ -2823,6 +2824,22 @@ } gint +bubble_get_width (Bubble *self) +{ + gint width; + gint height; + + if (!self || !IS_BUBBLE (self)) + return 0; + + gtk_window_get_size (GTK_WINDOW (GET_PRIVATE (self)->widget), + &width, + &height); + + return width; +} + +gint bubble_get_height (Bubble *self) { gint width; @@ -3010,6 +3027,7 @@ void bubble_recalc_size (Bubble *self) { + gint icon_height = 0; gint new_bubble_width = 0; gint new_bubble_height = 0; Defaults* d; @@ -3020,11 +3038,13 @@ d = self->defaults; priv = GET_PRIVATE (self); - + + icon_height = gdk_pixbuf_get_height(priv->icon_pixbuf); + /* FIXME: a quick fix to rescale an icon (e.g. user changed font-size or ** DPI while a bubble is displayed, thus bubble is re-rendered and the ** icon needs to adapt to the new size) */ - if (priv->icon_pixbuf) + /* if (priv->icon_pixbuf) { GdkPixbuf *pixbuf; pixbuf = gdk_pixbuf_scale_simple ( @@ -3034,12 +3054,13 @@ GDK_INTERP_HYPER); g_object_unref (priv->icon_pixbuf); priv->icon_pixbuf = pixbuf; - } + }*/ bubble_determine_layout (self); new_bubble_width = EM2PIXELS (defaults_get_bubble_width (d), d) + + gdk_pixbuf_get_width(priv->icon_pixbuf) + 2 * EM2PIXELS (defaults_get_bubble_shadow_size (d), d); switch (priv->layout) @@ -3049,8 +3070,7 @@ case LAYOUT_ICON_TITLE: priv->title_width = EM2PIXELS (defaults_get_bubble_width (d), d) - - 3 * EM2PIXELS (defaults_get_margin_size (d), d) - - EM2PIXELS (defaults_get_icon_size (d), d); + 3 * EM2PIXELS (defaults_get_margin_size (d), d); priv->title_height = _calc_title_height ( self, @@ -3058,7 +3078,8 @@ new_bubble_height = EM2PIXELS (defaults_get_bubble_min_height (d), d) + - 2.0f * EM2PIXELS (defaults_get_bubble_shadow_size (d), d); + 2.0f * EM2PIXELS (defaults_get_bubble_shadow_size (d), d) + + icon_height; break; case LAYOUT_ICON_TITLE_BODY: @@ -3068,8 +3089,7 @@ priv->title_width = EM2PIXELS (defaults_get_bubble_width (d), d) - - 3 * EM2PIXELS (defaults_get_margin_size (d), d) - - EM2PIXELS (defaults_get_icon_size (d), d); + 3 * EM2PIXELS (defaults_get_margin_size (d), d); priv->title_height = _calc_title_height ( self, @@ -3077,8 +3097,7 @@ priv->body_width = EM2PIXELS (defaults_get_bubble_width (d), d) - - 3 * EM2PIXELS (defaults_get_margin_size (d), d) - - EM2PIXELS (defaults_get_icon_size (d), d); + 3 * EM2PIXELS (defaults_get_margin_size (d), d); priv->body_height = _calc_body_height ( self, @@ -3092,7 +3111,8 @@ bubble_height = PIXELS2EM (priv->title_height, d) + PIXELS2EM (priv->body_height, d) + - 2.0f * defaults_get_margin_size (d); + 2.0f * defaults_get_margin_size (d) + + PIXELS2EM (icon_height, d); if (bubble_height >= available_height) { @@ -3102,10 +3122,10 @@ { if (priv->body_height + priv->title_height < - EM2PIXELS (defaults_get_icon_size (d), d)) + icon_height) { new_bubble_height = - EM2PIXELS (defaults_get_icon_size (d), d) + + icon_height + 2.0f * EM2PIXELS (defaults_get_margin_size (d), d) + 2.0f * EM2PIXELS (defaults_get_bubble_shadow_size (d), d); } === modified file 'src/bubble.h' --- src/bubble.h 2009-04-09 10:44:07 +0000 +++ src/bubble.h 2009-04-22 13:11:25 +0000 @@ -186,6 +186,9 @@ gint* y); gint +bubble_get_width (Bubble *self); + +gint bubble_get_height (Bubble *self); gint === modified file 'src/display.c' --- src/display.c 2009-04-09 10:44:07 +0000 +++ src/display.c 2009-04-22 13:44:07 +0000 @@ -217,16 +217,18 @@ return; } - + + d= self->defaults; + bubble_set_timeout (bubble, - defaults_get_on_screen_timeout (self->defaults)); - - defaults_get_top_corner (self->defaults, &x, &y); - + defaults_get_on_screen_timeout (d)); + + defaults_get_top_corner (d, &x, &y); + x -= (bubble_get_width(bubble) - EM2PIXELS(defaults_get_bubble_width(d), d)); + if (sync_bubble != NULL && bubble_is_visible (sync_bubble)) { - d = self->defaults; y += bubble_get_height (sync_bubble); y += EM2PIXELS (defaults_get_bubble_vert_gap (d), d) - 2 * EM2PIXELS (defaults_get_bubble_shadow_size (d), d); # Begin bundle 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