1
0
mirror of https://github.com/irssi/irssi.git synced 2024-10-27 05:20:20 -04:00

A bit kludge fix for perl statusbar items breaking prompt changes at

startup. Now the entry isn't destroyed until the statusbar is, and there can
be only one entry per statusbar (well, who would want more anyway :)


git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2447 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
Timo Sirainen 2002-02-15 09:31:25 +00:00 committed by cras
parent 6eaf161199
commit 612c061605

View File

@ -344,13 +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);
rec = g_hash_table_lookup(input_entries, item->bar);
if (rec == NULL) {
rec = gui_entry_create(item->xpos, item->bar->real_ypos,
item->size,
settings_get_bool("term_utf8"));
gui_entry_set_active(rec);
g_hash_table_insert(input_entries, item, rec);
g_hash_table_insert(input_entries, item->bar, rec);
}
if (get_size_only) {
@ -364,14 +364,14 @@ 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_item_destroyed(SBAR_ITEM_REC *item)
static void sig_statusbar_destroyed(STATUSBAR_REC *bar)
{
GUI_ENTRY_REC *rec;
rec = g_hash_table_lookup(input_entries, item);
rec = g_hash_table_lookup(input_entries, bar);
if (rec != NULL) {
gui_entry_destroy(rec);
g_hash_table_remove(input_entries, item);
g_hash_table_remove(input_entries, bar);
}
}
@ -421,7 +421,7 @@ void statusbar_items_init(void)
/* 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);
signal_add("statusbar destroyed", (SIGNAL_FUNC) sig_statusbar_destroyed);
read_settings();
signal_add("setup changed", (SIGNAL_FUNC) read_settings);
@ -451,7 +451,7 @@ void statusbar_items_deinit(void)
g_source_remove(lag_timeout_tag);
/* input */
signal_remove("statusbar item destroyed", (SIGNAL_FUNC) sig_statusbar_item_destroyed);
signal_remove("statusbar destroyed", (SIGNAL_FUNC) sig_statusbar_destroyed);
g_hash_table_destroy(input_entries);
signal_remove("setup changed", (SIGNAL_FUNC) read_settings);