mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-14 05:41:16 +02:00
Gtk2: implemented accurate frame under x11. fixes issue #36897
Gtk2: fixed Screen.WorkAreaRect. issue #36919 git-svn-id: trunk@62996 -
This commit is contained in:
parent
2356d3b3d6
commit
f2f8feab9b
@ -76,12 +76,20 @@ function DeliverGtkPaintMessage(Target: Pointer; Widget: PGtkWidget;
|
||||
Area: PGDKRectangle; RepaintAll, IsAfterGtk: boolean): GBoolean;
|
||||
var
|
||||
Msg: TLMGtkPaint;
|
||||
AInfo: PWidgetInfo;
|
||||
begin
|
||||
//DebugLn(['DeliverGtkPaintMessage ',DbgSName(TObject(Target)),' Widget=',GetWidgetDebugReport(Widget),' RepaintAll=',RepaintAll,' AfterGtk=',IsAfterGtk,' Area=',dbgs(Area)]);
|
||||
// default is, that a control receives the paint message after gtk (including the child paints)
|
||||
// In case of TCustomControl, there is no gtk painting only the
|
||||
// child paintings. Let the TCustomControl paint the background.
|
||||
// ToDo: Eventually there must be a 'before paint message'.
|
||||
|
||||
if (TObject(Target) is TCustomForm) then
|
||||
begin
|
||||
AInfo := GetWidgetInfo(Widget);
|
||||
AInfo^.FirstPaint := True;
|
||||
end;
|
||||
|
||||
if IsAfterGtk then
|
||||
begin
|
||||
if TObject(Target) is TCustomControl then exit(false);
|
||||
|
@ -487,6 +487,7 @@ type
|
||||
UserData: Pointer;
|
||||
FormBorderStyle: Integer; // used only by forms
|
||||
FormWindowState: TGdkEventWindowState; // used only by forms to stop infinite loops eg. issue #16505
|
||||
FirstPaint: boolean; // for accurate frame - forms only
|
||||
end;
|
||||
|
||||
//TODO: remove
|
||||
|
@ -51,6 +51,24 @@ uses
|
||||
|
||||
type
|
||||
|
||||
{ TDummyWidget }
|
||||
|
||||
TDummyWidget = class(TObject) {needed for accurate frame on x11}
|
||||
private
|
||||
FFrameRect: TRect;
|
||||
FFirstPaintEvent: boolean;
|
||||
FWidget: PGtkWidget;
|
||||
public
|
||||
constructor Create; overload;
|
||||
destructor Destroy; override;
|
||||
function GetWidgetFrame: TRect;
|
||||
function ShowDummyWidget(const ALeft, ATop, AWidth,
|
||||
AHeight: integer): boolean;
|
||||
procedure SendToBack;
|
||||
procedure HideWidget;
|
||||
property Widget: PGtkWidget read FWidget write FWidget;
|
||||
end;
|
||||
|
||||
{ TGtk2WidgetSet }
|
||||
|
||||
TGtk2WidgetSet = class(TWidgetSet)
|
||||
@ -248,6 +266,7 @@ type
|
||||
private
|
||||
{$IFDEF HASX}
|
||||
FDesktopWidget: PGtkWidget;
|
||||
FWSFrameRect: TRect;
|
||||
{$ENDIF}
|
||||
procedure Gtk2Create;
|
||||
procedure Gtk2Destroy;
|
||||
@ -285,6 +304,10 @@ type
|
||||
{$I gtk2lclintfh.inc}
|
||||
public
|
||||
{$IFDEF HASX}
|
||||
function CreateDummyWidgetFrame(const ALeft, ATop, AWidth,
|
||||
AHeight: integer): boolean;
|
||||
function GetDummyWidgetFrame: TRect;
|
||||
|
||||
function compositeManagerRunning: Boolean;
|
||||
function GetDesktopWidget: PGtkWidget;
|
||||
//function X11Raise(AHandle: HWND): boolean; currently not used
|
||||
|
@ -4106,6 +4106,7 @@ begin
|
||||
if Result = nil then Exit;
|
||||
|
||||
Result^.LCLObject := AObject;
|
||||
Result^.FirstPaint := False;
|
||||
// in most cases the created widget is the core widget so default to it
|
||||
Result^.CoreWidget := AWidget;
|
||||
Result^.Style := AParams.Style;
|
||||
@ -9314,13 +9315,15 @@ begin
|
||||
XInternAtom(xdisplay, '_NET_WORKAREA', false),
|
||||
0, MaxInt, False, XA_CARDINAL, @atomtype, @format, @nitems,
|
||||
@bytes_after, gpointer(@current_desktop));
|
||||
if (atomtype = XA_CARDINAL) and (format = 32) and (nitems > 0) then begin
|
||||
if (atomtype = XA_CARDINAL) and (format = 32) and (nitems > 0) then
|
||||
begin
|
||||
result:=res;
|
||||
ax:=current_desktop[0];
|
||||
ay:=current_desktop[1];
|
||||
awidth:=current_desktop[2];
|
||||
aheight:=current_desktop[3];
|
||||
end else begin
|
||||
end else
|
||||
begin
|
||||
ax:=0;
|
||||
ay:=0;
|
||||
awidth:=0;
|
||||
|
@ -952,6 +952,7 @@ begin
|
||||
FMainPoll := nil;
|
||||
if not FIsLibraryInstance then
|
||||
begin
|
||||
FWSFrameRect := Rect(0, 0, 0, 0);
|
||||
Gtk2MPF := g_main_context_get_poll_func(g_main_context_default);
|
||||
g_main_context_set_poll_func(g_main_context_default, @Gtk2PollFunction);
|
||||
end else
|
||||
@ -1773,6 +1774,26 @@ end;
|
||||
|
||||
{$ifdef Unix}
|
||||
|
||||
{$IFDEF HASX}
|
||||
function TGtk2WidgetSet.CreateDummyWidgetFrame(const ALeft, ATop, AWidth,
|
||||
AHeight: integer): boolean;
|
||||
var
|
||||
ADummy: TDummyWidget;
|
||||
begin
|
||||
Result := False;
|
||||
ADummy := TDummyWidget.Create;
|
||||
ADummy.ShowDummyWidget(ALeft, ATop, AWidth, AHeight);
|
||||
FWSFrameRect := ADummy.GetWidgetFrame;
|
||||
ADummy.Free;
|
||||
Result := not IsRectEmpty(FWSFrameRect);
|
||||
end;
|
||||
|
||||
function TGtk2WidgetSet.GetDummyWidgetFrame: TRect;
|
||||
begin
|
||||
Result := FWSFrameRect;
|
||||
end;
|
||||
{$ENDIF}
|
||||
|
||||
procedure TGtk2WidgetSet.PrepareSynchronize(AObject: TObject);
|
||||
{ This method is the WakeMainThread of the unit classes.
|
||||
It is called in TThread.Synchronize to wake up the main thread = LCL GUI thread.
|
||||
@ -6425,6 +6446,204 @@ begin
|
||||
Result:=nil;
|
||||
end;
|
||||
|
||||
{$IFDEF HASX}
|
||||
{.$DEFINE DEBUGGTK2FRAMESIZE}
|
||||
|
||||
function Gtk2DummyWidgetEvent(AWidget: PGtkWidget; AEvent: PGdkEvent; AData: GPointer): gboolean; cdecl;
|
||||
begin
|
||||
Result := CallBackDefaultReturn;
|
||||
if (AEvent^._type = GDK_EXPOSE) then
|
||||
TDummyWidget(AData).FFirstPaintEvent := True;
|
||||
end;
|
||||
|
||||
constructor TDummyWidget.Create;
|
||||
begin
|
||||
inherited Create;
|
||||
FFrameRect := Rect(0, 0, 0, 0);
|
||||
Widget := gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_decorated(PGtkWindow(Widget), True);
|
||||
gtk_window_set_accept_focus(PGtkWindow(Widget), False);
|
||||
gtk_window_set_focus_on_map(PGtkWindow(Widget), False);
|
||||
gtk_window_set_keep_below(PGtkWindow(Widget), True);
|
||||
gtk_window_set_skip_taskbar_hint(PGtkWindow(Widget), True);
|
||||
gtk_widget_set_parent_window(Widget, gdk_get_default_root_window);
|
||||
if Assigned(gtk_window_set_opacity) and Gtk2WidgetSet.compositeManagerRunning then
|
||||
gtk_window_set_opacity(PGtkWindow(Widget), 0.5);
|
||||
|
||||
g_signal_connect(PGtkObject(Widget), 'event',
|
||||
gtk_signal_func(@Gtk2DummyWidgetEvent), Self);
|
||||
end;
|
||||
|
||||
function TDummyWidget.ShowDummyWidget(const ALeft, ATop, AWidth,
|
||||
AHeight: integer): boolean;
|
||||
var
|
||||
R: TRect;
|
||||
{$IFDEF DEBUGGTK2FRAMESIZE}
|
||||
ATicks: QWord;
|
||||
{$ENDIF}
|
||||
ALoop: integer;
|
||||
AMaxLoops: integer;
|
||||
aRequisition: TGtkRequisition;
|
||||
AAllocation: TGtkAllocation;
|
||||
begin
|
||||
Result := Assigned(Widget);
|
||||
if Result then
|
||||
begin
|
||||
if Gtk2WidgetSet.compositeManagerRunning then
|
||||
AMaxLoops := 200000
|
||||
else
|
||||
AMaxLoops := 20000;
|
||||
{$IFDEF DEBUGGTK2FRAMESIZE}
|
||||
writeln('ShowDummyWidget(start) WindowManager="',Gtk2WidgetSet.GetWindowManager,'" Compositing enabled="',Gtk2WidgetSet.compositeManagerRunning,'" IsWayland="UNKNOWN" MaxLoops=',AMaxLoops);
|
||||
ATicks := GetTickCount64;
|
||||
{$ENDIF}
|
||||
if (ALeft <= 0) or (ATop <= 0) or (AWidth <= 0) or (AHeight <= 0) then
|
||||
begin
|
||||
gdk_screen_get_monitor_geometry(gdk_screen_get_default, 0, @R);
|
||||
aRequisition.width := 75;
|
||||
aRequisition.height := 32;
|
||||
AAllocation.x := R.CenterPoint.x;
|
||||
AAllocation.y := R.CenterPoint.y;
|
||||
AAllocation.width := aRequisition.Width;
|
||||
AAllocation.height := aRequisition.height;
|
||||
gtk_widget_size_allocate(Widget,@AAllocation);
|
||||
end else
|
||||
begin
|
||||
aRequisition.width := AWidth - 1;
|
||||
aRequisition.height := AHeight - 1;
|
||||
AAllocation.x := ALeft + 1;
|
||||
AAllocation.y := ATop + 1;
|
||||
AAllocation.width := aRequisition.Width;
|
||||
AAllocation.height := aRequisition.height;
|
||||
gtk_widget_size_allocate(Widget,@AAllocation);
|
||||
end;
|
||||
gtk_widget_show(Widget);
|
||||
gtk_widget_map(Widget);
|
||||
gtk_window_move(PGtkWindow(Widget), AAllocation.x, AAllocation.y);
|
||||
gtk_window_resize(PGtkWindow(Widget), AAllocation.width, AAllocation.height);
|
||||
|
||||
{We are waiting until dummy window is laid out on screen by window manager
|
||||
ALoop variable is needed to avoid infinite loop.
|
||||
Usually we get result in about 20-30msec on modern X11 without compositing,
|
||||
but 30-100 msec on wm with compositing enabled.
|
||||
Older X11 or slower machine might need more loops to get result,
|
||||
but it won't be over 200 msec in any case.}
|
||||
|
||||
ALoop := 0; // avoid infinite loop
|
||||
while not GDK_IS_WINDOW(Widget^.window) do
|
||||
begin
|
||||
inc(ALoop);
|
||||
|
||||
while g_main_context_pending(g_main_context_default) do
|
||||
begin
|
||||
if not g_main_context_iteration(g_main_context_default, False) then
|
||||
break;
|
||||
end;
|
||||
|
||||
if ALoop > AMaxLoops then
|
||||
break;
|
||||
end;
|
||||
|
||||
{$IFDEF DEBUGGTK2FRAMESIZE}
|
||||
writeln('ShowDummyWidget: 1st LOOP=',ALoop);
|
||||
{$ENDIF}
|
||||
|
||||
ALoop := 0; // avoid infinite loop
|
||||
while not FFirstPaintEvent do
|
||||
begin
|
||||
inc(ALoop);
|
||||
|
||||
while g_main_context_pending(g_main_context_default) do
|
||||
begin
|
||||
if not g_main_context_iteration(g_main_context_default, False) then
|
||||
break;
|
||||
end;
|
||||
|
||||
if ALoop > AMaxLoops then
|
||||
break;
|
||||
end;
|
||||
|
||||
{$IFDEF DEBUGGTK2FRAMESIZE}
|
||||
writeln('ShowDummyWidget: 2st LOOP=',ALoop);
|
||||
{$ENDIF}
|
||||
R := Rect(0 ,0, 0, 0);
|
||||
ALoop := 0; // avoid infinite loop
|
||||
// now wait until R.Top > 0
|
||||
while (R.Top <= 0) do //
|
||||
begin
|
||||
inc(ALoop);
|
||||
R := GetWidgetFrame;
|
||||
|
||||
while g_main_context_pending(g_main_context_default) do
|
||||
begin
|
||||
if not g_main_context_iteration(g_main_context_default, False) then
|
||||
break;
|
||||
end;
|
||||
|
||||
if ALoop > AMaxLoops then
|
||||
break;
|
||||
end;
|
||||
{$IFDEF DEBUGGTK2FRAMESIZE}
|
||||
writeln('ShowDummyWidget: 3nd LOOP=',ALoop,' LAST R=',dbgs(R));
|
||||
writeln('ShowDummyWidget: *finished* FRAME=',dbgs(GetWidgetFrame),' in ',GetTickCount64 - ATicks,' msec ');
|
||||
{$ENDIF}
|
||||
end;
|
||||
end;
|
||||
|
||||
destructor TDummyWidget.Destroy;
|
||||
begin
|
||||
if Assigned(Widget) then
|
||||
begin
|
||||
HideWidget;
|
||||
gtk_widget_destroy(Widget);
|
||||
Widget := nil;
|
||||
end;
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
function TDummyWidget.GetWidgetFrame: TRect;
|
||||
var
|
||||
AFrame, AGeometry: TRect;
|
||||
DeskX, DeskY, PosX, PosY, AWidth, AHeight: gint;
|
||||
GRect: TGdkRectangle;
|
||||
begin
|
||||
Result := FFrameRect;
|
||||
if not Assigned(Widget) then
|
||||
exit;
|
||||
if not GDK_IS_WINDOW(Widget^.window) then
|
||||
exit;
|
||||
if not gdk_window_is_visible(Widget^.window) then
|
||||
exit;
|
||||
|
||||
gdk_window_get_frame_extents(Widget^.window, @GRect);
|
||||
gdk_window_get_deskrelative_origin(Widget^.window, @DeskX, @DeskY);
|
||||
|
||||
AFrame := RectFromGdkRect(GRect);
|
||||
gtk_window_get_position(PGtkWindow(Widget), @PosX, @PosY);
|
||||
gtk_window_get_size(PGtkWindow(Widget), @AWidth, @AHeight);
|
||||
|
||||
AGeometry := Bounds(PosX, PosY, AWidth, AHeight);
|
||||
FFrameRect := Rect(DeskX - PosX, DeskY - PosY, (AFrame.Right - AGeometry.Right) - (DeskX - PosX), (AFrame.Bottom - AGeometry.Bottom) - (DeskY - PosY)); // hardcoded just to proove GetWindowRect
|
||||
|
||||
if FFrameRect.Top < 0 then
|
||||
FFrameRect.Top := 0;
|
||||
|
||||
Result := FFrameRect;
|
||||
end;
|
||||
|
||||
procedure TDummyWidget.SendToBack;
|
||||
begin
|
||||
if Assigned(Widget) then
|
||||
gtk_window_set_keep_above(PGtkWindow(Widget), True);
|
||||
end;
|
||||
|
||||
procedure TDummyWidget.HideWidget;
|
||||
begin
|
||||
if Assigned(Widget) then
|
||||
gtk_widget_hide(Widget);
|
||||
end;
|
||||
{$ENDIF}
|
||||
|
||||
{$IFDEF ASSERT_IS_ON}
|
||||
{$UNDEF ASSERT_IS_ON}
|
||||
{$C-}
|
||||
|
@ -4622,7 +4622,8 @@ begin
|
||||
+b(rsgtkOptionSync)
|
||||
+b(rsgtkOptionNoXshm)
|
||||
+b(rsgtkOptionName)
|
||||
+b(rsgtkOptionClass);
|
||||
+b(rsgtkOptionClass)
|
||||
+b(rsqtOptionDisableAccurateFrame);
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
@ -6261,6 +6262,9 @@ var
|
||||
Widget: PGTKWidget;
|
||||
GRect: TGdkRectangle;
|
||||
P: TPoint;
|
||||
AInfo: PWidgetInfo;
|
||||
AForm: TCustomForm;
|
||||
R, AFrame: TRect;
|
||||
begin
|
||||
Result := 0; // error
|
||||
if Handle = 0 then
|
||||
@ -6279,6 +6283,26 @@ begin
|
||||
Result := 1; // success
|
||||
end else
|
||||
begin
|
||||
{$IFDEF HASX}
|
||||
AInfo := GetWidgetInfo(Widget);
|
||||
if (AInfo^.LCLObject is TCustomForm) and not AInfo^.FirstPaint then
|
||||
begin
|
||||
AForm := TCustomForm(AInfo^.LCLObject);
|
||||
if not IsFormDesign(AForm) and (AForm.BorderStyle <> bsNone) and
|
||||
not (AForm.FormStyle in [fsMDIChild, fsSplash])
|
||||
and (Gtk2WidgetSet.GetDummyWidgetFrame <> Rect(0, 0, 0, 0)) and
|
||||
not GDK_IS_WINDOW(Widget^.window) then
|
||||
begin
|
||||
R := AForm.BoundsRect;
|
||||
AFrame := Gtk2WidgetSet.GetDummyWidgetFrame;
|
||||
// apply frame size to lcl form.
|
||||
R.Right += AFrame.Left + AFrame.Right;
|
||||
R.Bottom += AFrame.Top + AFrame.Bottom;
|
||||
ARect := R; //this is now real size under x11 even on unmapped window :)
|
||||
exit(-1);
|
||||
end;
|
||||
end;
|
||||
{$ENDIF}
|
||||
ARect.TopLeft := GetWidgetOrigin(Widget);
|
||||
if (ARect.Top <> -1) or (ARect.Left <> -1)
|
||||
or (Widget^.allocation.width <> 1) or (Widget^.allocation.height <> 1) then
|
||||
@ -9679,11 +9703,21 @@ end;
|
||||
|
||||
function TGtk2WidgetSet.SystemParametersInfo(uiAction: DWord; uiParam: DWord;
|
||||
pvParam: Pointer; fWinIni: DWord): LongBool;
|
||||
{$IFDEF HASX}
|
||||
var
|
||||
ax, ay, awidth, aheight: gint;
|
||||
{$ENDIF}
|
||||
begin
|
||||
Result:=True;
|
||||
Case uiAction of
|
||||
SPI_GETWHEELSCROLLLINES: PDword(pvParam)^ := 3;
|
||||
SPI_GETWORKAREA: begin
|
||||
SPI_GETWORKAREA:
|
||||
begin
|
||||
{$IFDEF HASX}
|
||||
if XGetWorkarea(ax, ay, awidth, aheight) <> -1 then
|
||||
TRect(pvParam^) := Bounds(ax, ay, awidth, aheight)
|
||||
else
|
||||
{$ENDIF}
|
||||
TRect(pvParam^):=Bounds(GetSystemMetrics(SM_XVIRTUALSCREEN),
|
||||
GetSystemMetrics(SM_YVIRTUALSCREEN),
|
||||
GetSystemMetrics(SM_CXVIRTUALSCREEN),
|
||||
|
@ -417,6 +417,10 @@ begin
|
||||
P := gtk_hbox_new(false, 0);
|
||||
end;
|
||||
|
||||
if (AWinControl = Application.MainForm) and
|
||||
not Application.HasOption('disableaccurateframe') then
|
||||
Gtk2WidgetSet.CreateDummyWidgetFrame(-1, -1, -1, -1);
|
||||
|
||||
WidgetInfo := CreateWidgetInfo(P, AWinControl, AParams);
|
||||
WidgetInfo^.FormBorderStyle := Ord(ABorderStyle);
|
||||
|
||||
|
@ -979,7 +979,7 @@ msgid "Purple"
|
||||
msgstr ""
|
||||
|
||||
#: lclstrconsts.rsqtoptiondisableaccurateframe
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt and Qt5 interfaces and used mostly by GetWindowRect()."
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt,Qt5 and Gtk2 interfaces and used mostly by GetWindowRect()."
|
||||
msgstr ""
|
||||
|
||||
#: lclstrconsts.rsqtoptiondograb
|
||||
|
@ -951,7 +951,7 @@ msgid "Purple"
|
||||
msgstr "Fialová"
|
||||
|
||||
#: lclstrconsts.rsqtoptiondisableaccurateframe
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt and Qt5 interfaces and used mostly by GetWindowRect()."
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt,Qt5 and Gtk2 interfaces and used mostly by GetWindowRect()."
|
||||
msgstr ""
|
||||
|
||||
#: lclstrconsts.rsqtoptiondograb
|
||||
|
@ -951,7 +951,7 @@ msgid "Purple"
|
||||
msgstr "Purpur"
|
||||
|
||||
#: lclstrconsts.rsqtoptiondisableaccurateframe
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt and Qt5 interfaces and used mostly by GetWindowRect()."
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt,Qt5 and Gtk2 interfaces and used mostly by GetWindowRect()."
|
||||
msgstr ""
|
||||
|
||||
#: lclstrconsts.rsqtoptiondograb
|
||||
|
@ -950,7 +950,7 @@ msgid "Purple"
|
||||
msgstr "Púrpura"
|
||||
|
||||
#: lclstrconsts.rsqtoptiondisableaccurateframe
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt and Qt5 interfaces and used mostly by GetWindowRect()."
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt,Qt5 and Gtk2 interfaces and used mostly by GetWindowRect()."
|
||||
msgstr ""
|
||||
|
||||
#: lclstrconsts.rsqtoptiondograb
|
||||
|
@ -947,7 +947,7 @@ msgid "Purple"
|
||||
msgstr "Purppura"
|
||||
|
||||
#: lclstrconsts.rsqtoptiondisableaccurateframe
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt and Qt5 interfaces and used mostly by GetWindowRect()."
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt,Qt5 and Gtk2 interfaces and used mostly by GetWindowRect()."
|
||||
msgstr ""
|
||||
|
||||
#: lclstrconsts.rsqtoptiondograb
|
||||
|
@ -949,7 +949,7 @@ msgid "Purple"
|
||||
msgstr "Violet"
|
||||
|
||||
#: lclstrconsts.rsqtoptiondisableaccurateframe
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt and Qt5 interfaces and used mostly by GetWindowRect()."
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt,Qt5 and Gtk2 interfaces and used mostly by GetWindowRect()."
|
||||
msgstr ""
|
||||
|
||||
#: lclstrconsts.rsqtoptiondograb
|
||||
|
@ -973,7 +973,7 @@ msgid "Purple"
|
||||
msgstr "סגול"
|
||||
|
||||
#: lclstrconsts.rsqtoptiondisableaccurateframe
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt and Qt5 interfaces and used mostly by GetWindowRect()."
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt,Qt5 and Gtk2 interfaces and used mostly by GetWindowRect()."
|
||||
msgstr ""
|
||||
|
||||
#: lclstrconsts.rsqtoptiondograb
|
||||
|
@ -949,7 +949,7 @@ msgid "Purple"
|
||||
msgstr "Lila"
|
||||
|
||||
#: lclstrconsts.rsqtoptiondisableaccurateframe
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt and Qt5 interfaces and used mostly by GetWindowRect()."
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt,Qt5 and Gtk2 interfaces and used mostly by GetWindowRect()."
|
||||
msgstr ""
|
||||
|
||||
#: lclstrconsts.rsqtoptiondograb
|
||||
|
@ -980,7 +980,7 @@ msgid "Purple"
|
||||
msgstr ""
|
||||
|
||||
#: lclstrconsts.rsqtoptiondisableaccurateframe
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt and Qt5 interfaces and used mostly by GetWindowRect()."
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt,Qt5 and Gtk2 interfaces and used mostly by GetWindowRect()."
|
||||
msgstr ""
|
||||
|
||||
#: lclstrconsts.rsqtoptiondograb
|
||||
|
@ -953,7 +953,7 @@ msgid "Purple"
|
||||
msgstr "Viola"
|
||||
|
||||
#: lclstrconsts.rsqtoptiondisableaccurateframe
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt and Qt5 interfaces and used mostly by GetWindowRect()."
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt,Qt5 and Gtk2 interfaces and used mostly by GetWindowRect()."
|
||||
msgstr ""
|
||||
|
||||
#: lclstrconsts.rsqtoptiondograb
|
||||
|
@ -950,7 +950,7 @@ msgid "Purple"
|
||||
msgstr "紫色"
|
||||
|
||||
#: lclstrconsts.rsqtoptiondisableaccurateframe
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt and Qt5 interfaces and used mostly by GetWindowRect()."
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt,Qt5 and Gtk2 interfaces and used mostly by GetWindowRect()."
|
||||
msgstr ""
|
||||
|
||||
#: lclstrconsts.rsqtoptiondograb
|
||||
|
@ -952,7 +952,7 @@ msgid "Purple"
|
||||
msgstr "Purpurinė"
|
||||
|
||||
#: lclstrconsts.rsqtoptiondisableaccurateframe
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt and Qt5 interfaces and used mostly by GetWindowRect()."
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt,Qt5 and Gtk2 interfaces and used mostly by GetWindowRect()."
|
||||
msgstr ""
|
||||
|
||||
#: lclstrconsts.rsqtoptiondograb
|
||||
|
@ -956,7 +956,7 @@ msgid "Purple"
|
||||
msgstr "Paars"
|
||||
|
||||
#: lclstrconsts.rsqtoptiondisableaccurateframe
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt and Qt5 interfaces and used mostly by GetWindowRect()."
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt,Qt5 and Gtk2 interfaces and used mostly by GetWindowRect()."
|
||||
msgstr ""
|
||||
|
||||
#: lclstrconsts.rsqtoptiondograb
|
||||
|
@ -982,7 +982,7 @@ msgid "Purple"
|
||||
msgstr ""
|
||||
|
||||
#: lclstrconsts.rsqtoptiondisableaccurateframe
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt and Qt5 interfaces and used mostly by GetWindowRect()."
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt,Qt5 and Gtk2 interfaces and used mostly by GetWindowRect()."
|
||||
msgstr ""
|
||||
|
||||
#: lclstrconsts.rsqtoptiondograb
|
||||
|
@ -950,7 +950,7 @@ msgid "Purple"
|
||||
msgstr "Fioletowy"
|
||||
|
||||
#: lclstrconsts.rsqtoptiondisableaccurateframe
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt and Qt5 interfaces and used mostly by GetWindowRect()."
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt,Qt5 and Gtk2 interfaces and used mostly by GetWindowRect()."
|
||||
msgstr ""
|
||||
|
||||
#: lclstrconsts.rsqtoptiondograb
|
||||
|
@ -942,7 +942,7 @@ msgid "Purple"
|
||||
msgstr ""
|
||||
|
||||
#: lclstrconsts.rsqtoptiondisableaccurateframe
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt and Qt5 interfaces and used mostly by GetWindowRect()."
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt,Qt5 and Gtk2 interfaces and used mostly by GetWindowRect()."
|
||||
msgstr ""
|
||||
|
||||
#: lclstrconsts.rsqtoptiondograb
|
||||
|
@ -961,7 +961,7 @@ msgid "Purple"
|
||||
msgstr "Roxo"
|
||||
|
||||
#: lclstrconsts.rsqtoptiondisableaccurateframe
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt and Qt5 interfaces and used mostly by GetWindowRect()."
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt,Qt5 and Gtk2 interfaces and used mostly by GetWindowRect()."
|
||||
msgstr ""
|
||||
|
||||
#: lclstrconsts.rsqtoptiondograb
|
||||
|
@ -949,7 +949,7 @@ msgid "Purple"
|
||||
msgstr "Roxo"
|
||||
|
||||
#: lclstrconsts.rsqtoptiondisableaccurateframe
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt and Qt5 interfaces and used mostly by GetWindowRect()."
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt,Qt5 and Gtk2 interfaces and used mostly by GetWindowRect()."
|
||||
msgstr ""
|
||||
|
||||
#: lclstrconsts.rsqtoptiondograb
|
||||
|
@ -949,7 +949,9 @@ msgid "Purple"
|
||||
msgstr "Лиловый"
|
||||
|
||||
#: lclstrconsts.rsqtoptiondisableaccurateframe
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt and Qt5 interfaces and used mostly by GetWindowRect()."
|
||||
#, fuzzy
|
||||
#| msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt and Qt5 interfaces and used mostly by GetWindowRect()."
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt,Qt5 and Gtk2 interfaces and used mostly by GetWindowRect()."
|
||||
msgstr "-disableaccurateframe, отключает определение точных границ окна в X11. Эта возможность реализована для интерфейсов Qt и Qt5 и используется преимущественно GetWindowRect()."
|
||||
|
||||
#: lclstrconsts.rsqtoptiondograb
|
||||
|
@ -951,7 +951,7 @@ msgid "Purple"
|
||||
msgstr "Fialová"
|
||||
|
||||
#: lclstrconsts.rsqtoptiondisableaccurateframe
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt and Qt5 interfaces and used mostly by GetWindowRect()."
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt,Qt5 and Gtk2 interfaces and used mostly by GetWindowRect()."
|
||||
msgstr ""
|
||||
|
||||
#: lclstrconsts.rsqtoptiondograb
|
||||
|
@ -949,7 +949,7 @@ msgid "Purple"
|
||||
msgstr "Mor"
|
||||
|
||||
#: lclstrconsts.rsqtoptiondisableaccurateframe
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt and Qt5 interfaces and used mostly by GetWindowRect()."
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt,Qt5 and Gtk2 interfaces and used mostly by GetWindowRect()."
|
||||
msgstr ""
|
||||
|
||||
#: lclstrconsts.rsqtoptiondograb
|
||||
|
@ -952,7 +952,7 @@ msgid "Purple"
|
||||
msgstr "Пурпуровий"
|
||||
|
||||
#: lclstrconsts.rsqtoptiondisableaccurateframe
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt and Qt5 interfaces and used mostly by GetWindowRect()."
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt,Qt5 and Gtk2 interfaces and used mostly by GetWindowRect()."
|
||||
msgstr ""
|
||||
|
||||
#: lclstrconsts.rsqtoptiondograb
|
||||
|
@ -951,7 +951,7 @@ msgid "Purple"
|
||||
msgstr "紫色"
|
||||
|
||||
#: lclstrconsts.rsqtoptiondisableaccurateframe
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt and Qt5 interfaces and used mostly by GetWindowRect()."
|
||||
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt,Qt5 and Gtk2 interfaces and used mostly by GetWindowRect()."
|
||||
msgstr ""
|
||||
|
||||
#: lclstrconsts.rsqtoptiondograb
|
||||
|
@ -205,7 +205,7 @@ resourceString
|
||||
+'floating over the widget and is not inserted until the editing is done.';
|
||||
|
||||
rsqtOptionDisableAccurateFrame = '-disableaccurateframe, disables fully accurate '
|
||||
+'window frame under X11. This feature is implemented for Qt and Qt5 interfaces '
|
||||
+'window frame under X11. This feature is implemented for Qt,Qt5 and Gtk2 interfaces '
|
||||
+'and used mostly by GetWindowRect().';
|
||||
|
||||
// win32 interface
|
||||
|
Loading…
Reference in New Issue
Block a user