diff options
author | Timo Sirainen <cras@irssi.org> | 2002-03-24 19:06:47 +0000 |
---|---|---|
committer | cras <cras@dbcabf3a-b0e7-0310-adc4-f8d773084564> | 2002-03-24 19:06:47 +0000 |
commit | 40bdfc4d701f7dbe0f0fd097a41ee033679abcb2 (patch) | |
tree | 92daf4c4a490298613edc65b57bd8faaa90355d4 /src/fe-text/statusbar-items.c | |
parent | 32815dfbcb8aee9317372832e5a6f0cacb52c8b0 (diff) | |
download | irssi-40bdfc4d701f7dbe0f0fd097a41ee033679abcb2.zip |
Input lines are now never destroyed and they're associated to statusbar
name, so scripts can now do any statusbar changes without input line being
cleared.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2643 dbcabf3a-b0e7-0310-adc4-f8d773084564
Diffstat (limited to 'src/fe-text/statusbar-items.c')
-rw-r--r-- | src/fe-text/statusbar-items.c | 25 |
1 files changed, 7 insertions, 18 deletions
diff --git a/src/fe-text/statusbar-items.c b/src/fe-text/statusbar-items.c index fc1d526f..fe74a748 100644 --- a/src/fe-text/statusbar-items.c +++ b/src/fe-text/statusbar-items.c @@ -344,12 +344,13 @@ static void item_input(SBAR_ITEM_REC *item, int get_size_only) { GUI_ENTRY_REC *rec; - rec = g_hash_table_lookup(input_entries, item->bar); + 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, term_type == TERM_TYPE_UTF8); gui_entry_set_active(rec); - g_hash_table_insert(input_entries, item->bar, rec); + g_hash_table_insert(input_entries, + g_strdup(item->bar->config->name), rec); } if (get_size_only) { @@ -363,17 +364,6 @@ static void item_input(SBAR_ITEM_REC *item, int get_size_only) gui_entry_redraw(rec); /* FIXME: this is only necessary with ^L.. */ } -static void sig_statusbar_destroyed(STATUSBAR_REC *bar) -{ - GUI_ENTRY_REC *rec; - - rec = g_hash_table_lookup(input_entries, bar); - if (rec != NULL) { - gui_entry_destroy(rec); - g_hash_table_remove(input_entries, bar); - } -} - static void read_settings(void) { if (active_entry != NULL) @@ -418,9 +408,8 @@ void statusbar_items_init(void) 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 destroyed", (SIGNAL_FUNC) sig_statusbar_destroyed); + input_entries = g_hash_table_new((GHashFunc) g_str_hash, + (GCompareFunc) g_str_equal); read_settings(); signal_add_last("setup changed", (SIGNAL_FUNC) read_settings); @@ -450,8 +439,8 @@ void statusbar_items_deinit(void) g_source_remove(lag_timeout_tag); /* input */ - signal_remove("statusbar destroyed", (SIGNAL_FUNC) sig_statusbar_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); } |