[Xfce4-commits] <xfce4-notifyd:master> relayout the notification window and move close circle to top right
Brian J. Tarricone
noreply at xfce.org
Sat Oct 31 11:12:01 CET 2009
Updating branch refs/heads/master
to 29954e68952a0a5550f467e88480453afa6bbbfe (commit)
from b538e7e9d773d49b48b4ceff52909ac0e21a2915 (commit)
commit 29954e68952a0a5550f467e88480453afa6bbbfe
Author: Brian J. Tarricone <brian at tarricone.org>
Date: Sat Oct 31 02:03:09 2009 -0700
relayout the notification window and move close circle to top right
xfce4-notifyd/xfce-notify-window.c | 66 ++++++++++++++++++------------------
1 files changed, 33 insertions(+), 33 deletions(-)
diff --git a/xfce4-notifyd/xfce-notify-window.c b/xfce4-notifyd/xfce-notify-window.c
index 638193f..7db67d4 100644
--- a/xfce4-notifyd/xfce-notify-window.c
+++ b/xfce4-notifyd/xfce-notify-window.c
@@ -42,7 +42,7 @@
#define FADE_CHANGE_TIMEOUT 50
#define DEFAULT_RADIUS 10.0
#define DEFAULT_BORDER_WIDTH 2.0
-#define BORDER 8
+#define BORDER 6
struct _XfceNotifyWindow
{
@@ -58,6 +58,7 @@ struct _XfceNotifyWindow
gboolean fade_transparent;
gdouble normal_opacity;
+ GtkWidget *icon_box;
GtkWidget *icon;
GtkWidget *summary;
GtkWidget *body;
@@ -191,7 +192,8 @@ static void
xfce_notify_window_init(XfceNotifyWindow *window)
{
GdkScreen *screen;
- GtkWidget *topvbox, *vbox, *hbox, *spacer;
+ GtkWidget *tophbox, *align, *vbox;
+ gdouble border_radius = DEFAULT_RADIUS;
GTK_WINDOW(window)->type = GTK_WINDOW_TOPLEVEL;
window->expire_timeout = DEFAULT_EXPIRE_TIMEOUT;
@@ -207,12 +209,12 @@ xfce_notify_window_init(XfceNotifyWindow *window)
gtk_window_set_resizable(GTK_WINDOW(window), FALSE);
gtk_window_set_type_hint(GTK_WINDOW(window),
GDK_WINDOW_TYPE_HINT_NOTIFICATION);
- gtk_container_set_border_width(GTK_CONTAINER(window), BORDER);
+ gtk_container_set_border_width(GTK_CONTAINER(window), 0);
gtk_widget_set_app_paintable(GTK_WIDGET(window), TRUE);
gtk_widget_add_events(GTK_WIDGET(window),
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
| GDK_POINTER_MOTION_MASK);
-
+
screen = gtk_widget_get_screen(GTK_WIDGET(window));
if(gdk_screen_is_composited(screen)) {
GdkColormap *cmap = gdk_screen_get_rgba_colormap(screen);
@@ -220,34 +222,32 @@ xfce_notify_window_init(XfceNotifyWindow *window)
gtk_widget_set_colormap(GTK_WIDGET(window), cmap);
}
- topvbox = gtk_vbox_new(FALSE, BORDER);
- gtk_widget_show(topvbox);
- gtk_container_add(GTK_CONTAINER(window), topvbox);
-
- spacer = gtk_alignment_new(0.0, 0.0, 0.0, 0.0);
- gtk_widget_set_size_request(spacer, -1, 20 - BORDER * 2);
- gtk_widget_show(spacer);
- gtk_box_pack_start(GTK_BOX(topvbox), spacer, FALSE, FALSE, 0);
+ gtk_widget_ensure_style(GTK_WIDGET(window));
+ gtk_widget_style_get(GTK_WIDGET(window),
+ "border-radius", &border_radius,
+ NULL);
- hbox = gtk_hbox_new(FALSE, BORDER);
- gtk_widget_show(hbox);
- gtk_box_pack_start(GTK_BOX(topvbox), hbox, TRUE, TRUE, 0);
+ tophbox = gtk_hbox_new(FALSE, BORDER);
+ gtk_container_set_border_width(GTK_CONTAINER(tophbox), border_radius + 4);
+ gtk_widget_show(tophbox);
+ gtk_container_add(GTK_CONTAINER(window), tophbox);
- spacer = gtk_alignment_new(0.0, 0.0, 0.0, 0.0);
- gtk_widget_set_size_request(spacer, 20 - BORDER * 2, -1);
- gtk_widget_show(spacer);
- gtk_box_pack_start(GTK_BOX(hbox), spacer, FALSE, FALSE, 0);
+ window->icon_box = align = gtk_alignment_new(0.0, 0.0, 0.0, 0.0);
+ gtk_container_set_border_width(GTK_CONTAINER(align), 0);
+ gtk_box_pack_start(GTK_BOX(tophbox), align, FALSE, TRUE, 0);
window->icon = gtk_image_new();
- gtk_box_pack_start(GTK_BOX(hbox), window->icon, FALSE, FALSE, 0);
+ gtk_widget_show(window->icon);
+ gtk_container_add(GTK_CONTAINER(align), window->icon);
vbox = gtk_vbox_new(FALSE, BORDER);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox), 0);
gtk_widget_show(vbox);
- gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 0);
+ gtk_box_pack_start(GTK_BOX(tophbox), vbox, TRUE, TRUE, 0);
window->summary = gtk_label_new(NULL);
gtk_label_set_line_wrap(GTK_LABEL(window->summary), TRUE);
- gtk_misc_set_alignment(GTK_MISC(window->summary), 0.0, 0.5);
+ gtk_misc_set_alignment(GTK_MISC(window->summary), 0.0, 0.0);
gtk_box_pack_start(GTK_BOX(vbox), window->summary, FALSE, FALSE, 0);
#ifdef HAVE_LIBSEXY
@@ -256,7 +256,7 @@ xfce_notify_window_init(XfceNotifyWindow *window)
window->body = gtk_label_new(NULL);
#endif
gtk_label_set_line_wrap(GTK_LABEL(window->body), TRUE);
- gtk_misc_set_alignment(GTK_MISC(window->body), 0.0, 0.5);
+ gtk_misc_set_alignment(GTK_MISC(window->body), 0.0, 0.0);
gtk_box_pack_start(GTK_BOX(vbox), window->body, TRUE, TRUE, 0);
#ifdef HAVE_LIBSEXY
g_signal_connect(G_OBJECT(window->body), "url-activated",
@@ -268,7 +268,7 @@ xfce_notify_window_init(XfceNotifyWindow *window)
GTK_BUTTONBOX_END);
gtk_box_set_spacing(GTK_BOX(window->button_box), BORDER / 2);
gtk_box_set_homogeneous(GTK_BOX(window->button_box), FALSE);
- gtk_box_pack_start(GTK_BOX(topvbox), window->button_box, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(vbox), window->button_box, FALSE, FALSE, 0);
}
static void
@@ -527,7 +527,7 @@ xfce_notify_window_expose(GtkWidget *widget,
cairo_path_t *flat_path;
GdkFillRule fill_rule;
- cairo_arc(cr, 12., 12., 7.5, 0., 2*M_PI);
+ cairo_arc(cr, widget->allocation.width - 12., 12., 7.5, 0., 2*M_PI);
window->close_btn_path = cairo_copy_path(cr);
flat_path = cairo_copy_path_flat(cr);
@@ -541,11 +541,11 @@ xfce_notify_window_expose(GtkWidget *widget,
cairo_set_line_width(cr, 1.5);
cairo_stroke(cr);
- cairo_move_to(cr, 8., 8.);
- cairo_line_to(cr, 16., 16.);
+ cairo_move_to(cr, widget->allocation.width - 8., 8.);
+ cairo_line_to(cr, widget->allocation.width - 16., 16.);
cairo_stroke(cr);
- cairo_move_to(cr, 16., 8.);
- cairo_line_to(cr, 8., 16.);
+ cairo_move_to(cr, widget->allocation.width - 16., 8.);
+ cairo_line_to(cr, widget->allocation.width - 8., 16.);
cairo_stroke(cr);
}
@@ -1032,7 +1032,7 @@ xfce_notify_window_set_icon_name(XfceNotifyWindow *window,
pix = xfce_themed_icon_load(icon_name, w);
if(pix) {
gtk_image_set_from_pixbuf(GTK_IMAGE(window->icon), pix);
- gtk_widget_show(window->icon);
+ gtk_widget_show(window->icon_box);
g_object_unref(G_OBJECT(pix));
icon_set = TRUE;
}
@@ -1040,7 +1040,7 @@ xfce_notify_window_set_icon_name(XfceNotifyWindow *window,
if(!icon_set) {
gtk_image_set_from_pixbuf(GTK_IMAGE(window->icon), NULL);
- gtk_widget_hide(window->icon);
+ gtk_widget_hide(window->icon_box);
}
if(window->bg_path) {
@@ -1087,9 +1087,9 @@ xfce_notify_window_set_icon_pixbuf(XfceNotifyWindow *window,
gtk_image_set_from_pixbuf(GTK_IMAGE(window->icon), pixbuf);
if(pixbuf)
- gtk_widget_show(window->icon);
+ gtk_widget_show(window->icon_box);
else
- gtk_widget_hide(window->icon);
+ gtk_widget_hide(window->icon_box);
if(window->bg_path) {
cairo_path_destroy(window->bg_path);
More information about the Xfce4-commits
mailing list