[Goodies-commits] r3462 - xfce4-notes-plugin/trunk/panel-plugin

Mike Massonnet mmassonnet at xfce.org
Sat Oct 27 04:01:19 CEST 2007


Author: mmassonnet
Date: 2007-10-27 02:01:19 +0000 (Sat, 27 Oct 2007)
New Revision: 3462

Modified:
   xfce4-notes-plugin/trunk/panel-plugin/notes.c
   xfce4-notes-plugin/trunk/panel-plugin/notes.h
Log:
    * panel-plugin/notes.c(notes_window_start_move,
      notes_window_timeout_start_move,
      notes_window_timeout_start_move_destroy,
      notes_window_new_with_label): Delay the start_move window a bit
      (1OOms) with a timeout, and kill it on-release.


Modified: xfce4-notes-plugin/trunk/panel-plugin/notes.c
===================================================================
--- xfce4-notes-plugin/trunk/panel-plugin/notes.c	2007-10-26 19:11:54 UTC (rev 3461)
+++ xfce4-notes-plugin/trunk/panel-plugin/notes.c	2007-10-27 02:01:19 UTC (rev 3462)
@@ -67,6 +67,13 @@
                                                          GdkEventWindowState *event);
 static gboolean         notes_window_start_move         (NotesWindow *notes_window,
                                                          GdkEventButton *event);
+static gboolean         notes_window_start_move         (NotesWindow *notes_window,
+                                                         GdkEventButton *event);
+
+static gboolean         notes_window_timeout_start_move (NotesWindow *notes_window);
+
+static gboolean         notes_window_timeout_start_move_destroy (NotesWindow *notes_window);
+
 static gboolean         notes_window_scroll_event       (NotesWindow *notes_window,
                                                          GdkEventScroll *event);
 static void             notes_window_shade              (NotesWindow *notes_window);
@@ -336,6 +343,10 @@
                             G_CALLBACK (notes_window_start_move),
                             notes_window);
   g_signal_connect_swapped (notes_window->eb_move,
+                            "button-release-event",
+                            G_CALLBACK (notes_window_timeout_start_move_destroy),
+                            notes_window);
+  g_signal_connect_swapped (notes_window->eb_move,
                             "scroll-event",
                             G_CALLBACK (notes_window_scroll_event),
                             notes_window);
@@ -1007,11 +1018,8 @@
       if (event->button == 1)
         {
           gdk_window_show (notes_window->window->window);
-          gtk_window_begin_move_drag (GTK_WINDOW (notes_window->window),
-                                      event->button,
-                                      event->x_root,
-                                      event->y_root,
-                                      event->time);
+          notes_window->timeout_start_move =
+            g_timeout_add (100, (GSourceFunc)notes_window_timeout_start_move, notes_window);
         }
       /* Send to background */
       else if (event->button == 2)
@@ -1022,6 +1030,33 @@
 }
 
 static gboolean
+notes_window_timeout_start_move (NotesWindow *notes_window)
+{
+  gint x, y, xfoo, ybar;
+
+  gtk_window_get_position (GTK_WINDOW (notes_window->window), &x, &y);
+  gtk_widget_get_pointer (notes_window->window, &xfoo, &ybar);
+  x += xfoo;
+  y += ybar;
+
+  gtk_window_begin_move_drag (GTK_WINDOW (notes_window->window),
+                              1, x, y, gtk_get_current_event_time ());
+  notes_window_timeout_start_move_destroy (notes_window);
+
+  return FALSE;
+}
+
+static gboolean
+notes_window_timeout_start_move_destroy (NotesWindow *notes_window)
+{
+  TRACE ("Timeout destroyed");
+  if (notes_window->timeout_start_move > 0)
+    g_source_remove (notes_window->timeout_start_move);
+  notes_window->timeout_start_move = 0;
+  return FALSE;
+}
+
+static gboolean
 notes_window_scroll_event (NotesWindow *notes_window,
                            GdkEventScroll *event)
 {

Modified: xfce4-notes-plugin/trunk/panel-plugin/notes.h
===================================================================
--- xfce4-notes-plugin/trunk/panel-plugin/notes.h	2007-10-26 19:11:54 UTC (rev 3461)
+++ xfce4-notes-plugin/trunk/panel-plugin/notes.h	2007-10-27 02:01:19 UTC (rev 3462)
@@ -57,6 +57,7 @@
   GSList               *notes;
 
   gchar                *name;
+  guint                 timeout_start_move;
   gint                  x, y, w, h;
   ShowOnStartup         show_on_startup;
   gboolean              show_statusbar;




More information about the Goodies-commits mailing list