summaryrefslogtreecommitdiff
path: root/stickynotes/stickynotes_applet_callbacks.c
diff options
context:
space:
mode:
Diffstat (limited to 'stickynotes/stickynotes_applet_callbacks.c')
-rw-r--r--stickynotes/stickynotes_applet_callbacks.c130
1 files changed, 78 insertions, 52 deletions
diff --git a/stickynotes/stickynotes_applet_callbacks.c b/stickynotes/stickynotes_applet_callbacks.c
index e643dcb7..80024e4a 100644
--- a/stickynotes/stickynotes_applet_callbacks.c
+++ b/stickynotes/stickynotes_applet_callbacks.c
@@ -25,34 +25,6 @@
#include <X11/Xatom.h>
#include <gdk/gdkx.h>
-static gboolean get_desktop_window (Window *window)
-{
- Window *desktop_window;
- GdkWindow *root_window;
- GdkAtom type_returned;
- int format_returned;
- int length_returned;
-
- root_window = gdk_screen_get_root_window (gdk_screen_get_default ());
-
- if (gdk_property_get (root_window,
- gdk_atom_intern ("CAJA_DESKTOP_WINDOW_ID", FALSE),
- gdk_x11_xatom_to_atom (XA_WINDOW),
- 0, 4, FALSE,
- &type_returned,
- &format_returned,
- &length_returned,
- (guchar**) &desktop_window)) {
- *window = *desktop_window;
- g_free (desktop_window);
- return TRUE;
- }
- else {
- *window = 0;
- return FALSE;
- }
-}
-
static void
popup_add_note (StickyNotesApplet *applet,
GtkWidget *item)
@@ -67,6 +39,10 @@ stickynote_show_notes (gboolean visible)
GList *l;
if (stickynotes->visible == visible) return;
+
+ if (g_settings_get_boolean (stickynotes->settings, "click-hide") && !visible)
+ return;
+
stickynotes->visible = visible;
for (l = stickynotes->notes; l; l = l->next) {
@@ -141,6 +117,35 @@ applet_focus_cb (GtkWidget *widget,
return FALSE;
}
+#ifdef GDK_WINDOWING_X11
+static gboolean get_desktop_window (GdkScreen *screen, Window *window)
+{
+ Window *desktop_window;
+ GdkWindow *root_window;
+ GdkAtom type_returned;
+ int format_returned;
+ int length_returned;
+
+ root_window = gdk_screen_get_root_window (screen);
+
+ if (gdk_property_get (root_window,
+ gdk_atom_intern ("CAJA_DESKTOP_WINDOW_ID", FALSE),
+ gdk_x11_xatom_to_atom (XA_WINDOW),
+ 0, 4, FALSE,
+ &type_returned,
+ &format_returned,
+ &length_returned,
+ (guchar**) &desktop_window)) {
+ *window = *desktop_window;
+ g_free (desktop_window);
+ return TRUE;
+ }
+ else {
+ *window = 0;
+ return FALSE;
+ }
+}
+
static GdkFilterReturn
desktop_window_event_filter (GdkXEvent *xevent,
GdkEvent *event,
@@ -155,22 +160,37 @@ desktop_window_event_filter (GdkXEvent *xevent,
}
return GDK_FILTER_CONTINUE;
}
+#endif /* GDK_WINDOWING_X11 */
-void install_check_click_on_desktop (void)
+void install_check_click_on_desktop (GdkScreen *screen)
{
+#ifdef GDK_WINDOWING_X11
Window desktop_window;
GdkWindow *window;
Atom user_time_window;
Atom user_time;
+ GdkDisplay *display;
+
+ display = gdk_screen_get_display (screen);
+ /* All this uses X11-only APIs and features */
+ if (!GDK_IS_X11_DISPLAY (display))
+ return;
- if (!get_desktop_window (&desktop_window)) {
+ if (!get_desktop_window (screen, &desktop_window)) {
return;
}
/* Access the desktop window. desktop_window is the root window for the
- * default screen, so we know using gdk_display_get_default () is correct. */
- window = gdk_x11_window_foreign_new_for_display (gdk_display_get_default (),
- desktop_window);
+ * default screen, so we know using gdk_display_get_default () is correct.
+ * This code should not be reached if running in wayland
+ */
+ window = gdk_x11_window_foreign_new_for_display (display, desktop_window);
+
+ /* Avoid crash if the desktop window ID is set but invalid, e.g. if
+ * Caja has set it but quit since then */
+ if (!window) {
+ return;
+ }
/* It may contain an atom to tell us which other window to monitor */
user_time_window = gdk_x11_get_xatom_by_name ("_NET_WM_USER_TIME_WINDOW");
@@ -207,6 +227,7 @@ void install_check_click_on_desktop (void)
gdk_window_set_events (window, GDK_PROPERTY_CHANGE_MASK);
gdk_window_add_filter (window, desktop_window_event_filter, NULL);
+#endif
}
/* Applet Callback : Change the panel orientation. */
@@ -383,8 +404,7 @@ menu_help_cb (GtkAction *action,
_("There was an error displaying help: %s"),
error->message);
- g_signal_connect (dialog,
- "response",
+ g_signal_connect (dialog, "response",
G_CALLBACK (gtk_widget_destroy),
NULL);
@@ -425,7 +445,7 @@ menu_about_cb (GtkAction *action,
"version", VERSION,
"copyright", _("Copyright \xc2\xa9 2002-2003 Loban A Rahman\n"
"Copyright \xc2\xa9 2005 Davyd Madeley\n"
- "Copyright \xc2\xa9 2012-2020 MATE developers"),
+ "Copyright \xc2\xa9 2012-2021 MATE developers"),
"comments", _("Sticky Notes for the "
"MATE Desktop Environment"),
"authors", authors,
@@ -439,18 +459,26 @@ menu_about_cb (GtkAction *action,
void
preferences_save_cb (gpointer data)
{
- gint width = gtk_adjustment_get_value (stickynotes->w_prefs_width);
- gint height = gtk_adjustment_get_value (stickynotes->w_prefs_height);
- gboolean sys_color =
- gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (stickynotes->w_prefs_sys_color));
- gboolean sys_font =
- gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (stickynotes->w_prefs_sys_font));
- gboolean sticky =
- gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (stickynotes->w_prefs_sticky));
- gboolean force_default =
- gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (stickynotes->w_prefs_force));
- gboolean desktop_hide =
- gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (stickynotes->w_prefs_desktop));
+ gint width;
+ gint height;
+ gboolean sys_color;
+ gboolean sys_font;
+ gboolean sticky;
+ gboolean force_default;
+ gboolean desktop_hide;
+ gdouble adjustment_value;
+
+ adjustment_value = gtk_adjustment_get_value (stickynotes->w_prefs_width);
+ width = (gint) adjustment_value;
+
+ adjustment_value = gtk_adjustment_get_value (stickynotes->w_prefs_height);
+ height = (gint) adjustment_value;
+
+ sys_color = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (stickynotes->w_prefs_sys_color));
+ sys_font = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (stickynotes->w_prefs_sys_font));
+ sticky = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (stickynotes->w_prefs_sticky));
+ force_default = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (stickynotes->w_prefs_force));
+ desktop_hide = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (stickynotes->w_prefs_desktop));
if (g_settings_is_writable (stickynotes->settings,
"default-width"))
@@ -612,12 +640,10 @@ preferences_response_cb (GtkWidget *dialog,
_("There was an error displaying help: %s"),
error->message);
- g_signal_connect (G_OBJECT (dialog),
- "response",
+ g_signal_connect (dialog, "response",
G_CALLBACK (gtk_widget_destroy),
NULL);
- gtk_window_set_resizable (GTK_WINDOW (dialog),
- FALSE);
+ gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);
gtk_window_set_screen (GTK_WINDOW (dialog),
gtk_widget_get_screen (GTK_WIDGET (dialog)));
gtk_widget_show (dialog);