X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=driver%2Fdemo-Gtk.c;h=93e5fb3c8a5f587c61c0b3a12549318aa81c6a7d;hb=f8cf5ac7b2f53510f80a0eaf286a25298be17bfe;hp=5259dc5a423a2f77b2956570183e57004794335c;hpb=5f9c47ca98dd43d8f59b7c27d3fde6edfde4fe21;p=xscreensaver diff --git a/driver/demo-Gtk.c b/driver/demo-Gtk.c index 5259dc5a..93e5fb3c 100644 --- a/driver/demo-Gtk.c +++ b/driver/demo-Gtk.c @@ -1,5 +1,5 @@ /* demo-Gtk.c --- implements the interactive demo-mode and options dialogs. - * xscreensaver, Copyright (c) 1993-2008 Jamie Zawinski + * xscreensaver, Copyright (c) 1993-2012 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -1412,19 +1412,32 @@ normalize_directory (const char *path) { s0--; s += 3; - strcpy (s0, s); + /* strcpy (s0, s); */ + memmove(s0, s, strlen(s) + 1); s = s0-1; } } - else if (*s == '/' && !strncmp (s, "/./", 3)) /* delete "/./" */ - strcpy (s, s+2), s--; + else if (*s == '/' && !strncmp (s, "/./", 3)) { /* delete "/./" */ + /* strcpy (s, s+2), s--; */ + memmove(s, s+2, strlen(s+2) + 1); + s--; + } else if (*s == '/' && !strncmp (s, "/.\000", 3)) /* delete "/.$" */ *s = 0, s--; } - for (s = p2; s && *s; s++) /* normalize consecutive slashes */ - while (s[0] == '/' && s[1] == '/') - strcpy (s, s+1); + /* + Normalize consecutive slashes. + Ignore doubled slashes after ":" to avoid mangling URLs. + */ + + for (s = p2; s && *s; s++){ + if (*s == ':') continue; + if (!s[1] || !s[2]) continue; + while (s[1] == '/' && s[2] == '/') + /* strcpy (s+1, s+2); */ + memmove (s+1, s+2, strlen(s+2) + 1); + } /* and strip trailing whitespace for good measure. */ L = strlen(p2); @@ -1548,7 +1561,8 @@ flush_dialog_changes_and_save (state *s) CHECKBOX (p2->lock_p, "lock_button"); MINUTES (&p2->lock_timeout, "lock_spinbutton"); - CHECKBOX (p2->dpms_enabled_p, "dpms_button"); + CHECKBOX (p2->dpms_enabled_p, "dpms_button"); + CHECKBOX (p2->dpms_quickoff_p, "dpms_quickoff_button"); MINUTES (&p2->dpms_standby, "dpms_standby_spinbutton"); MINUTES (&p2->dpms_suspend, "dpms_suspend_spinbutton"); MINUTES (&p2->dpms_off, "dpms_off_spinbutton"); @@ -1592,10 +1606,12 @@ flush_dialog_changes_and_save (state *s) /* Warn if the image directory doesn't exist, when: - not being warned before - image directory is changed and the directory doesn't exist + - image directory does not begin with http:// */ if (p2->image_directory && *p2->image_directory && !directory_p (p2->image_directory) && + strncmp(p2->image_directory, "http://", 6) && ( !already_warned_about_missing_image_directory || ( p->image_directory && *p->image_directory && @@ -1647,10 +1663,11 @@ flush_dialog_changes_and_save (state *s) COPY(lock_p, "lock_p"); COPY(lock_timeout, "lock_timeout"); - COPY(dpms_enabled_p, "dpms_enabled_p"); - COPY(dpms_standby, "dpms_standby"); - COPY(dpms_suspend, "dpms_suspend"); - COPY(dpms_off, "dpms_off"); + COPY(dpms_enabled_p, "dpms_enabled_p"); + COPY(dpms_quickoff_p, "dpms_quickoff_enabled_p"); + COPY(dpms_standby, "dpms_standby"); + COPY(dpms_suspend, "dpms_suspend"); + COPY(dpms_off, "dpms_off"); #if 0 COPY(verbose_p, "verbose_p"); @@ -2064,7 +2081,8 @@ store_image_directory (GtkWidget *button, gpointer user_data) if (p->image_directory && !strcmp(p->image_directory, path)) return; /* no change */ - if (!directory_p (path)) + /* No warning for URLs. */ + if ((!directory_p (path)) && strncmp(path, "http://", 6)) { char b[255]; sprintf (b, _("Error:\n\n" "Directory does not exist: \"%s\"\n"), path); @@ -2795,6 +2813,7 @@ populate_prefs_page (state *s) TOGGLE_ACTIVE ("splash_button", p->splash_p); #endif TOGGLE_ACTIVE ("dpms_button", p->dpms_enabled_p); + TOGGLE_ACTIVE ("dpms_quickoff_button", p->dpms_quickoff_p); TOGGLE_ACTIVE ("grab_desk_button", p->grab_desktop_p); TOGGLE_ACTIVE ("grab_video_button", p->grab_video_p); TOGGLE_ACTIVE ("grab_image_button", p->random_image_p); @@ -2898,8 +2917,11 @@ populate_prefs_page (state *s) /* DPMS */ +dpms_supported=1; SENSITIZE ("dpms_frame", dpms_supported); SENSITIZE ("dpms_button", dpms_supported); + SENSITIZE ("dpms_quickoff_button", dpms_supported); + SENSITIZE ("dpms_standby_label", dpms_supported && p->dpms_enabled_p); SENSITIZE ("dpms_standby_mlabel", dpms_supported && p->dpms_enabled_p); SENSITIZE ("dpms_standby_spinbutton", dpms_supported && p->dpms_enabled_p);