int lag, lag_unknown;
server = active_win == NULL ? NULL : active_win->active_server;
- lag = get_lag(server, &lag_unknown)/10;
+ lag = get_lag(server, &lag_unknown);
- if (lag <= 0 || lag < settings_get_int("lag_min_show")) {
+ if (lag <= 0 || lag < settings_get_time("lag_min_show")) {
/* don't print the lag item */
if (get_size_only)
item->min_size = item->max_size = 0;
return;
}
+ lag /= 10;
last_lag = lag;
last_lag_unknown = lag_unknown;
server = active_win == NULL ? NULL : active_win->active_server;
lag = get_lag(server, &lag_unknown)/10;
- if (lag < settings_get_int("lag_min_show"))
- lag = 0;
+ if (lag < settings_get_time("lag_min_show"))
+ lag = 0;
+ else
+ lag /= 10;
if (lag != last_lag || (lag > 0 && lag_unknown != last_lag_unknown))
statusbar_items_redraw("lag");
{
GUI_ENTRY_REC *rec;
- rec = g_hash_table_lookup(input_entries, item);
+ rec = g_hash_table_lookup(input_entries, item->bar->config->name);
if (rec == NULL) {
rec = gui_entry_create(item->xpos, item->bar->real_ypos,
- item->size,
- settings_get_bool("term_utf8"));
+ item->size, term_type == TERM_TYPE_UTF8);
gui_entry_set_active(rec);
- g_hash_table_insert(input_entries, item, rec);
+ g_hash_table_insert(input_entries,
+ g_strdup(item->bar->config->name), rec);
}
if (get_size_only) {
gui_entry_redraw(rec); /* FIXME: this is only necessary with ^L.. */
}
-static void sig_statusbar_item_destroyed(SBAR_ITEM_REC *item)
-{
- GUI_ENTRY_REC *rec;
-
- rec = g_hash_table_lookup(input_entries, item);
- if (rec != NULL) {
- gui_entry_destroy(rec);
- g_hash_table_remove(input_entries, item);
- }
-}
-
static void read_settings(void)
{
- if (active_entry != NULL) {
- gui_entry_set_utf8(active_entry,
- settings_get_bool("term_utf8"));
- }
+ if (active_entry != NULL)
+ gui_entry_set_utf8(active_entry, term_type == TERM_TYPE_UTF8);
}
void statusbar_items_init(void)
{
- settings_add_int("misc", "lag_min_show", 100);
+ settings_add_time("misc", "lag_min_show", "1sec");
settings_add_bool("lookandfeel", "actlist_moves", FALSE);
statusbar_item_register("window", NULL, item_window_active);
statusbar_item_register("window_empty", NULL, item_window_empty);
statusbar_item_register("prompt", NULL, item_window_active);
statusbar_item_register("prompt_empty", NULL, item_window_empty);
+ statusbar_item_register("topic", NULL, item_window_active);
+ statusbar_item_register("topic_empty", NULL, item_window_empty);
statusbar_item_register("lag", NULL, item_lag);
statusbar_item_register("act", NULL, item_act);
statusbar_item_register("more", NULL, item_more);
lag_timeout_tag = g_timeout_add(5000, (GSourceFunc) sig_lag_timeout, NULL);
/* input */
- input_entries = g_hash_table_new((GHashFunc) g_direct_hash,
- (GCompareFunc) g_direct_equal);
- signal_add("statusbar item destroyed", (SIGNAL_FUNC) sig_statusbar_item_destroyed);
+ input_entries = g_hash_table_new((GHashFunc) g_str_hash,
+ (GCompareFunc) g_str_equal);
read_settings();
- signal_add("setup changed", (SIGNAL_FUNC) read_settings);
+ signal_add_last("setup changed", (SIGNAL_FUNC) read_settings);
}
void statusbar_items_deinit(void)
g_source_remove(lag_timeout_tag);
/* input */
- signal_remove("statusbar item destroyed", (SIGNAL_FUNC) sig_statusbar_item_destroyed);
- g_hash_table_destroy(input_entries);
+ g_hash_table_foreach(input_entries, (GHFunc) g_free, NULL);
+ g_hash_table_destroy(input_entries);
signal_remove("setup changed", (SIGNAL_FUNC) read_settings);
}