gnome-control-center r8770 - trunk/typing-break



Author: jensg
Date: Fri Jun 27 16:52:18 2008
New Revision: 8770
URL: http://svn.gnome.org/viewvc/gnome-control-center?rev=8770&view=rev

Log:
2008-06-27  Jens Granseuer  <jensgr gmx net>

	Based on a patch by: Andrey Gusev <ronne list ru>

	* drwright.c: (break_window_postpone_cb): when postponing a break
	don't go right back to warn state, but award some bonus time according
	to the already elapsed break time (bug #133295)


Modified:
   trunk/typing-break/ChangeLog
   trunk/typing-break/drwright.c

Modified: trunk/typing-break/drwright.c
==============================================================================
--- trunk/typing-break/drwright.c	(original)
+++ trunk/typing-break/drwright.c	Fri Jun 27 16:52:18 2008
@@ -656,11 +656,15 @@
 	dr->state = STATE_TYPE;
 	dr->break_window = NULL;
 
-	elapsed_time = g_timer_elapsed (dr->timer, NULL) + dr->save_last_time;
+	elapsed_time = g_timer_elapsed (dr->timer, NULL);
 
-	if (elapsed_time >= dr->type_time) {
-		/* time is expired, but break was postponed */
-		dr->save_last_time = dr->type_time - dr->warn_time;
+	if (elapsed_time + dr->save_last_time >= dr->type_time) {
+		/* Typing time has expired, but break was postponed.
+		 * We'll warn again in (elapsed * sqrt (typing_time))^2 */
+		gfloat postpone_time = (((float) elapsed_time) / dr->break_time)
+					* sqrt (dr->type_time);
+		postpone_time *= postpone_time;
+		dr->save_last_time = dr->type_time - MAX (dr->warn_time, (gint) postpone_time);
 	}
 
 	g_timer_start (dr->timer);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]