patches/gnome-screensaver-02-unlock-first.diff
author jurikm
Sun, 12 Feb 2012 14:04:10 +0000
changeset 8245 383896da4129
parent 2516 c3e32ef27ab5
permissions -rw-r--r--
SFEsauerbraten.spec: add IPS package name
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2271
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
     1
--- gnome-screensaver-2.28.0/src/gs-window.h.orig	2010-01-06 20:59:03.390728691 +0800
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
     2
+++ gnome-screensaver-2.28.0/src/gs-window.h	2010-01-04 14:00:17.572287531 +0800
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
     3
@@ -52,6 +52,7 @@
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
     4
         void            (* deactivated)         (GSWindow *window);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
     5
         void            (* dialog_up)           (GSWindow *window);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
     6
         void            (* dialog_down)         (GSWindow *window);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
     7
+        void            (* dialog_timeout)      (GSWindow *window);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
     8
 } GSWindowClass;
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
     9
 
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    10
 GType       gs_window_get_type           (void);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    11
@@ -96,6 +97,9 @@
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    12
 GtkWidget * gs_window_get_drawing_area   (GSWindow  *window);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    13
 void        gs_window_clear              (GSWindow  *window);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    14
 
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    15
+void        gs_window_show_unlock          (GSWindow *window);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    16
+void        gs_window_hide_unlock          (GSWindow *window);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    17
+
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    18
 G_END_DECLS
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    19
 
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    20
 #endif /* __GS_WINDOW_H */
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    21
--- gnome-screensaver-2.28.0/src/gs-manager.c.orig	2010-01-06 20:50:45.226262893 +0800
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    22
+++ gnome-screensaver-2.28.0/src/gs-manager.c	2010-01-06 12:52:44.900096152 +0800
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    23
@@ -504,6 +504,8 @@
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    24
 {
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    25
         if (manager->priv->lock_enabled) {
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    26
                 gs_manager_set_lock_active (manager, TRUE);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    27
+                /* start the unlock dialog right after the screen is locked */
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    28
+                gs_manager_start_unlock (manager);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    29
         }
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    30
 
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    31
         manager->priv->lock_timeout_id = 0;
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    32
@@ -1137,6 +1139,17 @@
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    33
         g_signal_emit (manager, signals [AUTH_REQUEST_END], 0);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    34
 }
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    35
 
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    36
+static void
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    37
+window_dialog_timeout_cb (GSWindow  *window,
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    38
+                       GSManager *manager)
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    39
+{
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    40
+        g_return_if_fail (manager != NULL);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    41
+        g_return_if_fail (GS_IS_MANAGER (manager));
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    42
+
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    43
+        gs_debug ("Handling dialog timeout");
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    44
+        gs_window_hide_unlock (window);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    45
+}
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    46
+
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    47
 static GSWindow *
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    48
 find_window_at_pointer (GSManager *manager)
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    49
 {
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    50
@@ -1381,6 +1394,7 @@
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    51
         g_signal_handlers_disconnect_by_func (window, window_activity_cb, manager);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    52
         g_signal_handlers_disconnect_by_func (window, window_dialog_up_cb, manager);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    53
         g_signal_handlers_disconnect_by_func (window, window_dialog_down_cb, manager);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    54
+        g_signal_handlers_disconnect_by_func (window, window_dialog_timeout_cb, manager);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    55
         g_signal_handlers_disconnect_by_func (window, window_show_cb, manager);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    56
         g_signal_handlers_disconnect_by_func (window, window_map_cb, manager);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    57
         g_signal_handlers_disconnect_by_func (window, window_map_event_cb, manager);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    58
@@ -1410,6 +1424,8 @@
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    59
                                  G_CALLBACK (window_dialog_up_cb), manager, 0);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    60
         g_signal_connect_object (window, "dialog-down",
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    61
                                  G_CALLBACK (window_dialog_down_cb), manager, 0);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    62
