summaryrefslogtreecommitdiff
path: root/src/fe-common
diff options
context:
space:
mode:
Diffstat (limited to 'src/fe-common')
-rw-r--r--src/fe-common/core/fe-modules.c19
-rw-r--r--src/fe-common/core/keyboard.c8
-rw-r--r--src/fe-common/core/window-items.c10
3 files changed, 20 insertions, 17 deletions
diff --git a/src/fe-common/core/fe-modules.c b/src/fe-common/core/fe-modules.c
index 4a13f668..df97ceb1 100644
--- a/src/fe-common/core/fe-modules.c
+++ b/src/fe-common/core/fe-modules.c
@@ -195,6 +195,8 @@ static void cmd_unload(const char *data)
MODULE_FILE_REC *file;
char *rootmodule, *submodule;
void *free_arg;
+ GSList *tmp;
+ int all_dynamic;
g_return_if_fail(data != NULL);
@@ -204,14 +206,21 @@ static void cmd_unload(const char *data)
module = module_find(rootmodule);
if (module != NULL) {
- if (*submodule == '\0')
- module_unload(module);
+ if (*submodule == '\0') {
+ all_dynamic = 1;
+ for (tmp = module->files; tmp != NULL; tmp = tmp->next)
+ all_dynamic &= !MODULE_IS_STATIC((MODULE_FILE_REC*) tmp->data);
+ if (all_dynamic)
+ module_unload(module);
+ }
else {
file = module_file_find(module, submodule);
- if (file != NULL)
- module_file_unload(file);
+ if (file != NULL) {
+ if (!MODULE_IS_STATIC(file))
+ module_file_unload(file);
+ }
else
- module = NULL;
+ module = NULL;
}
}
diff --git a/src/fe-common/core/keyboard.c b/src/fe-common/core/keyboard.c
index 67a8d09b..00454401 100644
--- a/src/fe-common/core/keyboard.c
+++ b/src/fe-common/core/keyboard.c
@@ -374,8 +374,8 @@ static void key_states_rescan(void)
memset(used_keys, 0, sizeof(used_keys));
- g_tree_traverse(key_states, (GTraverseFunc) key_state_destroy,
- G_IN_ORDER, NULL);
+ g_tree_foreach(key_states, (GTraverseFunc) key_state_destroy,
+ NULL);
g_tree_destroy(key_states);
key_states = g_tree_new((GCompareFunc) strcmp);
@@ -884,8 +884,8 @@ void keyboard_deinit(void)
g_hash_table_destroy(keys);
g_hash_table_destroy(default_keys);
- g_tree_traverse(key_states, (GTraverseFunc) key_state_destroy,
- G_IN_ORDER, NULL);
+ g_tree_foreach(key_states, (GTraverseFunc) key_state_destroy,
+ NULL);
g_tree_destroy(key_states);
signal_remove("irssi init read settings", (SIGNAL_FUNC) read_keyboard_config);
diff --git a/src/fe-common/core/window-items.c b/src/fe-common/core/window-items.c
index 303a80db..c29db9e6 100644
--- a/src/fe-common/core/window-items.c
+++ b/src/fe-common/core/window-items.c
@@ -218,16 +218,10 @@ WI_ITEM_REC *window_item_find_window(WINDOW_REC *window,
WI_ITEM_REC *rec = tmp->data;
if ((server == NULL || rec->server == server) &&
- g_ascii_strcasecmp(name, rec->visible_name) == 0)
+ (g_ascii_strcasecmp(name, rec->visible_name) == 0
+ || (rec->name && g_ascii_strcasecmp(name, rec->name) == 0)))
return rec;
}
-
- /* try with channel name too, it's not necessarily
- same as visible_name (!channels) */
- channel = channel_find(server, name);
- if (channel != NULL && window_item_window(channel) == window)
- return (WI_ITEM_REC *) channel;
-
return NULL;
}