[gnome-applets] sticky-notes: remove global sticky notes instance
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-applets] sticky-notes: remove global sticky notes instance
- Date: Tue, 7 Apr 2020 00:52:46 +0000 (UTC)
commit 96212dd06e22ef3e02d764fbc97cb677ae9bffa3
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date: Tue Apr 7 03:31:07 2020 +0300
sticky-notes: remove global sticky notes instance
gnome-applets/sticky-notes/sticky-notes-applet.c | 193 +++++++++++------------
gnome-applets/sticky-notes/sticky-notes-applet.h | 39 +++--
gnome-applets/sticky-notes/sticky-notes.c | 138 +++++++++-------
gnome-applets/sticky-notes/sticky-notes.h | 15 +-
4 files changed, 197 insertions(+), 188 deletions(-)
---
diff --git a/gnome-applets/sticky-notes/sticky-notes-applet.c
b/gnome-applets/sticky-notes/sticky-notes-applet.c
index 98d7e9dd5..f98826255 100644
--- a/gnome-applets/sticky-notes/sticky-notes-applet.c
+++ b/gnome-applets/sticky-notes/sticky-notes-applet.c
@@ -30,27 +30,21 @@
G_DEFINE_TYPE (StickyNotesApplet, sticky_notes_applet, GP_TYPE_APPLET)
-StickyNotes *stickynotes = NULL;
-
-static void sticky_notes_init (GpApplet *applet);
+static void sticky_notes_init (StickyNotesApplet *self);
static void sticky_notes_applet_new (StickyNotesApplet *self);
static void
-popup_add_note (StickyNotesApplet *applet)
-{
- stickynotes_add (gtk_widget_get_screen (GTK_WIDGET (applet)));
-}
-
-static void
-stickynote_show_notes (gboolean visible)
+stickynote_show_notes (StickyNotesApplet *self,
+ gboolean visible)
{
StickyNote *note;
GList *l;
- if (stickynotes->visible == visible) return;
- stickynotes->visible = visible;
+ if (self->visible == visible)
+ return;
+ self->visible = visible;
- for (l = stickynotes->notes; l; l = l->next)
+ for (l = self->notes; l; l = l->next)
{
note = l->data;
stickynote_set_visible (note, visible);
@@ -58,9 +52,9 @@ stickynote_show_notes (gboolean visible)
}
static void
-stickynote_toggle_notes_visible (void)
+stickynote_toggle_notes_visible (StickyNotesApplet *self)
{
- stickynote_show_notes(!stickynotes->visible);
+ stickynote_show_notes (self, !self->visible);
}
static void
@@ -68,8 +62,11 @@ menu_new_note_cb (GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
{
- StickyNotesApplet *applet = (StickyNotesApplet *) user_data;
- popup_add_note (applet);
+ StickyNotesApplet *self;
+
+ self = STICKY_NOTES_APPLET (user_data);
+
+ stickynotes_add (self);
}
static void
@@ -77,7 +74,11 @@ menu_hide_notes_cb (GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
{
- stickynote_show_notes (FALSE);
+ StickyNotesApplet *self;
+
+ self = STICKY_NOTES_APPLET (user_data);
+
+ stickynote_show_notes (self, FALSE);
}
static void
@@ -95,10 +96,14 @@ menu_toggle_lock_state (GSimpleAction *action,
GVariant *value,
gpointer user_data)
{
- gboolean locked = g_variant_get_boolean (value);
+ StickyNotesApplet *self;
+ gboolean locked;
- if (g_settings_is_writable (stickynotes->settings, KEY_LOCKED))
- g_settings_set_boolean (stickynotes->settings, KEY_LOCKED, locked);
+ self = STICKY_NOTES_APPLET (user_data);
+ locked = g_variant_get_boolean (value);
+
+ if (g_settings_is_writable (self->settings, KEY_LOCKED))
+ g_settings_set_boolean (self->settings, KEY_LOCKED, locked);
}
static void
@@ -107,15 +112,15 @@ destroy_all_response_cb (GtkDialog *dialog,
StickyNotesApplet *applet)
{
if (id == GTK_RESPONSE_OK) {
- while (g_list_length(stickynotes->notes) > 0) {
- StickyNote *note = g_list_nth_data(stickynotes->notes, 0);
+ while (g_list_length (applet->notes) > 0) {
+ StickyNote *note = g_list_nth_data (applet->notes, 0);
stickynote_free(note);
- stickynotes->notes = g_list_remove(stickynotes->notes, note);
+ applet->notes = g_list_remove (applet->notes, note);
}
}
- stickynotes_applet_update_tooltips();
- stickynotes_save();
+ stickynotes_applet_update_tooltips (applet);
+ stickynotes_save (applet);
gtk_widget_destroy (GTK_WIDGET (dialog));
applet->destroy_all_dialog = NULL;
@@ -182,7 +187,7 @@ menu_preferences_cb (GSimpleAction *action,
return;
}
- self->w_prefs = sticky_notes_preferences_new (stickynotes->settings);
+ self->w_prefs = sticky_notes_preferences_new (self->settings);
g_object_add_weak_pointer (G_OBJECT (self->w_prefs),
(gpointer *) &self->w_prefs);
@@ -224,16 +229,14 @@ static const GActionEntry stickynotes_applet_menu_actions [] = {
static void
sticky_notes_applet_setup (StickyNotesApplet *self)
{
- if (stickynotes == NULL)
- sticky_notes_init (GP_APPLET (self));
+ sticky_notes_init (self);
sticky_notes_applet_new (self);
- /* Add applet to linked list of all applets */
- stickynotes->applets = g_list_append (stickynotes->applets, self);
+ stickynotes_load (self);
- stickynotes_applet_update_menus ();
- stickynotes_applet_update_tooltips ();
+ stickynotes_applet_update_menus (self);
+ stickynotes_applet_update_tooltips (self);
}
static void
@@ -316,9 +319,9 @@ stickynotes_make_prelight_icon (GdkPixbuf *dest, GdkPixbuf *src, int shift)
}
static void
-preferences_apply_cb (GSettings *settings,
- const gchar *key,
- gpointer user_data)
+preferences_apply_cb (GSettings *settings,
+ const gchar *key,
+ StickyNotesApplet *self)
{
GList *l;
StickyNote *note;
@@ -326,13 +329,13 @@ preferences_apply_cb (GSettings *settings,
if (!strcmp (key, KEY_STICKY))
{
if (g_settings_get_boolean (settings, key))
- for (l = stickynotes->notes; l; l = l->next)
+ for (l = self->notes; l; l = l->next)
{
note = l->data;
gtk_window_stick (GTK_WINDOW (note->w_window));
}
else
- for (l= stickynotes->notes; l; l = l->next)
+ for (l= self->notes; l; l = l->next)
{
note = l->data;
gtk_window_unstick (GTK_WINDOW (
@@ -342,19 +345,19 @@ preferences_apply_cb (GSettings *settings,
else if (!strcmp (key, KEY_LOCKED))
{
- for (l = stickynotes->notes; l; l = l->next)
+ for (l = self->notes; l; l = l->next)
{
note = l->data;
stickynote_set_locked (note, g_settings_get_boolean (settings, key));
}
- stickynotes_save();
+ stickynotes_save (self);
}
else if (!strcmp (key, KEY_USE_SYSTEM_COLOR) ||
!strcmp (key, KEY_DEFAULT_FONT_COLOR) ||
!strcmp (key, KEY_DEFAULT_COLOR))
{
- for (l = stickynotes->notes; l; l = l->next)
+ for (l = self->notes; l; l = l->next)
{
note = l->data;
stickynote_set_color (note,
@@ -366,7 +369,7 @@ preferences_apply_cb (GSettings *settings,
else if (!strcmp (key, KEY_USE_SYSTEM_FONT) ||
!strcmp (key, KEY_DEFAULT_FONT))
{
- for (l = stickynotes->notes; l; l = l->next)
+ for (l = self->notes; l; l = l->next)
{
note = l->data;
stickynote_set_font (note, note->font, FALSE);
@@ -375,7 +378,7 @@ preferences_apply_cb (GSettings *settings,
else if (!strcmp (key, KEY_FORCE_DEFAULT))
{
- for (l = stickynotes->notes; l; l = l->next)
+ for (l = self->notes; l; l = l->next)
{
note = l->data;
stickynote_set_color(note,
@@ -385,7 +388,7 @@ preferences_apply_cb (GSettings *settings,
}
}
- stickynotes_applet_update_menus();
+ stickynotes_applet_update_menus (self);
}
static gboolean
@@ -423,17 +426,18 @@ desktop_window_event_filter (GdkXEvent *xevent,
GdkEvent *event,
gpointer data)
{
- gboolean desktop_hide = g_settings_get_boolean (stickynotes->settings, KEY_DESKTOP_HIDE);
+ StickyNotesApplet *self = data;
+ gboolean desktop_hide = g_settings_get_boolean (self->settings, KEY_DESKTOP_HIDE);
if (desktop_hide &&
(((XEvent*)xevent)->xany.type == PropertyNotify) &&
(((XEvent*)xevent)->xproperty.atom == gdk_x11_get_xatom_by_name ("_NET_WM_USER_TIME"))) {
- stickynote_show_notes (FALSE);
+ stickynote_show_notes (self, FALSE);
}
return GDK_FILTER_CONTINUE;
}
static void
-install_check_click_on_desktop (void)
+install_check_click_on_desktop (StickyNotesApplet *self)
{
Window desktop_window;
GdkWindow *window;
@@ -482,32 +486,23 @@ 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);
+ gdk_window_add_filter (window, desktop_window_event_filter, self);
}
-/* Create and initalize global sticky notes instance */
static void
-sticky_notes_init (GpApplet *applet)
+sticky_notes_init (StickyNotesApplet *self)
{
- stickynotes = g_new(StickyNotes, 1);
-
- stickynotes->notes = NULL;
- stickynotes->applets = NULL;
- stickynotes->settings = gp_applet_settings_new (applet, STICKYNOTES_SCHEMA);
- stickynotes->last_timeout_data = 0;
-
- stickynotes->visible = TRUE;
+ self->settings = gp_applet_settings_new (GP_APPLET (self), STICKYNOTES_SCHEMA);
- g_signal_connect (stickynotes->settings, "changed",
- G_CALLBACK (preferences_apply_cb), NULL);
-
- /* Max height for large notes*/
- stickynotes->max_height = 0.8*gdk_screen_get_height( gdk_screen_get_default() );
+ g_signal_connect (self->settings,
+ "changed",
+ G_CALLBACK (preferences_apply_cb),
+ self);
- /* Load sticky notes */
- stickynotes_load (gtk_widget_get_screen (GTK_WIDGET (applet)));
+ self->max_height = 0.8 * gdk_screen_get_height (gdk_screen_get_default ());
+ self->visible = TRUE;
- install_check_click_on_desktop ();
+ install_check_click_on_desktop (self);
}
static gboolean
@@ -517,12 +512,12 @@ applet_button_cb (GtkWidget *widget,
{
if (event->type == GDK_2BUTTON_PRESS)
{
- popup_add_note (applet);
+ stickynotes_add (applet);
return TRUE;
}
else if (event->button == 1)
{
- stickynote_toggle_notes_visible ();
+ stickynote_toggle_notes_visible (applet);
return TRUE;
}
@@ -540,7 +535,7 @@ applet_key_cb (GtkWidget *widget,
case GDK_KEY_space:
case GDK_KEY_KP_Enter:
case GDK_KEY_Return:
- stickynote_show_notes (TRUE);
+ stickynote_show_notes (applet, TRUE);
return TRUE;
default:
@@ -604,21 +599,16 @@ applet_destroy_cb (GtkWidget *widget,
{
GList *notes;
- stickynotes_save_now ();
+ stickynotes_save_now (applet);
if (applet->destroy_all_dialog != NULL)
gtk_widget_destroy (applet->destroy_all_dialog);
- if (stickynotes->applets != NULL)
- stickynotes->applets = g_list_remove (stickynotes->applets, applet);
-
- if (stickynotes->applets == NULL) {
- notes = stickynotes->notes;
- while (notes) {
- StickyNote *note = notes->data;
- stickynote_free (note);
- notes = g_list_next (notes);
- }
+ notes = applet->notes;
+ while (notes) {
+ StickyNote *note = notes->data;
+ stickynote_free (note);
+ notes = g_list_next (notes);
}
}
@@ -692,6 +682,7 @@ sticky_notes_applet_new (StickyNotesApplet *applet)
atk_obj = gtk_widget_get_accessible (GTK_WIDGET (applet));
atk_object_set_name (atk_obj, _("Sticky Notes"));
+
/* Show the applet */
gtk_widget_show_all (GTK_WIDGET (applet));
}
@@ -726,54 +717,48 @@ void stickynotes_applet_update_icon(StickyNotesApplet *applet)
g_object_unref(pixbuf2);
}
-void stickynotes_applet_update_menus(void)
+void
+stickynotes_applet_update_menus (StickyNotesApplet *self)
{
- GList *l;
+ GAction *action;
+ gboolean locked_writable;
+ gboolean locked;
- gboolean locked = g_settings_get_boolean (stickynotes->settings, KEY_LOCKED);
- gboolean locked_writable = g_settings_is_writable (stickynotes->settings, KEY_LOCKED);
+ action = gp_applet_menu_lookup_action (GP_APPLET (self), "lock");
+ locked_writable = g_settings_is_writable (self->settings, KEY_LOCKED);
+ locked = g_settings_get_boolean (self->settings, KEY_LOCKED);
- for (l = stickynotes->applets; l != NULL; l = l->next) {
- StickyNotesApplet *applet = l->data;
-
- GAction *action = gp_applet_menu_lookup_action (GP_APPLET (applet), "lock");
- g_simple_action_set_enabled (G_SIMPLE_ACTION (action), locked_writable);
- g_simple_action_set_state (G_SIMPLE_ACTION (action), g_variant_new_boolean (locked));
- }
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action), locked_writable);
+ g_simple_action_set_state (G_SIMPLE_ACTION (action), g_variant_new_boolean (locked));
}
void
-stickynotes_applet_update_tooltips (void)
+stickynotes_applet_update_tooltips (StickyNotesApplet *self)
{
int num;
char *tooltip, *no_notes;
- StickyNotesApplet *applet;
- GList *l;
- num = g_list_length (stickynotes->notes);
+ num = g_list_length (self->notes);
no_notes = g_strdup_printf (ngettext ("%d note", "%d notes", num), num);
tooltip = g_strdup_printf ("%s\n%s", _("Show sticky notes"), no_notes);
- for (l = stickynotes->applets; l; l = l->next)
- {
- applet = l->data;
- gtk_widget_set_tooltip_text (GTK_WIDGET (applet), tooltip);
- }
+ gtk_widget_set_tooltip_text (GTK_WIDGET (self), tooltip);
g_free (tooltip);
g_free (no_notes);
}
void
-stickynotes_applet_panel_icon_get_geometry (int *x, int *y, int *width, int *height)
+stickynotes_applet_panel_icon_get_geometry (StickyNotesApplet *applet,
+ int *x,
+ int *y,
+ int *width,
+ int *height)
{
GtkWidget *widget;
GtkAllocation allocation;
GtkRequisition requisition;
- StickyNotesApplet *applet;
-
- applet = stickynotes->applets->data;
widget = GTK_WIDGET (applet->w_image);
diff --git a/gnome-applets/sticky-notes/sticky-notes-applet.h
b/gnome-applets/sticky-notes/sticky-notes-applet.h
index bbe9026d0..e53163a06 100644
--- a/gnome-applets/sticky-notes/sticky-notes-applet.h
+++ b/gnome-applets/sticky-notes/sticky-notes-applet.h
@@ -29,25 +29,12 @@
G_DECLARE_FINAL_TYPE (StickyNotesApplet, sticky_notes_applet,
STICKY_NOTES, APPLET, GpApplet)
-/* Global Sticky Notes instance */
-typedef struct
-{
- GList *notes; /* Linked-List of all the sticky notes */
- GList *applets; /* Linked-List of all the applets */
-
- GSettings *settings;
-
- gint max_height;
- guint last_timeout_data;
-
- gboolean visible; /* Toggle show/hide notes */
-} StickyNotes;
-
-/* Sticky Notes Applet */
struct _StickyNotesApplet
{
GpApplet parent;
+ GSettings *settings;
+
GtkWidget *w_image; /* The applet icon */
GdkPixbuf *icon_normal; /* Normal applet icon */
@@ -62,15 +49,25 @@ struct _StickyNotesApplet
GtkOrientation panel_orient;
GtkWidget *w_prefs;
-};
-extern StickyNotes *stickynotes;
+ gboolean save_scheduled;
+
+ GList *notes;
+
+ gint max_height;
+
+ gboolean visible;
+};
-void stickynotes_applet_update_icon(StickyNotesApplet *applet);
-void stickynotes_applet_update_menus(void);
-void stickynotes_applet_update_tooltips(void);
+void stickynotes_applet_update_icon (StickyNotesApplet *self);
+void stickynotes_applet_update_menus (StickyNotesApplet *self);
+void stickynotes_applet_update_tooltips (StickyNotesApplet *self);
-void stickynotes_applet_panel_icon_get_geometry (int *x, int *y, int *width, int *height);
+void stickynotes_applet_panel_icon_get_geometry (StickyNotesApplet *self,
+ int *x,
+ int *y,
+ int *width,
+ int *height);
void stickynotes_applet_setup_about (GtkAboutDialog *dialog);
diff --git a/gnome-applets/sticky-notes/sticky-notes.c b/gnome-applets/sticky-notes/sticky-notes.c
index 5abbef053..7fde2abe9 100644
--- a/gnome-applets/sticky-notes/sticky-notes.c
+++ b/gnome-applets/sticky-notes/sticky-notes.c
@@ -35,8 +35,6 @@
#define STICKYNOTES_ICON_SIZE 8
-static gboolean save_scheduled = FALSE;
-
static void response_cb (GtkWidget *dialog, gint id, gpointer data);
static void
@@ -45,7 +43,7 @@ popup_create_cb (GSimpleAction *action,
gpointer user_data)
{
StickyNote *note = (StickyNote *) user_data;
- stickynotes_add (gtk_widget_get_screen (note->w_window));
+ stickynotes_add (note->applet);
}
static void
@@ -251,7 +249,7 @@ stickynote_configure_cb (GtkWidget *widget,
note->w = event->width;
note->h = event->height;
- stickynotes_save();
+ stickynotes_save (note->applet);
return FALSE;
}
@@ -332,41 +330,57 @@ properties_activate_cb (GtkWidget *widget,
gtk_dialog_response (GTK_DIALOG (note->w_properties), GTK_RESPONSE_CLOSE);
}
-/* Called when a timeout occurs. */
static gboolean
-timeout_happened (gpointer data)
+timeout_cb (gpointer user_data)
{
- if (GPOINTER_TO_UINT (data) == stickynotes->last_timeout_data)
- stickynotes_save ();
- return FALSE;
+ StickyNote *note;
+
+ note = user_data;
+ note->buffer_changed_id = 0;
+
+ stickynotes_save (note->applet);
+
+ return G_SOURCE_REMOVE;
}
/* Called when a text buffer is changed. */
static void
buffer_changed (GtkTextBuffer *buffer, StickyNote *note)
{
- if ( (note->h + note->y) > stickynotes->max_height )
- gtk_scrolled_window_set_policy ( GTK_SCROLLED_WINDOW(note->w_scroller),
-
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+ if ((note->h + note->y) > note->applet->max_height)
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (note->w_scroller),
+ GTK_POLICY_NEVER,
+ GTK_POLICY_AUTOMATIC);
/* When a buffer is changed, we set a 10 second timer. When
the timer triggers, we will save the buffer if there have
been no subsequent changes. */
- ++stickynotes->last_timeout_data;
- g_timeout_add_seconds (10, (GSourceFunc) timeout_happened,
- GUINT_TO_POINTER (stickynotes->last_timeout_data));
+ if (note->buffer_changed_id != 0)
+ g_source_remove (note->buffer_changed_id);
+
+ note->buffer_changed_id = g_timeout_add_seconds (10, timeout_cb, note);
}
/* Create a new (empty) Sticky Note at a specific position
and with specific size */
static StickyNote *
-stickynote_new_aux (GdkScreen *screen, gint x, gint y, gint w, gint h)
+stickynote_new_aux (StickyNotesApplet *applet,
+ gint x,
+ gint y,
+ gint w,
+ gint h)
{
+ GdkScreen *screen;
StickyNote *note;
GtkBuilder *builder;
static guint id = 0;
+ screen = gtk_widget_get_screen (GTK_WIDGET (applet));
+
note = g_new (StickyNote, 1);
+ note->applet = applet;
+
+ note->buffer_changed_id = 0;
builder = gtk_builder_new ();
gtk_builder_add_from_resource (builder,
@@ -440,13 +454,13 @@ stickynote_new_aux (GdkScreen *screen, gint x, gint y, gint w, gint h)
note->h = h;
/* Customize the window */
- if (g_settings_get_boolean (stickynotes->settings, KEY_STICKY))
+ if (g_settings_get_boolean (applet->settings, KEY_STICKY))
gtk_window_stick(GTK_WINDOW(note->w_window));
if (w == 0 || h == 0)
gtk_window_resize (GTK_WINDOW(note->w_window),
- g_settings_get_int (stickynotes->settings, KEY_DEFAULT_WIDTH),
- g_settings_get_int (stickynotes->settings, KEY_DEFAULT_HEIGHT));
+ g_settings_get_int (applet->settings, KEY_DEFAULT_WIDTH),
+ g_settings_get_int (applet->settings, KEY_DEFAULT_HEIGHT));
else
gtk_window_resize (GTK_WINDOW(note->w_window),
note->w,
@@ -553,9 +567,9 @@ stickynote_new_aux (GdkScreen *screen, gint x, gint y, gint w, gint h)
/* Create a new (empty) Sticky Note */
StickyNote *
-stickynote_new (GdkScreen *screen)
+stickynote_new (StickyNotesApplet *applet)
{
- return stickynote_new_aux (screen, -1, -1, 0, 0);
+ return stickynote_new_aux (applet, -1, -1, 0, 0);
}
/* Destroy a Sticky Note */
@@ -579,9 +593,12 @@ void stickynote_free(StickyNote *note)
/* Change the sticky note title and color */
void stickynote_change_properties (StickyNote *note)
{
+ StickyNotesApplet *applet;
GdkRGBA color, font_color;
char *color_str = NULL;
+ applet = note->applet;
+
gtk_entry_set_text(GTK_ENTRY(note->w_entry),
gtk_label_get_text (GTK_LABEL (note->w_title)));
@@ -592,7 +609,7 @@ void stickynote_change_properties (StickyNote *note)
color_str = g_strdup (note->color);
else
{
- color_str = g_settings_get_string (stickynotes->settings, KEY_DEFAULT_COLOR);
+ color_str = g_settings_get_string (applet->settings, KEY_DEFAULT_COLOR);
}
if (!IS_STRING_EMPTY (color_str))
@@ -606,7 +623,7 @@ void stickynote_change_properties (StickyNote *note)
color_str = g_strdup (note->font_color);
else
{
- color_str = g_settings_get_string (stickynotes->settings, KEY_DEFAULT_FONT_COLOR);
+ color_str = g_settings_get_string (applet->settings, KEY_DEFAULT_FONT_COLOR);
}
if (!IS_STRING_EMPTY (color_str))
@@ -624,7 +641,7 @@ void stickynote_change_properties (StickyNote *note)
gtk_widget_show (note->w_properties);
- stickynotes_save();
+ stickynotes_save (applet);
}
static void
@@ -651,7 +668,7 @@ void stickynote_set_title(StickyNote *note, const gchar *title)
/* If title is NULL, use the current date as the title. */
if (!title) {
gchar *date_title, *tmp;
- gchar *date_format = g_settings_get_string (stickynotes->settings, KEY_DATE_FORMAT);
+ gchar *date_format = g_settings_get_string (note->applet->settings, KEY_DATE_FORMAT);
if (IS_STRING_EMPTY (date_format)) {
g_free (date_format);
date_format = g_strdup ("%x");
@@ -919,9 +936,9 @@ update_css (StickyNote *note)
string = g_string_new (NULL);
- append_background_color (note, stickynotes->settings, string);
- append_font_color (note, stickynotes->settings, string);
- append_font (note, stickynotes->settings, string);
+ append_background_color (note, note->applet->settings, string);
+ append_font_color (note, note->applet->settings, string);
+ append_font (note, note->applet->settings, string);
css = g_string_free (string, FALSE);
gtk_css_provider_load_from_data (note->css, css, -1, NULL);
@@ -997,7 +1014,7 @@ stickynote_set_locked (StickyNote *note,
gtk_image_set_pixel_size (note->img_lock, STICKYNOTES_ICON_SIZE);
- stickynotes_applet_update_menus();
+ stickynotes_applet_update_menus (note->applet);
}
/* Show/Hide a sticky note */
@@ -1012,7 +1029,7 @@ stickynote_set_visible (StickyNote *note, gboolean visible)
gtk_window_move (GTK_WINDOW (note->w_window),
note->x, note->y);
/* Put the note on all workspaces if necessary. */
- if (g_settings_get_boolean (stickynotes->settings, KEY_STICKY))
+ if (g_settings_get_boolean (note->applet->settings, KEY_STICKY))
gtk_window_stick(GTK_WINDOW(note->w_window));
else if (note->workspace > 0)
{
@@ -1044,7 +1061,7 @@ stickynote_set_visible (StickyNote *note, gboolean visible)
else {
/* Hide sticky note */
int x, y, width, height;
- stickynotes_applet_panel_icon_get_geometry (&x, &y, &width, &height);
+ stickynotes_applet_panel_icon_get_geometry (note->applet, &x, &y, &width, &height);
set_icon_geometry (gtk_widget_get_window (GTK_WIDGET (note->w_window)),
x, y, width, height);
gtk_window_iconify(GTK_WINDOW (note->w_window));
@@ -1052,15 +1069,16 @@ stickynote_set_visible (StickyNote *note, gboolean visible)
}
/* Add a sticky note */
-void stickynotes_add (GdkScreen *screen)
+void
+stickynotes_add (StickyNotesApplet *applet)
{
StickyNote *note;
- note = stickynote_new (screen);
+ note = stickynote_new (applet);
- stickynotes->notes = g_list_append(stickynotes->notes, note);
- stickynotes_applet_update_tooltips();
- stickynotes_save();
+ applet->notes = g_list_append(applet->notes, note);
+ stickynotes_applet_update_tooltips(applet);
+ stickynotes_save (applet);
stickynote_set_visible (note, TRUE);
}
@@ -1080,18 +1098,19 @@ void stickynotes_remove(StickyNote *note)
gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(note->w_window));
if (stickynote_get_empty(note)
- || !g_settings_get_boolean (stickynotes->settings, KEY_CONFIRM_DELETION)
+ || !g_settings_get_boolean (note->applet->settings, KEY_CONFIRM_DELETION)
|| gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_OK) {
- stickynote_free(note);
/* Remove the note from the linked-list of all notes */
- stickynotes->notes = g_list_remove(stickynotes->notes, note);
+ note->applet->notes = g_list_remove (note->applet->notes, note);
/* Update tooltips */
- stickynotes_applet_update_tooltips();
+ stickynotes_applet_update_tooltips(note->applet);
/* Save notes */
- stickynotes_save();
+ stickynotes_save (note->applet);
+
+ stickynote_free (note);
}
gtk_widget_destroy(dialog);
@@ -1100,7 +1119,7 @@ void stickynotes_remove(StickyNote *note)
/* Save all sticky notes in an XML configuration file */
void
-stickynotes_save_now (void)
+stickynotes_save_now (StickyNotesApplet *applet)
{
WnckScreen *wnck_screen;
const gchar *title;
@@ -1120,12 +1139,12 @@ stickynotes_save_now (void)
wnck_screen_force_update (wnck_screen);
/* For all sticky notes */
- for (i = 0; i < g_list_length(stickynotes->notes); i++) {
+ for (i = 0; i < g_list_length (applet->notes); i++) {
WnckWindow *wnck_win;
gulong xid = 0;
/* Access the current note in the list */
- StickyNote *note = g_list_nth_data(stickynotes->notes, i);
+ StickyNote *note = g_list_nth_data (applet->notes, i);
/* Retrieve the window size of the note */
gchar *w_str = g_strdup_printf("%d", note->w);
@@ -1138,7 +1157,7 @@ stickynotes_save_now (void)
xid = GDK_WINDOW_XID (gtk_widget_get_window (note->w_window));
wnck_win = wnck_window_get (xid);
- if (!g_settings_get_boolean (stickynotes->settings, KEY_STICKY) &&
+ if (!g_settings_get_boolean (note->applet->settings, KEY_STICKY) &&
wnck_win)
note->workspace = 1 +
wnck_workspace_get_number (
@@ -1212,30 +1231,34 @@ stickynotes_save_now (void)
xmlFreeDoc(doc);
- save_scheduled = FALSE;
+ applet->save_scheduled = FALSE;
}
static gboolean
stickynotes_save_cb (gpointer user_data)
{
- stickynotes_save_now ();
+ StickyNotesApplet *applet;
+
+ applet = STICKY_NOTES_APPLET (user_data);
+
+ stickynotes_save_now (applet);
return G_SOURCE_REMOVE;
}
void
-stickynotes_save (void)
+stickynotes_save (StickyNotesApplet *applet)
{
/* If a save isn't already schedules, save everything a minute from now. */
- if (!save_scheduled) {
- g_timeout_add_seconds (60, stickynotes_save_cb, NULL);
- save_scheduled = TRUE;
+ if (!applet->save_scheduled) {
+ g_timeout_add_seconds (60, stickynotes_save_cb, applet);
+ applet->save_scheduled = TRUE;
}
}
/* Load all sticky notes from an XML configuration file */
void
-stickynotes_load (GdkScreen *screen)
+stickynotes_load (StickyNotesApplet *applet)
{
xmlDocPtr doc;
xmlNodePtr root;
@@ -1267,7 +1290,7 @@ stickynotes_load (GdkScreen *screen)
/* If the XML file does not exist, create a blank one */
if (!doc)
{
- stickynotes_save();
+ stickynotes_save (applet);
return;
}
@@ -1276,7 +1299,7 @@ stickynotes_load (GdkScreen *screen)
if (!root || xmlStrcmp(root->name, XML_CHAR ("stickynotes")))
{
xmlFreeDoc(doc);
- stickynotes_save();
+ stickynotes_save (applet);
return;
}
@@ -1330,9 +1353,8 @@ stickynotes_load (GdkScreen *screen)
}
/* Create a new note */
- note = stickynote_new_aux (screen, x, y, w, h);
- stickynotes->notes = g_list_append (stickynotes->notes,
- note);
+ note = stickynote_new_aux (applet, x, y, w, h);
+ applet->notes = g_list_append (applet->notes, note);
new_notes = g_list_append (new_notes, note);
new_nodes = g_list_append (new_nodes, node);
@@ -1425,7 +1447,7 @@ stickynotes_load (GdkScreen *screen)
{
StickyNote *note = tmp1->data;
- stickynote_set_visible (note, stickynotes->visible);
+ stickynote_set_visible (note, applet->visible);
tmp1 = tmp1->next;
}
diff --git a/gnome-applets/sticky-notes/sticky-notes.h b/gnome-applets/sticky-notes/sticky-notes.h
index c2322dd75..c425a493a 100644
--- a/gnome-applets/sticky-notes/sticky-notes.h
+++ b/gnome-applets/sticky-notes/sticky-notes.h
@@ -24,6 +24,8 @@
typedef struct
{
+ StickyNotesApplet *applet;
+
GtkWidget *w_window; /* Sticky Note window */
GtkWidget *w_menu; /* Sticky Note menu */
GtkWidget *w_properties; /* Sticky Note properties dialog */
@@ -67,9 +69,10 @@ typedef struct
int workspace; /* Workspace the note is on */
+ guint buffer_changed_id;
} StickyNote;
-StickyNote * stickynote_new(GdkScreen *screen);
+StickyNote * stickynote_new (StickyNotesApplet *applet);
void stickynote_free(StickyNote *note);
gboolean stickynote_get_empty(const StickyNote *note);
@@ -85,10 +88,12 @@ void stickynote_set_visible(StickyNote *note, gboolean visible);
void stickynote_change_properties(StickyNote *note);
-void stickynotes_add(GdkScreen *screen);
+void stickynotes_add (StickyNotesApplet *applet);
void stickynotes_remove(StickyNote *note);
-void stickynotes_save(void);
-void stickynotes_save_now (void);
-void stickynotes_load(GdkScreen *screen);
+
+void stickynotes_save (StickyNotesApplet *applet);
+void stickynotes_save_now (StickyNotesApplet *applet);
+
+void stickynotes_load (StickyNotesApplet *applet);
#endif /* __STICKYNOTES_H__ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]