+        g_signal_connect_object (window, "dialog-timeout",
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    63
+                                 G_CALLBACK (window_dialog_timeout_cb), manager, 0);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    64
         g_signal_connect_object (window, "show",
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    65
                                  G_CALLBACK (window_show_cb), manager, G_CONNECT_AFTER);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    66
         g_signal_connect_object (window, "map",
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    67
@@ -1771,7 +1787,7 @@
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    68
 }
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    69
 
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    70
 gboolean
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    71
-gs_manager_request_unlock (GSManager *manager)
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    72
+gs_manager_start_unlock (GSManager *manager)
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    73
 {
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    74
         GSWindow *window;
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    75
 
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    76
@@ -1805,6 +1821,44 @@
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    77
         return TRUE;
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    78
 }
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    79
 
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    80
+gboolean
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    81
+gs_manager_request_unlock (GSManager *manager)
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    82
+{
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    83
+        GSWindow *window;
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    84
+
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    85
+        g_return_val_if_fail (manager != NULL, FALSE);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    86
+        g_return_val_if_fail (GS_IS_MANAGER (manager), FALSE);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    87
+
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    88
+        if (! manager->priv->active) {
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    89
+                gs_debug ("Request unlock but manager is not active");
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    90
+                return FALSE;
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    91
+        }
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    92
+
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    93
+        if (manager->priv->fading) {
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    94
+                gs_debug ("Request unlock so finishing fade");
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    95
+                gs_fade_finish (manager->priv->fade);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    96
+        }
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    97
+
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    98
+        if (manager->priv->windows == NULL) {
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
    99
+                gs_debug ("We don't have any windows!");
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   100
+                return FALSE;
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   101
+        }
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   102
+
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   103
+        if (manager->priv->dialog_up) {
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   104
+                /* Find the GSWindow that contains the pointer */
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   105
+                window = find_window_at_pointer (manager);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   106
+                gs_window_show_unlock (window);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   107
+                return TRUE;
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   108
+        }
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   109
+
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   110
+	if (!manager->priv->lock_enabled) {
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   111
+		g_signal_emit (manager, signals [DEACTIVATED], 0);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   112
+		return TRUE;
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   113
+	}
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   114
+
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   115
+        return FALSE;
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   116
+}
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   117
+
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   118
 void
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   119
 gs_manager_cancel_unlock_request (GSManager *manager)
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   120
 {
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   121
--- gnome-screensaver-2.28.0/src/gs-lock-plug.c.orig	2010-01-06 20:50:45.226087162 +0800
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   122
+++ gnome-screensaver-2.28.0/src/gs-lock-plug.c	2010-01-06 20:51:47.304843245 +0800
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   123
@@ -319,11 +319,6 @@
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   124
 static void
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   125
 restart_cancel_timeout (GSLockPlug *plug)
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   126
 {
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   127
-        remove_cancel_timeout (plug);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   128
-
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   129
-        plug->priv->cancel_timeout_id = g_timeout_add (plug->priv->timeout,
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   130
-                                                       (GSourceFunc)dialog_timed_out,
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   131
-                                                       plug);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   132
 }
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   133
 
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   134
 void
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   135
--- gnome-screensaver-2.28.0/src/gs-window-x11.c.orig	2010-01-06 20:50:45.226455005 +0800
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   136
+++ gnome-screensaver-2.28.0/src/gs-window-x11.c	2010-01-06 20:58:14.763298449 +0800
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   137
@@ -102,6 +102,8 @@
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   138
 
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   139
         GTimer    *timer;
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   140
 
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   141
+        guint      dialog_timeout_id;
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   142
+
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   143
 #ifdef HAVE_SHAPE_EXT
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   144
         int        shape_event_base;
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   145
 #endif
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   146
@@ -112,6 +114,7 @@
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   147
         DEACTIVATED,
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   148
         DIALOG_UP,
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   149
         DIALOG_DOWN,
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   150
+        DIALOG_TIMEOUT,
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   151
         LAST_SIGNAL
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   152
 };
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   153
 
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   154
@@ -1072,6 +1075,52 @@
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   155
         return result;
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   156
 }
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   157
 
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   158
+static gboolean
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   159
+dialog_timedout (GSWindow *window)
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   160
+{
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   161
+        g_signal_emit (window, signals [DIALOG_TIMEOUT], 0);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   162
+
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   163
+        return FALSE;
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   164
+}
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   165
+
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   166
+static void
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   167
+remove_dialog_timeout (GSWindow *window)
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   168
+{
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   169
+        if (window->priv->dialog_timeout_id > 0) {
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   170
+                g_source_remove (window->priv->dialog_timeout_id);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   171
+                window->priv->dialog_timeout_id = 0;
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   172
+        }
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   173
+}
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   174
+
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   175
+void
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   176
+gs_window_show_unlock (GSWindow *window)
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   177
+{
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   178
+        gs_window_clear_to_background_pixmap (window);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   179
+        set_invisible_cursor (GTK_WIDGET (window)->window, FALSE);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   180
+
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   181
+        gtk_widget_show (window->priv->lock_socket);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   182
+        if (window->priv->keyboard_enabled) {
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   183
+                gtk_widget_show (window->priv->keyboard_socket);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   184
+        }
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   185
+        window->priv->dialog_timeout_id =
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   186
+                g_timeout_add (60000,
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   187
+                                (GSourceFunc)dialog_timedout,
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   188
+                                window);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   189
+}
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   190
+
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   191
+void
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   192
+gs_window_hide_unlock (GSWindow *window)
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   193
+{
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   194
+        gs_window_clear (window);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   195
+        set_invisible_cursor (GTK_WIDGET (window)->window, TRUE);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   196
+
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   197
+        gtk_widget_hide (window->priv->lock_socket);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   198
+        if (window->priv->keyboard_enabled) {
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   199
+                gtk_widget_hide (window->priv->keyboard_socket);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   200
+        }
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   201
+        remove_dialog_timeout (window);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   202
+}
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   203
+
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   204
 static void
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   205
 lock_plug_added (GtkWidget *widget,
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   206
                  GSWindow  *window)
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   207
@@ -1112,7 +1161,6 @@
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   208
                            GSWindow  *window)
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   209
 {
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   210
         g_signal_handlers_disconnect_by_func (widget, keyboard_socket_destroyed, window);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   211
-        g_signal_handlers_disconnect_by_func (widget, keyboard_plug_added, window);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   212
         g_signal_handlers_disconnect_by_func (widget, keyboard_plug_removed, window);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   213
 
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   214
         window->priv->keyboard_socket = NULL;
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   215
@@ -1164,7 +1212,6 @@
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   216
 {
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   217
         g_signal_handlers_disconnect_by_func (widget, lock_socket_show, window);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   218
         g_signal_handlers_disconnect_by_func (widget, lock_socket_destroyed, window);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   219
-        g_signal_handlers_disconnect_by_func (widget, lock_plug_added, window);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   220
         g_signal_handlers_disconnect_by_func (widget, lock_plug_removed, window);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   221
 
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   222
         window->priv->lock_socket = NULL;
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   223
@@ -1183,8 +1230,6 @@
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   224
 
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   225
         g_signal_connect (window->priv->keyboard_socket, "destroy",
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   226
                           G_CALLBACK (keyboard_socket_destroyed), window);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   227
-        g_signal_connect (window->priv->keyboard_socket, "plug_added",
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   228
-                          G_CALLBACK (keyboard_plug_added), window);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   229
         g_signal_connect (window->priv->keyboard_socket, "plug_removed",
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   230
                           G_CALLBACK (keyboard_plug_removed), window);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   231
         gtk_box_pack_start (GTK_BOX (window->priv->vbox), window->priv->keyboard_socket, FALSE, FALSE, 0);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   232
@@ -1345,8 +1390,6 @@
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   233
                           G_CALLBACK (lock_socket_show), window);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   234
         g_signal_connect (window->priv->lock_socket, "destroy",
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   235
                           G_CALLBACK (lock_socket_destroyed), window);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   236
-        g_signal_connect (window->priv->lock_socket, "plug_added",
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   237
-                          G_CALLBACK (lock_plug_added), window);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   238
         g_signal_connect (window->priv->lock_socket, "plug_removed",
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   239
                           G_CALLBACK (lock_plug_removed), window);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   240
 
2516
c3e32ef27ab5 2010-04-22 Jedy Wang <[email protected]>
jedywang
parents: 2271
diff changeset
   241
@@ -1685,10 +1728,6 @@ popup_dialog_idle (GSWindow *window)
2271
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   242
 
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   243
         gtk_widget_hide (window->priv->drawing_area);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   244
 
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   245
-        gs_window_clear_to_background_pixmap (window);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   246
-
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   247
-        set_invisible_cursor (GTK_WIDGET (window)->window, FALSE);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   248
-
2516
c3e32ef27ab5 2010-04-22 Jedy Wang <[email protected]>
jedywang
parents: 2271
diff changeset
   249
         window->priv->dialog_quit_requested = FALSE;
c3e32ef27ab5 2010-04-22 Jedy Wang <[email protected]>
jedywang
parents: 2271
diff changeset
   250
         window->priv->dialog_shake_in_progress = FALSE;
c3e32ef27ab5 2010-04-22 Jedy Wang <[email protected]>
jedywang
parents: 2271
diff changeset
   251
 
2271
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   252
@@ -1889,11 +1928,11 @@
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   253
 
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   254
         handled = FALSE;
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   255
 
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   256
-        /* if we already have a socket then don't bother */
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   257
-        if (! window->priv->lock_socket
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   258
-            && GTK_WIDGET_IS_SENSITIVE (GTK_WIDGET (window))) {
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   259
-                g_signal_emit (window, signals [ACTIVITY], 0, &handled);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   260
-        }
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   261
+	if (GTK_WIDGET_IS_SENSITIVE (GTK_WIDGET (window))) {
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   262
+		if (window->priv->lock_socket)
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   263
+			remove_dialog_timeout (window);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   264
+		g_signal_emit (window, signals [ACTIVITY], 0, &handled);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   265
+	}
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   266
 
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   267
         return handled;
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   268
 }
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   269
@@ -2146,6 +2185,17 @@
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   270
                               G_TYPE_NONE,
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   271
                               0);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   272
 
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   273
+        signals [DIALOG_TIMEOUT] =
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   274
+                g_signal_new ("dialog-timeout",
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   275
+                              G_TYPE_FROM_CLASS (object_class),
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   276
+                              G_SIGNAL_RUN_LAST,
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   277
+                              G_STRUCT_OFFSET (GSWindowClass, dialog_timeout),
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   278
+                              NULL,
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   279
+                              NULL,
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   280
+                              g_cclosure_marshal_VOID__VOID,
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   281
+                              G_TYPE_NONE,
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   282
+                              0);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   283
+
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   284
         g_object_class_install_property (object_class,
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   285
                                          PROP_OBSCURED,
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   286
                                          g_param_spec_boolean ("obscured",
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   287
@@ -2292,6 +2342,7 @@
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   288
 
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   289
         remove_watchdog_timer (window);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   290
         remove_popup_dialog_idle (window);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   291
+        remove_dialog_timeout (window);
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   292
 
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   293
         if (window->priv->timer) {
4ece9ad86c58 2010-01-06 Jeff Cai <[email protected]>
jeffcai
parents:
diff changeset
   294
                 g_timer_destroy (window->priv->timer);