about summary refs log tree commit diff stats
path: root/src/ui
diff options
context:
space:
mode:
authorSimon Effenberg <savar@schuldeigen.de>2015-01-12 11:32:32 +0100
committerSimon Effenberg <savar@schuldeigen.de>2015-01-12 11:32:32 +0100
commit34148e21012289b8ebf4ba5a3e2aa8b65051fd55 (patch)
treee87d91c61d711d5d5f9652a9e60aa01a8e905bc8 /src/ui
parentc7ff3255b8bd4bed2f825255a4fe28940db533b2 (diff)
downloadprofani-tty-34148e21012289b8ebf4ba5a3e2aa8b65051fd55.tar.gz
adding preference option for dynamic input blocking
/inpblock is now having subcommands 'timeout' and 'dynamic'
with:

/inpblock timeout <milliseconds>

and

/inpblock dynamic <on|off>

Defaults are:

/inpblock timeout 500
/inpblock dynamic on

To get the old behavior specify:

/inpblock timeout 20
/inpblock dynamic off

The dynamic mode will block incrementally after something
should be written to the window or after a key was pressed. So pressing
a key would set the timeout to 0ms and after 10 timeouts to the next
bigger one.

Example (with dynamic mode on):

"/inpblock timeout 50"

timeout series:

10x 0ms
10x 10ms (0ms + 10 times since last keypress)
10x 30ms (10ms + 20 times since last keypress)
*x50ms until next key was pressed or
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/console.c7
-rw-r--r--src/ui/core.c5
2 files changed, 11 insertions, 1 deletions
diff --git a/src/ui/console.c b/src/ui/console.c
index d219a175..69abafef 100644
--- a/src/ui/console.c
+++ b/src/ui/console.c
@@ -1182,7 +1182,12 @@ cons_show_chat_prefs(void)
 void
 cons_inpblock_setting(void)
 {
-    cons_show("Input block (/inpblock)       : %d milliseconds", prefs_get_inpblock());
+    cons_show("Input timeout (/inpblock)     : %d milliseconds", prefs_get_inpblock());
+    if (prefs_get_boolean(PREF_INPBLOCK_DYNAMIC)) {
+        cons_show("Input dynamic (/inpblock)     : ON");
+    } else {
+        cons_show("Input dynamic (/inpblock)     : OFF");
+    }
 }
 
 void
diff --git a/src/ui/core.c b/src/ui/core.c
index 3b53b4ed..20db2010 100644
--- a/src/ui/core.c
+++ b/src/ui/core.c
@@ -206,6 +206,11 @@ ui_input_nonblocking(gboolean reset)
     static gint timeout = 0;
     static gint no_input_count = 0;
 
+    if (! prefs_get_boolean(PREF_INPBLOCK_DYNAMIC)) {
+        inp_non_block(prefs_get_inpblock());
+        return;
+    }
+
     if (reset) {
       timeout = 0;
       no_input_count = 0;