On 16/01/12 08:31, Rodolfo kix Garcia wrote:

> On 16/01/12 06:56, Carlos R. Mafra wrote:
> 
>> On Tue, 10 Jan 2012 at  0:34:53 +0100, Rodolfo kix Garcia wrote:
>>>
>>> Why we can change the name using right click on the Clip. Why? because
>>> the clip is using the functions of WINGs. Can we change the menu
>>> functions to WINGs?... probably yes, but I don't know. Probably the full
>>> code of menu should be re-written.
>>>
>>> Can somebody put more light here? Ideas?
>>
>> I've just finished a dirty hack to deal with this using WINGs.
>>
>> I mimicked what happens when you use the Clip, so when you left-click
>> the menu entry holding the Ctrl key, the same input dialog appears
>> asking for the new name. Surprisingly, the overall patch removes 
>> ~60 lines of code (because you can get rid of editEntry).
>>
>> Right now the dialog appears under the menu (because both appear 
>> in the middle of the screen). Perhaps it will not be difficult to
>> make the dialog appear shifted to the right or left, but I haven't
>> looked at that now. I just wanted a proof of concept.
>>
>> What do people think about changing this behavior? Instead of
>> editing the menu entry directly and facing the deadkey limitations of
>> XLookupString() like Rodolfo pointed out or getting an input dialog 
>> like a rename via the Clip?
> 
> 
> IMO the new code is better than the current code, and we remove "low-level" 
> code (X11 functions like XGrab,...) , therefore I like this change.
> 
>>
>> I tend to choose the one that works in all cäsés.
>>
>> But I might be missing something too. Comments?
>>
> [snip]
>> +                    char buffer[128];
> 
> 
> I don't like this things, I prefer "char buffer[DOCK_NAME_LEN]" and set 
> DOCK_NAME_LEN in dock.h Probably we should find if this length is used in 
> other places in the code.
> 
>> +                    char *name;
>> +                    int wks_no = entry_no - 2;
>> +
>> +                    name = wstrdup(scr->workspaces[wks_no]->name);
>> +                    snprintf(buffer, sizeof(buffer), _("Type the name for 
>> workspace %i:"), wks_no + 1);
> 
> 
> probably this is wrong, Is too early and I wake up 5 seconds ago but probably 
> if the buffer length is 128 we have a buffer overflow. Correct:
> 
> snprintf(buffer, sizeof(buffer) -1, _("Type the name for workspace %i:"), 
> wks_no + 1);
> 
> Or using the previous stuff:
> 
> snprintf(buffer, DOCK_NAME_LEN -1, _("Type the name for workspace %i:"), 
> wks_no + 1);

buffer[DOCK_NAME_LEN -1] = '/0';

Can help too.

>> +
>> +                    if (wInputDialog(scr, _("Rename Workspace"), buffer, 
>> &name))
>> +                            wWorkspaceRename(scr, wks_no, name);
>> +
>> +                    if (name)
>> +                            wfree(name);
>> +
>>                      goto byebye;
>>              } else if (bev->state & ControlMask) {
>>                      goto byebye;
> 
> 
> byebye: :-)
> 
> Cheers,
> kix



-- 
||// //\\// Rodolfo "kix" Garcia
||\\// //\\ http://www.kix.es/


--
To unsubscribe, send mail to wmaker-dev-unsubscr...@lists.windowmaker.org.

Reply via email to