move expand_tilde to ob_expand_tilde in openbox.c to make it global.
use it on the command read in the menu parsing for pipe menus. use it on the command read for execute/restart actions.
This commit is contained in:
parent
43c5c01d33
commit
b543af60b3
5 changed files with 21 additions and 15 deletions
|
@ -730,8 +730,11 @@ ObAction *action_parse(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node)
|
|||
if (parse_attr_string("name", node, &actname)) {
|
||||
if ((act = action_from_string(actname))) {
|
||||
if (act->func == action_execute || act->func == action_restart) {
|
||||
if ((n = parse_find_node("execute", node->xmlChildrenNode)))
|
||||
act->data.execute.path = parse_string(doc, n);
|
||||
if ((n = parse_find_node("execute", node->xmlChildrenNode))) {
|
||||
gchar *s = parse_string(doc, n);
|
||||
act->data.execute.path = expand_tilde(s);
|
||||
g_free(s);
|
||||
}
|
||||
} else if (act->func == action_showmenu) {
|
||||
if ((n = parse_find_node("menu", node->xmlChildrenNode)))
|
||||
act->data.showmenu.name = parse_string(doc, n);
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
#include "prop.h"
|
||||
#include "translate.h"
|
||||
#include "parser/parse.h"
|
||||
#include "openbox.h"
|
||||
|
||||
gboolean config_focus_new;
|
||||
gboolean config_focus_follow;
|
||||
|
@ -39,16 +40,6 @@ GSList *config_menu_files;
|
|||
gint config_resist_win;
|
||||
gint config_resist_edge;
|
||||
|
||||
gchar *expand_tilde(const gchar *f)
|
||||
{
|
||||
if (!f)
|
||||
return NULL;
|
||||
else if (f[0] != '~')
|
||||
return g_strdup(f);
|
||||
else
|
||||
return g_strconcat(g_get_home_dir(), f+1, NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
<keybind key="C-x">
|
||||
|
@ -228,7 +219,7 @@ static void parse_theme(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
|
|||
|
||||
g_free(config_theme);
|
||||
c = parse_string(doc, n);
|
||||
config_theme = expand_tilde(c);
|
||||
config_theme = ob_expand_tilde(c);
|
||||
g_free(c);
|
||||
}
|
||||
if ((n = parse_find_node("titleLayout", node))) {
|
||||
|
@ -343,7 +334,7 @@ static void parse_menu(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node, void *d)
|
|||
|
||||
c = parse_string(doc, node);
|
||||
config_menu_files = g_slist_append(config_menu_files,
|
||||
expand_tilde(c));
|
||||
ob_expand_tilde(c));
|
||||
g_free(c);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -203,7 +203,7 @@ static void parse_menu(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
|
|||
|
||||
if ((menu = menu_new(name, title, NULL))) {
|
||||
if (parse_attr_string("execute", node, &script)) {
|
||||
menu->execute = g_strdup(script);
|
||||
menu->execute = ob_expand_tilde(script);
|
||||
} else {
|
||||
state->menus = g_slist_prepend(state->menus, menu);
|
||||
parse_tree(i, doc, node->xmlChildrenNode);
|
||||
|
|
|
@ -414,3 +414,13 @@ ObState ob_state()
|
|||
{
|
||||
return state;
|
||||
}
|
||||
|
||||
gchar *ob_expand_tilde(const gchar *f)
|
||||
{
|
||||
if (!f)
|
||||
return NULL;
|
||||
else if (f[0] != '~')
|
||||
return g_strdup(f);
|
||||
else
|
||||
return g_strconcat(g_get_home_dir(), f+1, NULL);
|
||||
}
|
||||
|
|
|
@ -48,4 +48,6 @@ Cursor ob_cursor(ObCursor cursor);
|
|||
|
||||
KeyCode ob_keycode(ObKey key);
|
||||
|
||||
gchar *ob_expand_tilde(const gchar *f);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue