diff -Nur notification-daemon-0.2.1/configure.ac notification-daemon-0.2.1.new/configure.ac --- notification-daemon-0.2.1/configure.ac 2005-07-28 20:31:54.000000000 +0200 +++ notification-daemon-0.2.1.new/configure.ac 2005-09-19 15:02:12.000000000 +0200 @@ -55,7 +55,7 @@ AC_TYPE_SIZE_T AC_EXEEXT -pkg_modules="gtk+-2.0 >= 2.2.0, glib-2.0 >= 2.2.2, dbus-1 >= 0.20, dbus-glib-1 >= 0.20" +pkg_modules="gtk+-2.0 >= 2.2.0, glib-2.0 >= 2.2.2, dbus-1 >= 0.20, dbus-glib-1 >= 0.20 libwnck-1.0" PKG_CHECK_MODULES(PACKAGE, [$pkg_modules]) AC_SUBST(PACKAGE_CFLAGS) AC_SUBST(PACKAGE_LIBS) diff -Nur notification-daemon-0.2.1/src/PopupNotification.cc notification-daemon-0.2.1.new/src/PopupNotification.cc --- notification-daemon-0.2.1/src/PopupNotification.cc 2005-09-19 15:01:55.000000000 +0200 +++ notification-daemon-0.2.1.new/src/PopupNotification.cc 2005-09-19 15:04:51.000000000 +0200 @@ -23,6 +23,8 @@ #define GTK_DISABLE_DEPRECATED #include #include +#define WNCK_I_KNOW_THIS_IS_UNSTABLE +#include #ifndef _WIN32 # include @@ -665,6 +667,29 @@ void PopupNotification::show() { + // check if there is a window in fullscreen mode + GList *l = wnck_screen_get_windows(wnck_screen_get_default()); + for(;l != NULL;l=g_list_next(l)) + { + WnckWindow *win = (WnckWindow*)l->data; + if(wnck_window_is_fullscreen(win)) + { + // sanity check if the window is _really_ fullscreen to work + // around a bug in libwnck that doesn't get all unfullscreen + // events :/ + int sw = wnck_screen_get_width(wnck_screen_get_default()); + int sh = wnck_screen_get_height(wnck_screen_get_default()); + int x,y,w,h; + wnck_window_get_geometry (win, &x,&y,&w,&h); + if(sw == w && sh == h) + { + g_message("window %s is fullscreen, skiping notification\n", + wnck_window_get_name(win)); + return; + } + } + } + if (!window) generate(); // can throw gtk_widget_show(window); }