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
--
Problem reports: https://cygwin.com/problems.html
FAQ: https://cygwin.com/faq/
Documentation: https://cygwin.com/docs.html
Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple