[EXT] Re: XWin copy/paste succeeds on Windows 7, crashes on Windows 11 Enterprise.

Brian Inglis Brian.Inglis@Shaw.ca
Mon Nov 6 18:54:41 GMT 2023


On 2023-11-06 11:33, Stone, Timothy M via Cygwin wrote:
>> On 03/11/2023 20:17, Stone, Timothy M via Cygwin wrote:
>>> I'm having a really hard time debugging this issue.
>>> If I use the exact same version of cygwin and XWin, exact same code,
>>> exact same Motif GUI app...
>>> I find that when I try to use copy/paste functionality in
>>> TextFieldWidgets:
>>>     *Cut/Copy/Paste works perfectly on Windows 7 Professional
>>>     *Cut/Copy/Paste does not work at all and typically crashes on
>>> Windows 11 Enterprise
>> I'm assuming this means "the X server crashes", but it's not exactly clear.
>> If that is the case, there are some instructions on generating backtraces to
>> help with debugging at [1].
>> [1] https://x.cygwin.com/devel/backtrace.html
>>> I am using an older version of cygwin for this specific test (cygwin 1.7.15
>>> and XWin 1.13.2-1), but I am having the same issue with the latest version
>>> as well.>> Any help greatly appreciated!  Seems this must be a system issue since 
>>> everything about the cygwin and XWin is exactly the same on both systems?> It's not really safe to make assumptions like this. This could be a latent
>> bug in XWin which just happens to get exposed on W11 (or that particular
>> system, even)...

> Thanks for your reply. I didn't provide enough information last time, sorry
> about that. > Let me start over, with an example and some brief code.
> Below is some simple code to bring up a shell with a TextField widget in it.
> When I initialize the TextField widget, I change the code to use 1 of the 2 listed translations:
>    translations_copypaste:  This translation table calls the built-in actions for paste-clipboard, copy-clipboard, and cut-clipboard when the familiar ctrl-c, ctrl-x, and ctrl-v are pressed.
>    translations_ignore:  This translation table always calls ignore_cut_paste() when the same keys are pressed.  This function just prints a message to the console ("Ignoring") so I know it's working.
> This is almost the entire program.  All that is missing is initializing the parent and the app_context.
> What happens is:
> On Windows 7 Professional:
> Both translation tables work as expected:
> translations_ignore: Correctly causes the text "Ignoring" to print every time ctrl-c, ctrl-x, or ctrl-v are pressed.
> translations_copypaste:  Correctly causes text in the small window to cut/paste/copy as expected and is integrated with the system clipboard.
> On Windows 11 Enterprise:
> translations_ignore: Correctly causes the text "Ignoring" to print every time ctrl-c, ctrl-x, or ctrl-v are pressed.
> translations_copypaste:  My application (not the X-Server) crashes every time ctrl-c, ctrl-x, or ctrl-v are pressed.  The X-Server seems to continue running.
> I don't know how to debug this further...
>    it seems like the translation table is working, since the "ignore" translation table works...
>    also, everything works perfectly on Windows 7 professional, so it seems like the "should"" be OK.
> Code:
> void ignore_cut_paste(Widget widget, XEvent *event, String *args, int *num_args)
> {
>    printf("Ignoring\n");
> }
> 
> void TestPaste(Widget parent)
> {
>    Widget thewin,rowcol,textarea;
>    XtActionsRec actions2;
> 
>    actions2.string = "ignore_cut_paste";
>    actions2.proc = (XtActionProc)ignore_cut_paste;
>    XtAppAddActions (app_context, &actions2, 1);
> 
>    String translations_copypaste = "#override\n Ctrl<Key>v:  paste-clipboard()\n Ctrl<Key>c:  copy-clipboard()\n Ctrl<Key>x:  cut-clipboard()";
> 
>    String translations_ignore = "#override\n Ctrl<Key>v:  ignore_cut_paste()\n Ctrl<Key>c:  ignore_cut_paste()\n Ctrl<Key>x:  ignore_cut_paste()";
> 
>    thewin = XtCreatePopupShell("Test", topLevelShellWidgetClass,parent,NULL,0);
> 
>    rowcol = XtVaCreateWidget ("rowcol",xmRowColumnWidgetClass, thewin, NULL);
> 
>    textarea = XtVaCreateManagedWidget ("test_area",
>                                    xmTextFieldWidgetClass, rowcol,
>                                    XmNmaxLength,        80,
>                                    XmNtranslations,     XtParseTranslationTable ( translations_copypaste ) ,
>                                    NULL);
>    XtManageChild(textarea);
>    XtManageChild (rowcol);
>    XtPopup(thewin,XtGrabNone);
> }

Have you tried the original Motif copy/cut/paste C-Ins/S-Del/S-Ins available at 
Windows system level to see if that can give you some hints about what's happening?

-- 
Take care. Thanks, Brian Inglis              Calgary, Alberta, Canada

La perfection est atteinte                   Perfection is achieved
non pas lorsqu'il n'y a plus rien à ajouter  not when there is no more to add
mais lorsqu'il n'y a plus rien à retirer     but when there is no more to cut
                                 -- Antoine de Saint-Exupéry


More information about the Cygwin mailing list