[Xfce4-commits] [apps/xfce4-notifyd] 01/04: Add a slide-out animation to fadeout
noreply at xfce.org
noreply at xfce.org
Thu Sep 7 00:40:49 CEST 2017
This is an automated email from the git hooks/post-receive script.
o c h o s i p u s h e d a c o m m i t t o b r a n c h m a s t e r
in repository apps/xfce4-notifyd.
commit 87ed54c043e07ee5487b16abe3f7f932f75c62d5
Author: Simon Steinbeiss <simon.steinbeiss at elfenbeinturm.at>
Date: Wed Sep 6 00:21:47 2017 +0200
Add a slide-out animation to fadeout
---
xfce4-notifyd/xfce-notify-daemon.c | 1 +
xfce4-notifyd/xfce-notify-window.c | 29 ++++++++++++++++++++++++++++-
xfce4-notifyd/xfce-notify-window.h | 2 ++
3 files changed, 31 insertions(+), 1 deletion(-)
diff --git a/xfce4-notifyd/xfce-notify-daemon.c b/xfce4-notifyd/xfce-notify-daemon.c
index 6c6cfa2..87d5bff 100644
--- a/xfce4-notifyd/xfce-notify-daemon.c
+++ b/xfce4-notifyd/xfce-notify-daemon.c
@@ -1306,6 +1306,7 @@ notify_notify (XfceNotifyGBus *skeleton,
xfce_notify_window_set_icon_only(window, x_canonical);
xfce_notify_window_set_do_fadeout(window, xndaemon->do_fadeout);
+ xfce_notify_window_set_notify_location(window, xndaemon->notify_location);
if(value_hint_set)
xfce_notify_window_set_gauge_value(window, value_hint, xndaemon->css_provider);
diff --git a/xfce4-notifyd/xfce-notify-window.c b/xfce4-notifyd/xfce-notify-window.c
index e63b693..9cd0246 100644
--- a/xfce4-notifyd/xfce-notify-window.c
+++ b/xfce4-notifyd/xfce-notify-window.c
@@ -55,6 +55,7 @@ struct _XfceNotifyWindow
gboolean mouse_hover;
gdouble normal_opacity;
+ gint original_x, original_y;
guint32 icon_only:1,
has_summary_text:1,
@@ -75,6 +76,7 @@ struct _XfceNotifyWindow
guint op_change_steps;
gdouble op_change_delta;
gboolean do_fadeout;
+ GtkCornerType notify_location;
};
typedef struct
@@ -291,7 +293,6 @@ xfce_notify_window_start_expiration(XfceNotifyWindow *window)
xfce_notify_window_expire_timeout,
window);
}
-
gtk_widget_set_opacity(GTK_WIDGET(window), window->normal_opacity);
}
@@ -526,6 +527,8 @@ xfce_notify_window_enter_leave(GtkWidget *widget,
if(window->fade_id) {
g_source_remove(window->fade_id);
window->fade_id = 0;
+ /* reset the sliding-out window to its original position */
+ gtk_window_move (GTK_WINDOW (window), window->original_x, window->original_y);
}
}
gtk_widget_set_opacity(GTK_WIDGET(widget), 1.0);
@@ -582,6 +585,8 @@ xfce_notify_window_expire_timeout(gpointer data)
gdk_screen_is_composited(gtk_window_get_screen(GTK_WINDOW(window)));
if(fade_transparent && window->do_fadeout) {
+ /* remember the original position of the window before we slide it out */
+ gtk_window_get_position (GTK_WINDOW (window), &window->original_x, &window->original_y);
window->fade_id = g_timeout_add(FADE_CHANGE_TIMEOUT,
xfce_notify_window_fade_timeout,
window);
@@ -599,9 +604,23 @@ xfce_notify_window_fade_timeout(gpointer data)
{
XfceNotifyWindow *window = data;
gdouble op;
+ gint x, y;
g_return_val_if_fail(XFCE_IS_NOTIFY_WINDOW(data), FALSE);
+ /* slide out animation */
+ gtk_window_get_position (GTK_WINDOW (window), &x, &y);
+ if (window->notify_location == GTK_CORNER_TOP_RIGHT ||
+ window->notify_location == GTK_CORNER_BOTTOM_RIGHT)
+ x = x + 10;
+ else if (window->notify_location == GTK_CORNER_TOP_LEFT ||
+ window->notify_location == GTK_CORNER_BOTTOM_LEFT)
+ x = x - 10;
+ else
+ g_warning("Invalid notify location: %d", window->notify_location);
+ gtk_window_move (GTK_WINDOW (window), x, y);
+
+ /* fade-out animation */
op = gtk_widget_get_opacity(GTK_WIDGET(window));
op -= window->op_change_delta;
if(op < 0.0)
@@ -1128,6 +1147,14 @@ xfce_notify_window_set_do_fadeout(XfceNotifyWindow *window,
window->do_fadeout = do_fadeout;
}
+void xfce_notify_window_set_notify_location(XfceNotifyWindow *window,
+ GtkCornerType notify_location)
+{
+ g_return_if_fail(XFCE_IS_NOTIFY_WINDOW(window));
+
+ window->notify_location = notify_location;
+}
+
void
xfce_notify_window_closed(XfceNotifyWindow *window,
XfceNotifyCloseReason reason)
diff --git a/xfce4-notifyd/xfce-notify-window.h b/xfce4-notifyd/xfce-notify-window.h
index 452baec..093717c 100644
--- a/xfce4-notifyd/xfce-notify-window.h
+++ b/xfce4-notifyd/xfce-notify-window.h
@@ -103,6 +103,8 @@ void xfce_notify_window_unset_gauge_value(XfceNotifyWindow *window);
void xfce_notify_window_set_do_fadeout(XfceNotifyWindow *window,
gboolean do_fadeout);
+void xfce_notify_window_set_notify_location(XfceNotifyWindow *window,
+ GtkCornerType notify_location);
/* signal trigger */
void xfce_notify_window_closed(XfceNotifyWindow *window,
XfceNotifyCloseReason reason);
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Xfce4-commits
mailing list