mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-28 16:40:48 +02:00
Qt5,Qt6: set X11SelectionLock on opening dialogs since gtk like platform themes lock gui for minimum dozen of seconds because of bug in QMimeData in Qt.
(cherry picked from commit 674d4ebae9
)
This commit is contained in:
parent
cd3bf33183
commit
45e9ca8fe0
@ -497,6 +497,10 @@ begin
|
||||
FileDialog.UserChoice := mrCancel;
|
||||
{$else}
|
||||
|
||||
{$IFDEF HASX11}
|
||||
Clipboard.BeginX11SelectionLock;
|
||||
{$ENDIF}
|
||||
|
||||
QFileDialog_setOption(QFileDialogH(QtFileDialog.Widget),
|
||||
QFileDialogDontConfirmOverwrite,
|
||||
not (ofOverwritePrompt in TSaveDialog(FileDialog).Options));
|
||||
@ -525,6 +529,9 @@ begin
|
||||
finally
|
||||
QStringList_destroy(ReturnList);
|
||||
end;
|
||||
{$IFDEF HASX11}
|
||||
Clipboard.EndX11SelectionLock;
|
||||
{$ENDIF}
|
||||
{$endif}
|
||||
end else
|
||||
begin
|
||||
@ -611,6 +618,9 @@ begin
|
||||
end else
|
||||
FileDialog.UserChoice := mrCancel;
|
||||
{$else}
|
||||
{$IFDEF HASX11}
|
||||
Clipboard.BeginX11SelectionLock;
|
||||
{$ENDIF}
|
||||
FileDialog.UserChoice := QtDialogCodeToModalResultMap[QDialogDialogCode(QtFileDialog.exec)];
|
||||
ReturnList := QStringList_create;
|
||||
try
|
||||
@ -635,6 +645,9 @@ begin
|
||||
finally
|
||||
QStringList_destroy(ReturnList);
|
||||
end;
|
||||
{$IFDEF HASX11}
|
||||
Clipboard.EndX11SelectionLock;
|
||||
{$ENDIF}
|
||||
{$endif}
|
||||
end;
|
||||
if ActiveWin <> 0 then
|
||||
@ -806,6 +819,9 @@ begin
|
||||
end else
|
||||
FileDialog.UserChoice := mrCancel;
|
||||
{$else}
|
||||
{$IFDEF HASX11}
|
||||
Clipboard.BeginX11SelectionLock;
|
||||
{$ENDIF}
|
||||
FileDialog.UserChoice := QtDialogCodeToModalResultMap[QDialogDialogCode(QtFileDialog.exec)];
|
||||
ReturnList := QStringList_create;
|
||||
try
|
||||
@ -830,6 +846,9 @@ begin
|
||||
finally
|
||||
QStringList_destroy(ReturnList);
|
||||
end;
|
||||
{$IFDEF HASX11}
|
||||
Clipboard.EndX11SelectionLock;
|
||||
{$ENDIF}
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
@ -890,6 +909,10 @@ begin
|
||||
ARgb := QColor_rgba(AQtColor);
|
||||
FillCustomColors;
|
||||
|
||||
{$IFDEF HASX11}
|
||||
Clipboard.BeginX11SelectionLock;
|
||||
{$ENDIF}
|
||||
|
||||
ARgb := QColorDialog_getRgba(ARgb, @ReturnBool,
|
||||
TQtWSCommonDialog.GetDialogParent(ACommonDialog));
|
||||
|
||||
@ -907,6 +930,7 @@ begin
|
||||
else
|
||||
ACommonDialog.UserChoice := mrCancel;
|
||||
{$IFDEF HASX11}
|
||||
Clipboard.EndX11SelectionLock;
|
||||
if (QtWidgetSet.WindowManagerName = 'xfwm4') and (QApplication_activeModalWidget() <> nil) then
|
||||
begin
|
||||
AWND := HwndFromWidgetH(QApplication_activeModalWidget());
|
||||
@ -952,6 +976,9 @@ begin
|
||||
------------------------------------------------------------------------------}
|
||||
CurrentFont := TQtFont(TFontDialog(ACommonDialog).Font.Reference.Handle).FHandle;
|
||||
|
||||
{$IFDEF HASX11}
|
||||
Clipboard.BeginX11SelectionLock;
|
||||
{$ENDIF}
|
||||
ReturnFont := QFont_create;
|
||||
try
|
||||
QFontDialog_getFont(ReturnFont, @ReturnBool, CurrentFont,
|
||||
@ -988,6 +1015,10 @@ begin
|
||||
QFont_destroy(ReturnFont);
|
||||
end;
|
||||
|
||||
{$IFDEF HASX11}
|
||||
Clipboard.EndX11SelectionLock;
|
||||
{$ENDIF}
|
||||
|
||||
if ReturnBool then
|
||||
ACommonDialog.UserChoice := mrOk
|
||||
else
|
||||
|
@ -497,6 +497,10 @@ begin
|
||||
FileDialog.UserChoice := mrCancel;
|
||||
{$else}
|
||||
|
||||
{$IFDEF HASX11}
|
||||
Clipboard.BeginX11SelectionLock;
|
||||
{$ENDIF}
|
||||
|
||||
QFileDialog_setOption(QFileDialogH(QtFileDialog.Widget),
|
||||
QFileDialogOptionDontConfirmOverwrite,
|
||||
not (ofOverwritePrompt in TSaveDialog(FileDialog).Options));
|
||||
@ -525,6 +529,10 @@ begin
|
||||
finally
|
||||
QStringList_destroy(ReturnList);
|
||||
end;
|
||||
|
||||
{$IFDEF HASX11}
|
||||
Clipboard.EndX11SelectionLock;
|
||||
{$ENDIF}
|
||||
{$endif}
|
||||
end else
|
||||
begin
|
||||
@ -611,6 +619,9 @@ begin
|
||||
end else
|
||||
FileDialog.UserChoice := mrCancel;
|
||||
{$else}
|
||||
{$IFDEF HASX11}
|
||||
Clipboard.BeginX11SelectionLock;
|
||||
{$ENDIF}
|
||||
FileDialog.UserChoice := QtDialogCodeToModalResultMap[QDialogDialogCode(QtFileDialog.exec)];
|
||||
ReturnList := QStringList_create;
|
||||
try
|
||||
@ -635,6 +646,9 @@ begin
|
||||
finally
|
||||
QStringList_destroy(ReturnList);
|
||||
end;
|
||||
{$IFDEF HASX11}
|
||||
Clipboard.EndX11SelectionLock;
|
||||
{$ENDIF}
|
||||
{$endif}
|
||||
end;
|
||||
if ActiveWin <> 0 then
|
||||
@ -806,6 +820,9 @@ begin
|
||||
end else
|
||||
FileDialog.UserChoice := mrCancel;
|
||||
{$else}
|
||||
{$IFDEF HASX11}
|
||||
Clipboard.BeginX11SelectionLock;
|
||||
{$ENDIF}
|
||||
FileDialog.UserChoice := QtDialogCodeToModalResultMap[QDialogDialogCode(QtFileDialog.exec)];
|
||||
ReturnList := QStringList_create;
|
||||
try
|
||||
@ -830,6 +847,10 @@ begin
|
||||
finally
|
||||
QStringList_destroy(ReturnList);
|
||||
end;
|
||||
{$IFDEF HASX11}
|
||||
Clipboard.EndX11SelectionLock;
|
||||
{$ENDIF}
|
||||
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
@ -889,6 +910,9 @@ begin
|
||||
|
||||
FillCustomColors;
|
||||
|
||||
{$IFDEF HASX11}
|
||||
Clipboard.BeginX11SelectionLock;
|
||||
{$ENDIF}
|
||||
ATitle := UTF8ToUTF16(ACommonDialog.Title);
|
||||
ARetColor := Default(TQColor);
|
||||
ReturnBool := QColorDialog_getColor(@ARetColor, @AQColor, TQtWSCommonDialog.GetDialogParent(ACommonDialog), @ATitle, QColorDialogShowAlphaChannel);
|
||||
@ -902,6 +926,7 @@ begin
|
||||
else
|
||||
ACommonDialog.UserChoice := mrCancel;
|
||||
{$IFDEF HASX11}
|
||||
Clipboard.EndX11SelectionLock;
|
||||
if (QtWidgetSet.WindowManagerName = 'xfwm4') and (QApplication_activeModalWidget() <> nil) then
|
||||
begin
|
||||
AWND := HwndFromWidgetH(QApplication_activeModalWidget());
|
||||
@ -946,7 +971,9 @@ begin
|
||||
Code to call the dialog
|
||||
------------------------------------------------------------------------------}
|
||||
CurrentFont := TQtFont(TFontDialog(ACommonDialog).Font.Reference.Handle).FHandle;
|
||||
|
||||
{$IFDEF HASX11}
|
||||
Clipboard.BeginX11SelectionLock;
|
||||
{$ENDIF}
|
||||
ReturnFont := QFont_create;
|
||||
try
|
||||
QFontDialog_getFont(ReturnFont, @ReturnBool, CurrentFont,
|
||||
@ -981,6 +1008,9 @@ begin
|
||||
|
||||
finally
|
||||
QFont_destroy(ReturnFont);
|
||||
{$IFDEF HASX11}
|
||||
Clipboard.EndX11SelectionLock;
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
if ReturnBool then
|
||||
|
Loading…
Reference in New Issue
Block a user