kwo pushed a commit to branch master. http://git.enlightenment.org/e16/e16.git/commit/?id=d80bf8305c52a1bb9dde01d161003a2fb89ed013
commit d80bf8305c52a1bb9dde01d161003a2fb89ed013 Author: Kim Woelders <k...@woelders.dk> Date: Sun May 3 09:58:10 2020 +0200 groups.c: Enable popping up ewin group configuration dialogs from ipc --- src/groups.c | 37 +++++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/src/groups.c b/src/groups.c index 791994a1..9a21dc6b 100644 --- a/src/groups.c +++ b/src/groups.c @@ -776,14 +776,14 @@ static const DialogDef DlgGroupChoose = { }; static void -_EwinGroupChooseDialog(int action) +_EwinGroupChooseDialog(EWin * ewin, int action) { int group_sel; GroupSelDlgData gsdd, *dd = &gsdd; - dd->ewin = GetContextEwin(); - if (!dd->ewin) + if (!ewin) return; + dd->ewin = ewin; dd->action = action; dd->cur_grp = dd->prv_grp = 0; @@ -1000,11 +1000,8 @@ static const DialogDef DlgGroups = { }; static void -_EwinGroupsConfig(void) +_EwinGroupsConfig(EWin * ewin) { - EWin *ewin; - - ewin = GetContextEwin(); if (!ewin) return; @@ -1119,27 +1116,40 @@ _GroupsConfigure(const char *params) char s[128]; const char *p; int l; + EWin *ewin; p = params; l = 0; s[0] = '\0'; sscanf(p, "%100s %n", s, &l); + p += l; + + ewin = GetContextEwin(); + if (*p) + { + ewin = EwinFindByExpr(p); + if (!ewin) + { + IpcPrintf("Error: no such window: %s\n", p); + return; + } + } if (!strcmp(s, "group")) { - _EwinGroupsConfig(); + _EwinGroupsConfig(ewin); } else if (!strcmp(s, "add")) { - _EwinGroupChooseDialog(GROUP_OP_ADD); + _EwinGroupChooseDialog(ewin, GROUP_OP_ADD); } else if (!strcmp(s, "del")) { - _EwinGroupChooseDialog(GROUP_OP_DEL); + _EwinGroupChooseDialog(ewin, GROUP_OP_DEL); } else if (!strcmp(s, "break")) { - _EwinGroupChooseDialog(GROUP_OP_BREAK); + _EwinGroupChooseDialog(ewin, GROUP_OP_BREAK); } } #endif /* ENABLE_DIALOGS */ @@ -1393,7 +1403,10 @@ static const IpcItem GroupsIpcArray[] = { IPC_GroupsConfig, "groups", "grp", "Configure window groups", - " groups cfg Configure groups\n"} + " groups cfg group <windowid> Configure windows groups\n" + " groups cfg add <windowid> Add window to group\n" + " groups cfg del <windowid> Remove window from group\n" + " groups cfg break <windowid> Destroy one of the windows groups\n"} , { IPC_GroupOps, --