19033N/A/*
19033N/A * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
19033N/A *
19033N/A * Permission is hereby granted, free of charge, to any person obtaining a
19033N/A * copy of this software and associated documentation files (the "Software"),
19033N/A * to deal in the Software without restriction, including without limitation
19033N/A * the rights to use, copy, modify, merge, publish, distribute, sublicense,
19033N/A * and/or sell copies of the Software, and to permit persons to whom the
19033N/A * Software is furnished to do so, subject to the following conditions:
19033N/A *
19033N/A * The above copyright notice and this permission notice (including the next
19033N/A * paragraph) shall be included in all copies or substantial portions of the
19033N/A * Software.
19033N/A *
19033N/A * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19033N/A * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19033N/A * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19033N/A * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19033N/A * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19033N/A * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
19033N/A * DEALINGS IN THE SOFTWARE.
19033N/A */
19033N/A
19033N/ASun bug 5077981/GNOME bug 147579:
19033N/A There should be an option to extend/disable lockout timer
19033N/A http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=5077981
19033N/A http://bugzilla.gnome.org/show_bug.cgi?id=147579
19033N/A
19033N/ASun bug 6176524:
19033N/A passwdTimeoutEnable for disabled user (xscreensaver-lock)
19033N/A http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6176524
19033N/A---
19033N/A driver/XScreenSaver.ad.in | 1 +
19033N/A driver/demo-Gtk.c | 13 +++++
19033N/A driver/lock.c | 8 +++
19033N/A driver/prefs.c | 6 ++
19033N/A driver/types.h | 2 +
19033N/A driver/xscreensaver-demo.glade2 | 98 ++++++++++++++++++++++++++++++++++++++-
19033N/A 6 files changed, 127 insertions(+), 1 deletions(-)
19033N/A
19033N/Adiff --git xscreensaver-5.12/driver/XScreenSaver.ad.in xscreensaver-5.12/driver/XScreenSaver.ad.in
19033N/A--- xscreensaver-5.12/driver/XScreenSaver.ad.in
19033N/A+++ xscreensaver-5.12/driver/XScreenSaver.ad.in
19033N/A@@ -34,6 +34,7 @@
19033N/A *cycle: 0:10:00
19033N/A *lockTimeout: 0:00:00
19033N/A *passwdTimeout: 0:02:00
19033N/A+*passwdTimeoutEnabled: True
19033N/A *dpmsEnabled: True
19033N/A *dpmsStandby: 0:10:00
19033N/A *dpmsSuspend: 0:10:00
19033N/Adiff --git xscreensaver-5.12/driver/demo-Gtk.c xscreensaver-5.12/driver/demo-Gtk.c
19033N/A--- xscreensaver-5.12/driver/demo-Gtk.c
19033N/A+++ xscreensaver-5.12/driver/demo-Gtk.c
19117N/A@@ -1556,6 +1556,8 @@ flush_dialog_changes_and_save (state *s)
19033N/A
19033N/A MINUTES (&p2->timeout, "timeout_spinbutton");
19033N/A MINUTES (&p2->cycle, "cycle_spinbutton");
19033N/A+ CHECKBOX (p2->unlock_timeout_p, "pwd_button"); /* bugid 5077981 */
19033N/A+ MINUTES (&p2->passwd_timeout, "pwd_spinbutton");
19033N/A CHECKBOX (p2->lock_p, "lock_button");
19033N/A MINUTES (&p2->lock_timeout, "lock_spinbutton");
19033N/A
19117N/A@@ -1647,6 +1649,8 @@ flush_dialog_changes_and_save (state *s)
19033N/A COPY(cycle, "cycle");
19033N/A COPY(lock_p, "lock_p");
19033N/A COPY(lock_timeout, "lock_timeout");
19033N/A+ COPY(unlock_timeout_p,"unlock_timeout_p"); /* bugid 5077981 */
19033N/A+ COPY(passwd_timeout, "passwd_timeout");
19033N/A
19033N/A COPY(dpms_enabled_p, "dpms_enabled_p");
19033N/A COPY(dpms_standby, "dpms_standby");
19117N/A@@ -2777,6 +2781,9 @@ populate_prefs_page (state *s)
19033N/A FMT_MINUTES ("timeout_spinbutton", p->timeout);
19033N/A FMT_MINUTES ("cycle_spinbutton", p->cycle);
19033N/A FMT_MINUTES ("lock_spinbutton", p->lock_timeout);
19033N/A+ /* bugid 5077981 */
19033N/A+ FMT_MINUTES ("pwd_spinbutton", p->passwd_timeout);
19033N/A+
19033N/A FMT_MINUTES ("dpms_standby_spinbutton", p->dpms_standby);
19033N/A FMT_MINUTES ("dpms_suspend_spinbutton", p->dpms_suspend);
19033N/A FMT_MINUTES ("dpms_off_spinbutton", p->dpms_off);
19117N/A@@ -2789,6 +2796,7 @@ populate_prefs_page (state *s)
19033N/A gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (name_to_widget (s,(NAME))),\
19033N/A (ACTIVEP))
19033N/A
19033N/A+ TOGGLE_ACTIVE ("pwd_button", p->unlock_timeout_p); /* bugid 5077981 */
19033N/A TOGGLE_ACTIVE ("lock_button", p->lock_p);
19033N/A #if 0
19033N/A TOGGLE_ACTIVE ("verbose_button", p->verbose_p);
19117N/A@@ -2893,6 +2901,10 @@ populate_prefs_page (state *s)
19033N/A
19033N/A /* Blanking and Locking
19033N/A */
19033N/A+ /* bugid 5077081 */
19033N/A+ SENSITIZE ("pwd_spinbutton", p->unlock_timeout_p);
19033N/A+ SENSITIZE ("pwd_mlabel", p->unlock_timeout_p);
19033N/A+
19033N/A SENSITIZE ("lock_button", can_lock_p);
19033N/A SENSITIZE ("lock_spinbutton", can_lock_p && p->lock_p);
19033N/A SENSITIZE ("lock_mlabel", can_lock_p && p->lock_p);
19117N/A@@ -3064,6 +3076,7 @@ fix_text_entry_sizes (state *s)
19033N/A # if 0 /* appears no longer necessary with Gtk 1.2.10 */
19033N/A const char * const spinbuttons[] = {
19033N/A "timeout_spinbutton", "cycle_spinbutton", "lock_spinbutton",
19033N/A+ "pwd_spinbutton", /* bugid 5077981 */
19033N/A "dpms_standby_spinbutton", "dpms_suspend_spinbutton",
19033N/A "dpms_off_spinbutton",
19033N/A "-fade_spinbutton" };
19033N/Adiff --git xscreensaver-5.12/driver/lock.c xscreensaver-5.12/driver/lock.c
19033N/A--- xscreensaver-5.12/driver/lock.c
19033N/A+++ xscreensaver-5.12/driver/lock.c
19033N/A@@ -1622,6 +1622,10 @@ update_passwd_window (saver_info *si, const char *printed_passwd, float ratio)
19033N/A event.xclient.data.l[1] = 0;
19033N/A event.xclient.data.l[2] = 0;
19033N/A
19033N/A+ /* CR 5077981: option to disable unlock timer */
19033N/A+ if (! si->prefs.unlock_timeout_p)
19033N/A+ event.xclient.data.l[1] = 1;
19033N/A+
19033N/A if (!safe_XSendEvent (si->dpy, si->passwd_dialog, False, 0L, &event))
19033N/A fprintf (stderr, "%s: error sending ratio to lock dialog\n", blurb ());
19033N/A }
19033N/A@@ -2320,6 +2324,10 @@ passwd_animate_timer (XtPointer closure, XtIntervalId *id)
19033N/A
19033N/A if (!pw) return;
19033N/A
19033N/A+ /* CR 5077981: option to disable unlock timer */
19033N/A+ if (! si->prefs.unlock_timeout_p)
19033N/A+ return;
19033N/A+
19033N/A #ifdef HAVE_XSCREENSAVER_LOCK
19033N/A /* We want to make sure dialog is up before we update countdown timer */
19033N/A if (!si->passwd_dialog)
19033N/Adiff --git xscreensaver-5.12/driver/prefs.c xscreensaver-5.12/driver/prefs.c
19033N/A--- xscreensaver-5.12/driver/prefs.c
19033N/A+++ xscreensaver-5.12/driver/prefs.c
19033N/A@@ -251,6 +251,7 @@ static const char * const prefs[] = {
19033N/A "lockVTs", /* not saved */
19033N/A "lockTimeout",
19033N/A "passwdTimeout",
19033N/A+ "passwdTimeoutEnabled", /* bugid 5077981 */
19033N/A "visualID",
19033N/A "installColormap",
19033N/A "verbose",
19033N/A@@ -783,6 +784,9 @@ write_init_file (Display *dpy,
19033N/A CHECK("lockVTs") continue; /* don't save, unused */
19033N/A CHECK("lockTimeout") type = pref_time, t = p->lock_timeout;
19033N/A CHECK("passwdTimeout") type = pref_time, t = p->passwd_timeout;
19033N/A+
19033N/A+/* bugid 5077981 */
19033N/A+ CHECK("passwdTimeoutEnabled") type = pref_bool, b = p->unlock_timeout_p;
19033N/A CHECK("visualID") type = pref_str, s = visual_name;
19033N/A CHECK("installColormap") type = pref_bool, b = p->install_cmap_p;
19033N/A CHECK("verbose") type = pref_bool, b = p->verbose_p;
19033N/A@@ -1066,6 +1070,8 @@ load_init_file (Display *dpy, saver_preferences *p)
19033N/A p->lock_timeout = 1000 * get_minutes_resource (dpy, "lockTimeout", "Time");
19033N/A p->cycle = 1000 * get_minutes_resource (dpy, "cycle", "Time");
19033N/A p->passwd_timeout = 1000 * get_seconds_resource (dpy, "passwdTimeout", "Time");
19033N/A+ /* bugid 5077981 */
19033N/A+ p->unlock_timeout_p = get_boolean_resource (dpy, "passwdTimeoutEnabled", "Boolean");
19033N/A p->pointer_timeout = 1000 * get_seconds_resource (dpy, "pointerPollTime", "Time");
19033N/A p->pointer_hysteresis = get_integer_resource (dpy, "pointerHysteresis","Integer");
19033N/A p->notice_events_timeout = 1000*get_seconds_resource(dpy,
19033N/Adiff --git xscreensaver-5.12/driver/types.h xscreensaver-5.12/driver/types.h
19033N/A--- xscreensaver-5.12/driver/types.h
19033N/A+++ xscreensaver-5.12/driver/types.h
19033N/A@@ -77,6 +77,8 @@ struct saver_preferences {
19033N/A Bool xsync_p; /* whether XSynchronize has been called */
19033N/A
19033N/A Bool lock_p; /* whether to lock as well as save */
19033N/A+ Bool unlock_timeout_p; /* whether to timeout unlock dialog */
19033N/A+ /* bugid 5077981 */
19033N/A
19033N/A Bool fade_p; /* whether to fade to black, if possible */
19033N/A Bool unfade_p; /* whether to fade from black, if possible */
19033N/Adiff --git xscreensaver-5.12/driver/xscreensaver-demo.glade2 xscreensaver-5.12/driver/xscreensaver-demo.glade2
19033N/A--- xscreensaver-5.12/driver/xscreensaver-demo.glade2
19033N/A+++ xscreensaver-5.12/driver/xscreensaver-demo.glade2
19033N/A@@ -165,7 +165,7 @@
19033N/A <child>
19033N/A <widget class="GtkTable" id="blanking_table">
19033N/A <property name="visible">True</property>
19033N/A- <property name="n_rows">3</property>
19033N/A+ <property name="n_rows">4</property>
19033N/A <property name="n_columns">4</property>
19033N/A <property name="homogeneous">False</property>
19033N/A <property name="row_spacing">2</property>
19033N/A@@ -466,6 +466,102 @@
19033N/A <property name="y_options"></property>
19033N/A </packing>
19033N/A </child>
19033N/A+
19033N/A+ <child>
19033N/A+ <widget class="GtkSpinButton" id="pwd_spinbutton">
19033N/A+ <property name="visible">True</property>
19033N/A+ <property name="tooltip" translatable="yes">How long the unlock dialog waits for input before disappearing.</property>
19033N/A+ <property name="can_focus">True</property>
19033N/A+ <property name="climb_rate">15</property>
19033N/A+ <property name="digits">0</property>
19033N/A+ <property name="numeric">True</property>
19033N/A+ <property name="update_policy">GTK_UPDATE_ALWAYS</property>
19033N/A+ <property name="snap_to_ticks">True</property>
19033N/A+ <property name="wrap">False</property>
19033N/A+ <property name="adjustment">0 0 720 1 15 15</property>
19033N/A+ <accessibility>
19033N/A+ <atkrelation target="pwd_button" type="controlled-by"/>
19033N/A+ <atkrelation target="pwd_button" type="labelled-by"/>
19033N/A+ <atkrelation target="pwd_mlabel" type="labelled-by"/>
19033N/A+ </accessibility>
19033N/A+ <signal name="activate" handler="pref_changed_cb"/>
19033N/A+ <signal name="focus_out_event" handler="pref_changed_event_cb"/>
19033N/A+ <signal name="value_changed" handler="pref_changed_cb"/>
19033N/A+ </widget>
19033N/A+ <packing>
19033N/A+ <property name="left_attach">2</property>
19033N/A+ <property name="right_attach">3</property>
19033N/A+ <property name="top_attach">3</property>
19033N/A+ <property name="bottom_attach">4</property>
19033N/A+ <property name="y_padding">10</property>
19033N/A+ <property name="x_options">fill</property>
19033N/A+ <property name="y_options"></property>
19033N/A+ </packing>
19033N/A+ </child>
19033N/A+
19033N/A+ <child>
19033N/A+ <widget class="GtkEventBox" id="pwd_button_eventbox">
19033N/A+ <property name="visible">True</property>
19033N/A+ <property name="tooltip" translatable="yes">Whether the unlock dialog box should disappear after a timeout.</property>
19033N/A+ <property name="visible_window">True</property>
19033N/A+ <property name="above_child">False</property>
19033N/A+
19033N/A+ <child>
19033N/A+ <widget class="GtkCheckButton" id="pwd_button">
19033N/A+ <property name="visible">True</property>
19033N/A+ <property name="can_focus">True</property>
19033N/A+ <property name="label" translatable="yes">Timeout _Unlock After</property>
19033N/A+ <property name="use_underline">True</property>
19033N/A+ <property name="relief">GTK_RELIEF_NORMAL</property>
19033N/A+ <property name="focus_on_click">True</property>
19033N/A+ <property name="active">False</property>
19033N/A+ <property name="inconsistent">False</property>
19033N/A+ <property name="draw_indicator">True</property>
19033N/A+ <accessibility>
19033N/A+ <atkrelation target="pwd_spinbutton" type="controller-for"/>
19033N/A+ <atkrelation target="pwd_spinbutton" type="label-for"/>
19033N/A+ <atkrelation target="pwd_spinbutton" type="flows-to"/>
19033N/A+ </accessibility>
19033N/A+ <signal name="toggled" handler="pref_changed_cb"/>
19033N/A+ </widget>
19033N/A+ </child>
19033N/A+ </widget>
19033N/A+ <packing>
19033N/A+ <property name="left_attach">0</property>
19033N/A+ <property name="right_attach">2</property>
19033N/A+ <property name="top_attach">3</property>
19033N/A+ <property name="bottom_attach">4</property>
19033N/A+ <property name="x_options">fill</property>
19033N/A+ <property name="y_options">fill</property>
19033N/A+ </packing>
19033N/A+ </child>
19033N/A+
19033N/A+ <child>
19033N/A+ <widget class="GtkLabel" id="pwd_mlabel">
19033N/A+ <property name="visible">True</property>
19033N/A+ <property name="label" translatable="yes">minutes</property>
19033N/A+ <property name="use_underline">False</property>
19033N/A+ <property name="use_markup">False</property>
19033N/A+ <property name="justify">GTK_JUSTIFY_LEFT</property>
19033N/A+ <property name="wrap">False</property>
19033N/A+ <property name="selectable">False</property>
19033N/A+ <property name="xalign">0</property>
19033N/A+ <property name="yalign">0.5</property>
19033N/A+ <property name="xpad">8</property>
19033N/A+ <property name="ypad">0</property>
19033N/A+ <accessibility>
19033N/A+ <atkrelation target="pwd_spinbutton" type="label-for"/>
19033N/A+ <atkrelation target="pwd_spinbutton" type="flows-from"/>
19033N/A+ </accessibility>
19033N/A+ </widget>
19033N/A+ <packing>
19033N/A+ <property name="left_attach">3</property>
19033N/A+ <property name="right_attach">4</property>
19033N/A+ <property name="top_attach">3</property>
19033N/A+ <property name="bottom_attach">4</property>
19033N/A+ <property name="y_options"></property>
19033N/A+ </packing>
19033N/A+ </child>
19033N/A </widget>
19033N/A <packing>
19033N/A <property name="left_attach">0</property>
19033N/A