LCL-GTK2: Fix pasting big amount of clipboard data. Issue #18295, modified from Zeljko's patch.

git-svn-id: trunk@58969 -
This commit is contained in:
juha 2018-09-12 18:26:22 +00:00
parent 4d743ea119
commit 34613d5cb8

View File

@ -7504,6 +7504,7 @@ function RequestSelectionData(ClipboardWidget: PGtkWidget;
var
TimeID: cardinal;
c: PClipboardEventData;
Atom: TGdkAtom;
StartTime: TDateTime;
begin
{$IFDEF DEBUG_CLIPBOARD}
@ -7531,15 +7532,13 @@ begin
c^.TimeID:=TimeID;
ClipboardSelectionData.Add(c);
try
Atom := ClipboardTypeAtoms[ClipboardType];
{$IFDEF DEBUG_CLIPBOARD}
DebugLn('[RequestSelectionData] TimeID=',dbgs(TimeID),' Type=',GdkAtomToStr(ClipboardTypeAtoms[ClipboardType]),' FormatID=',GdkAtomToStr(FormatID));
DebugLn('[RequestSelectionData] TimeID=',dbgs(TimeID),' Type=',GdkAtomToStr(Atom),' FormatID=',GdkAtomToStr(FormatID));
{$ENDIF}
if gtk_selection_convert(ClipboardWidget, ClipboardTypeAtoms[ClipboardType],
FormatID, TimeID)<>GdkFalse
then begin
if not WaitForClipboardAnswer(c) then exit;
Result:=c^.Data;
end;
if gtk_selection_convert(ClipboardWidget,Atom,FormatID,TimeID) <> GdkFalse then
if gtk_clipboard_wait_is_text_available(gtk_clipboard_get(Atom)) then
Result:=c^.Data;
finally
ClipboardSelectionData.Remove(c);
Dispose(c);