mirror of
https://github.com/gryf/wmaker.git
synced 2025-12-19 04:20:27 +01:00
Factorize duplicate run command code
Run command from the menu and run command from the key shortcut are from two different codes. Merge them into one function instead.
This commit is contained in:
committed by
Carlos R. Mafra
parent
14d1b8197a
commit
630e9292c2
16
src/event.c
16
src/event.c
@@ -1852,21 +1852,7 @@ static void handleKeyPress(XEvent * event)
|
||||
|
||||
case WKBD_RUN:
|
||||
{
|
||||
char *cmdline;
|
||||
|
||||
cmdline = ExpandOptions(scr, _("exec %A(Run,Type command to run:)"));
|
||||
|
||||
if (cmdline) {
|
||||
XGrabPointer(dpy, scr->root_win, True, 0,
|
||||
GrabModeAsync, GrabModeAsync, None, wPreferences.cursor[WCUR_WAIT], CurrentTime);
|
||||
XSync(dpy, False);
|
||||
|
||||
ExecuteShellCommand(scr, cmdline);
|
||||
wfree(cmdline);
|
||||
|
||||
XUngrabPointer(dpy, CurrentTime);
|
||||
XSync(dpy, False);
|
||||
}
|
||||
ExecuteInputCommand(scr, _("exec %A(Run, Type command:)"));
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
18
src/misc.c
18
src/misc.c
@@ -679,6 +679,24 @@ char *ExpandOptions(WScreen *scr, const char *cmdline)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void ExecuteInputCommand(WScreen *scr, const char *cmdline)
|
||||
{
|
||||
char *cmd;
|
||||
|
||||
cmd = ExpandOptions(scr, cmdline);
|
||||
if (cmd) {
|
||||
XGrabPointer(dpy, scr->root_win, True, 0,
|
||||
GrabModeAsync, GrabModeAsync, None, wPreferences.cursor[WCUR_WAIT], CurrentTime);
|
||||
XSync(dpy, False);
|
||||
|
||||
ExecuteShellCommand(scr, cmd);
|
||||
wfree(cmd);
|
||||
|
||||
XUngrabPointer(dpy, CurrentTime);
|
||||
XSync(dpy, False);
|
||||
}
|
||||
}
|
||||
|
||||
void ParseWindowName(WMPropList *value, char **winstance, char **wclass, const char *where)
|
||||
{
|
||||
char *name;
|
||||
|
||||
@@ -45,6 +45,7 @@ void SendHelperMessage(WScreen *scr, char type, int workspace, const char *msg);
|
||||
char *ShrinkString(WMFont *font, const char *string, int width);
|
||||
char *FindImage(const char *paths, const char *file);
|
||||
char *ExpandOptions(WScreen * scr, const char *cmdline);
|
||||
void ExecuteInputCommand(WScreen *scr, const char *cmdline);
|
||||
char *GetShortcutString(const char *text);
|
||||
char *GetShortcutKey(WShortKey key);
|
||||
char *EscapeWM_CLASS(const char *name, const char *class);
|
||||
|
||||
@@ -148,20 +148,7 @@ static Shortcut *shortcutList = NULL;
|
||||
|
||||
static void execCommand(WMenu * menu, WMenuEntry * entry)
|
||||
{
|
||||
char *cmdline;
|
||||
|
||||
cmdline = ExpandOptions(menu->frame->screen_ptr, (char *)entry->clientdata);
|
||||
|
||||
XGrabPointer(dpy, menu->frame->screen_ptr->root_win, True, 0,
|
||||
GrabModeAsync, GrabModeAsync, None, wPreferences.cursor[WCUR_WAIT], CurrentTime);
|
||||
XSync(dpy, 0);
|
||||
|
||||
if (cmdline) {
|
||||
ExecuteShellCommand(menu->frame->screen_ptr, cmdline);
|
||||
wfree(cmdline);
|
||||
}
|
||||
XUngrabPointer(dpy, CurrentTime);
|
||||
XSync(dpy, 0);
|
||||
ExecuteInputCommand(menu->frame->screen_ptr, (char *)entry->clientdata);
|
||||
}
|
||||
|
||||
static void exitCommand(WMenu * menu, WMenuEntry * entry)
|
||||
|
||||
Reference in New Issue
Block a user