summaryrefslogtreecommitdiff
blob: cdb2585c400120c2470671e34bd99b02638a9c98 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
From Fedora Core 6:

https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=205909 - stickynotes applet wakes up every 100ms
http://cvs.fedora.redhat.com/viewcvs/*checkout*/rpms/gnome-applets/devel/gnome-applets-2.16.0.1-desktop-clicks.patch?rev=1.1

--- gnome-applets-2.16.0.1/stickynotes/stickynotes_applet_callbacks.h.desktop-clicks	2006-09-10 00:38:29.000000000 -0400
+++ gnome-applets-2.16.0.1/stickynotes/stickynotes_applet_callbacks.h	2006-09-10 00:36:34.000000000 -0400
@@ -29,6 +29,7 @@
 gboolean applet_focus_cb(GtkWidget *widget, GdkEventFocus *event, StickyNotesApplet *applet);
 gboolean applet_save_cb(StickyNotesApplet *applet);
 gboolean applet_check_click_on_desktop_cb (gpointer data);
+void install_check_click_on_desktop (void);
 void applet_change_orient_cb(PanelApplet *panel_applet, PanelAppletOrient orient, StickyNotesApplet *applet);
 void applet_size_allocate_cb(GtkWidget *widget, GtkAllocation *allocation, StickyNotesApplet *applet);
 void applet_change_bg_cb (PanelApplet *panel_applet,
@@ -37,7 +38,6 @@
                      		 GdkPixmap *pixmap,
                      		 StickyNotesApplet *applet);
 void applet_destroy_cb (PanelApplet *panel_applet, StickyNotesApplet *applet);
-
 /* Callbacks for sticky notes applet menu */
 void menu_create_cb(BonoboUIComponent *uic, StickyNotesApplet *applet, const gchar *verbname);
 void menu_new_note_cb(BonoboUIComponent *uic, StickyNotesApplet *applet, const gchar *verbname);
--- gnome-applets-2.16.0.1/stickynotes/stickynotes_applet.c.desktop-clicks	2006-09-10 00:38:52.000000000 -0400
+++ gnome-applets-2.16.0.1/stickynotes/stickynotes_applet.c	2006-09-10 00:36:47.000000000 -0400
@@ -186,7 +186,7 @@
 	}
 	g_timeout_add (1000 * 60 * timeout,
 		      (GSourceFunc) applet_save_cb, NULL);
-	g_timeout_add (100, applet_check_click_on_desktop_cb, NULL);
+	install_check_click_on_desktop ();
 }
 
 /* Initialize Sticky Notes Icons */
--- gnome-applets-2.16.0.1/stickynotes/stickynotes_applet_callbacks.c.desktop-clicks	2006-09-10 00:38:42.000000000 -0400
+++ gnome-applets-2.16.0.1/stickynotes/stickynotes_applet_callbacks.c	2006-09-10 00:36:34.000000000 -0400
@@ -178,6 +178,31 @@
 	return TRUE;
 }
 
+static GdkFilterReturn desktop_window_event_filter (GdkXEvent *xevent,
+						    GdkEvent  *event,
+						    gpointer   data)
+{ 
+	if ((((XEvent*)xevent)->xany.type == PropertyNotify) &&
+	    (((XEvent*)xevent)->xproperty.atom == gdk_x11_get_xatom_by_name ("_NET_WM_USER_TIME"))) { 
+		stickynote_show_notes (FALSE);
+	} 
+}
+
+void install_check_click_on_desktop (void)
+{
+	Window desktop_window;
+	GdkWindow *window;
+
+	if (!get_desktop_window (&desktop_window)) {
+		return;
+	}
+
+	window = gdk_window_foreign_new (desktop_window);
+	gdk_window_set_events (window, GDK_PROPERTY_CHANGE_MASK);
+
+	gdk_window_add_filter (window, desktop_window_event_filter, NULL);
+}
+
 /* Applet Callback : Change the panel orientation. */
 void applet_change_orient_cb(PanelApplet *panel_applet, PanelAppletOrient orient, StickyNotesApplet *applet)
 {