Commit Graph

65514 Commits

Author SHA1 Message Date
Bart
b163a35cb3 Refactoring TTaskDialog:
- Fix not displaying common buttons in TLCLTaskDialog.SetupControls
- Assign TLCLDialog.FDlg in the CreateNew() constructor.
- Free LDefaultFont
- Start comparing the new form vs the old form
Still not functional.
2023-07-19 19:43:35 +02:00
Bart
916196dede Refactoring TTaskDialog: prevent possible crash in TLCLTaskDialog. 2023-07-19 18:53:23 +02:00
Bart
61fefaa794 Refactoring TTaskDialog:
- expose Dialogs.TTaskDialog.ParentWindow as reado only property (needed in TLCLTaskDialog.Execute)
- furhter implement adding controls at runtime to TLCLTaskDialog
- it compiles, but still not functional.
2023-07-19 12:07:21 +02:00
Bart
4d40d3f77a Refactoring TTaskDialog:
- Deprecated unit LCLTaskDialog.
- Unit TaskDlgEmulation: work in progress.
  - Start implementing TLCLTaskDialog class. Not functional yet (but at least it should compile).
  - Code copied and adapted from the now deprecated LCLTaskDialog unit.
- Temporarily exposed a private variable of Dialogs.TTaskDialog
2023-07-17 20:48:22 +02:00
Bart
32824af5fe TCustomTaskDialog: add a comment. 2023-07-17 14:01:35 +02:00
Bart
fc6bbcc936 TCustomTaskDialog: inherit form TLCLComponent and register the widgetset class. 2023-07-17 13:52:40 +02:00
Bart
6fb319fae8 WSDialogs: basic implementation of TWSTaskDialog.Execute. 2023-07-17 12:53:27 +02:00
Bart
9289be8936 Unit TaskDlgEmulation: cosmetic (no functional changes). 2023-07-17 12:49:49 +02:00
Bart
df338fd867 LCL: add TaskDlgEmulation unit (skeleton). 2023-07-17 12:48:02 +02:00
Bart
57e13c67d3 TWSTaskDialog: change signature of Execute method. Reason: TTaskDialog is not related to TCommonDialog.
Eventually we need to cast the parameter to TCustomTaskDialog in the Win32 implementation.
Because of the (Delhi compatible) signature of TTaskDialog.DoExcute, it seems that TCustomTaskDialog cannot
inherit from TCommonDialog, since this method (TCustomTaskDialog.DoExecute) must be dynamic, so it cannot
also be "override" as well.
2023-07-17 12:43:04 +02:00
Bart
cfbb089e1f TaskDialog: Start refactoring TTaskDialog: layout the basic infrastructure for a TWSTaskDialog class. 2023-07-17 11:05:33 +02:00
Maxim Ganetsky
005710726a IDE: regenerated translations 2023-07-17 02:22:04 +03:00
wp_xyz
518d35ba69 Images: Reworked dataset images, uniform style. By Roland Hahn. 2023-07-16 17:07:27 +02:00
rich2014
b184a37dbe Cocoa: fix the issue that Modal Form may disappear when switching back from other apps
the issue fixed:
1. run your app, open Modal Form
2. switch to other apps
3. in the dock, right click your app ico and select "Show All Window", and select a window
4. the Modal Form is disappear (actually ordered behind the selected Form)
2023-07-16 23:00:29 +08:00
Juha
27f6e20118 IDE: Improve removing unknown component properties. Issue #40377. 2023-07-16 15:48:01 +03:00
Juha
d9608a3489 IDE: Improve removing unknown component properties. Issue #40377. 2023-07-16 15:21:51 +03:00
Juha
e4494cf4cd LCL-GTK2: Allow right-to-left selection of long text in TEdit with mouse. Issue #40379, patch by wavebvg. 2023-07-16 00:04:14 +03:00
Juha
0c056fc0d2 IDE: Remove unknown component properties using the same GUI already used in other situations. Issue #40377. 2023-07-15 21:17:02 +03:00
rich2014
ebd0bf4135 Cocoa: Async call InputClientInsertText() for non-editable LCL CustomControl
in TCocoaCustomControl, such as Form, Grid, ListView, after inputting text, another control may be focused.
in insertText_replacementRange(), Cocoa/InputContext doesn't like it, so calling InputClientInsertText() asynchronously.
2023-07-16 00:02:06 +08:00
Martin
bb33afb81a SynEdit: fixed crash introduced by bee839cc18 "Ide, SynEdit: Pas-HL, add ability to parse anonymous procs"
Decisions on "fold-block-type" (or open/close) can not be based on "ScanAhead".
If one of the "ahead scanned" lines changes, the fold structure (type/depth) for the above node will be wrong.
E.g., TLazSynEditNestedFoldsList will trigger a temp-scan and get non-matching results. This means "node info" may not be found (due to incorrect fold-level), and code can crash. (observed with MarkupFoldColoring, triggers "assert" in TLazSynEditNestedFoldsList)
2023-07-15 14:08:58 +02:00
Juha
dca4378fae LCL-QT4: Clean and optimize function TQtWidgetSet.EnumDisplayMonitors(). By lagprogramming. 2023-07-15 13:08:51 +03:00
mattias
86c8874b0c codetools: fixed search atttibute 2023-07-15 11:45:48 +02:00
mattias
c472699a81 codetools: fixed pas2js tests 2023-07-15 11:22:19 +02:00
mattias
9d18e66aa8 codetools: fixed two tests 2023-07-15 11:04:18 +02:00
Maxim Ganetsky
992a3c2ff5 AnchorDocking: improved autosizing flat header buttons and some refactoring, merge request !221 2023-07-15 02:20:25 +03:00
zamtmn
2fa20e3333 Small refactoring 2023-07-15 01:58:14 +03:00
zamtmn
0c9b09585d Return HardcodedButtonSize, ButtonBorderSpacingAround to interface section 2023-07-15 01:58:14 +03:00
zamtmn
6d464562d7 Improve vertical header width, refactoring 2023-07-15 01:58:13 +03:00
mattias
bb83fdd273 simplewebservergui: fixed run on older windows, loading GetTcpTable2 via GetProcAddress 2023-07-14 22:52:38 +02:00
mattias
79893d2cbe updated makefiles 2023-07-14 16:42:45 +02:00
rich2014
185e72ea31 Cocoa: better handling of TCocoaWindow.makeFirstResponder() reentrancy 2023-07-14 21:05:41 +08:00
dsiders
957d62af56 Docs: LCL/stdctrls. Restores documentation after reverting commit 9f577dc5. 2023-07-14 13:35:53 +01:00
Maxim Ganetsky
255bdd2bb0 Revert "LCL: Add an option to NOT call TCheckbox OnChange handler when clicked. Issue #39870, patch by Arioch The."
This reverts commit 9f577dc548.

Reasons:
1. The logic of VCL_OnClick_Emulation flag (or its name) is wrong: when it is true, OnChange event gets called LCL-style (note that VCL does not have OnChange event).
2. Having such flag is unsafe: e.g. some used unit can disable it and checkboxes in the whole program will _silently_ change their behavior.
3. The code claimed as a reason for introducing this change does not work in Delphi too.

Such Delphi compatibility issues should be handled another way.
2023-07-14 03:00:19 +03:00
Maxim Ganetsky
ce43b4d6a5 IDE: regenerated translations and updated Russian translation 2023-07-14 02:45:17 +03:00
Maxim Ganetsky
0429abf3de IDE, Editor options: fixed copy-paste error and a typo in XML name for newly added Anonymous procedure 2023-07-14 02:43:43 +03:00
Martin
d80518932f IDE, Debugger: Add "Enabled" to breakpoint properties dialog 2023-07-13 18:50:32 +02:00
Martin
188aae51fa IDE: Add Key/Mouse-Command to Show Breakpoint-properties on current line. (create/modify) 2023-07-13 18:50:32 +02:00
Martin
320cae4037 IDE: Fix advanced mouse opts for breakpoint toggling / enabling 2023-07-13 18:50:31 +02:00
Martin
bee839cc18 Ide, SynEdit: Pas-HL, add ability to parse anonymous procs 2023-07-13 18:50:31 +02:00
Juha
479ff9635e Codetools: Support more modifiers in class method. Issue #40368, patch by Peacoor. 2023-07-13 15:53:57 +03:00
Juha
be92e362e8 LCL-QT[56]: Clean and optimise function TQtWidgetSet.EnumDisplayMonitors(). By lagprogramming. 2023-07-13 12:06:03 +03:00
wp_xyz
fde9c86ca8 TAChart: Minor axis can get marks from a chartsource now 2023-07-13 00:28:58 +02:00
mattias
f306bcae87 IDE: fixed --no-splash-screen, #40375 2023-07-12 22:37:29 +02:00
dsiders
b824561f12 Docs: LCOL/controls. Update TControl.Notification topic for changes in c6200e29. 2023-07-12 15:01:31 +01:00
Bart
02765cb9db LCLTaskDialog: use descriptive const instead of magic numbers. 2023-07-12 15:37:31 +02:00
Bart
a802987646 TTaskDialog: remove ctypes unit from LCLTaskDialog (on Windows): it isn't used. 2023-07-12 15:18:37 +02:00
Bart
e5aa4cee57 diff --git a/lcl/dialogs.pp b/lcl/dialogs.pp
index 24f69c5ac7..b156a70d9c 100644
--- a/lcl/dialogs.pp
+++ b/lcl/dialogs.pp
@@ -543,6 +543,7 @@ type
     tfShowMarqueeProgressBar, tfCallbackTimer,
     tfPositionRelativeToWindow, tfRtlLayout,
     tfNoDefaultRadioButton, tfCanBeMinimized,
+    tfNoSetForeGround, tfSizeToContent,
     tfForceNonNative, tfEmulateClassicStyle);
   TTaskDialogFlags = set of TTaskDialogFlag;

diff --git a/lcl/include/taskdialog.inc b/lcl/include/taskdialog.inc
index 2ce5a97571..ddf2f46aaa 100644
--- a/lcl/include/taskdialog.inc
+++ b/lcl/include/taskdialog.inc
@@ -179,6 +179,10 @@ function TCustomTaskDialog.DoExecute(ParentWnd: HWND): Boolean;
       Result := Result + [tdfNoDefaultRadioButton];
     if tfCanBeMinimized in aTaskFlags then
       Result := Result + [tdfCanBeMinimized];
+    if tfNoSetForeGround in aTaskFlags then
+      Result := Result + [tdfNoSetForeGround];
+    if tfSizeToContent in aTaskFlags then
+      Result := Result + [tdfSizeToContent];
   end;

   function TF_DIALOGICON(const aIcon: TTaskDialogIcon): LCLTaskDialog.TTaskDialogIcon;
diff --git a/lcl/lcltaskdialog.pas b/lcl/lcltaskdialog.pas
index 660702261f..2c3caccd43 100644
--- a/lcl/lcltaskdialog.pas
+++ b/lcl/lcltaskdialog.pas
@@ -127,7 +127,7 @@ interface

 uses
   {$IFDEF MSWINDOWS}
-  Windows, ctypes,
+  Windows, ctypes,  CommCtrl,
   {$ENDIF}
   Classes, SysUtils,
   LazUTF8,
@@ -172,7 +172,9 @@ type
     tdfExpandFooterArea, tdfExpandByDefault, tdfVerificationFlagChecked,
     tdfShowProgressBar, tdfShowMarqueeProgressBar, tdfCallbackTimer,
     tdfPositionRelativeToWindow, tdfRtlLayout, tdfNoDefaultRadioButton,
-    tdfCanBeMinimized, tdfQuery, tdfQueryMasked, tdfQueryFieldFocused);
+    tdfCanBeMinimized, tdfNoSetForeGround {added in Windows 8}, tdfSizeToContent,
+    //custom LCL flags
+    tdfQuery, tdfQueryMasked, tdfQueryFieldFocused);

   /// set of available configuration flags for the Task Dialog
   TTaskDialogFlags = set of TTaskDialogFlag;
@@ -771,6 +773,29 @@ var
     if ModalResult=aButtonDef then
       Dialog.Form.ActiveControl := result;
   end;
+  {$IFDEF MSWINDOwS}
+  function TaskDialogFlagsToInteger(aFlags: TTaskDialogFlags): Integer;
+  const
+    //missing from CommCtrls in fpc < 3.3.1
+    TDF_NO_SET_FOREGROUND = $10000;
+    TDF_SIZE_TO_CONTENT   = $1000000;
+    FlagValues: Array[TTaskDialogFlag] of Integer = (
+      TDF_ENABLE_HYPERLINKS, TDF_USE_HICON_MAIN, TDF_USE_HICON_FOOTER,
+      TDF_ALLOW_DIALOG_CANCELLATION, TDF_USE_COMMAND_LINKS, TDF_USE_COMMAND_LINKS_NO_ICON,
+      TDF_EXPAND_FOOTER_AREA, TDF_EXPANDED_BY_DEFAULT, TDF_VERIFICATION_FLAG_CHECKED,
+      TDF_SHOW_PROGRESS_BAR, TDF_SHOW_MARQUEE_PROGRESS_BAR, TDF_CALLBACK_TIMER,
+      TDF_POSITION_RELATIVE_TO_WINDOW, TDF_RTL_LAYOUT, TDF_NO_DEFAULT_RADIO_BUTTON,
+      TDF_CAN_BE_MINIMIZED, TDF_NO_SET_FOREGROUND {added in Windows 8}, TDF_SIZE_TO_CONTENT,
+      //custom LCL flags
+      0 {tdfQuery}, 0 {tdfQueryMasked}, 0 {tdfQueryFieldFocused});
+  var
+    aFlag: TTaskDialogFlag;
+  begin
+    Result := 0;
+    for aFlag := Low(TTaskDialogFlags) to High(TTaskDialogFlags) do
+      if (aFlag in aFlags) then Result := Result or FlagValues[aFlag];
+  end;
+  {$ENDIF MSWINWOS}

 var
   ARadioOffset: integer;
@@ -821,7 +846,7 @@ begin
       include(aFlags,tdfVerificationFlagChecked);
     if (Config.cButtons=0) and (aCommonButtons=[cbOk]) then
       Include(aFlags,tdfAllowDialogCancellation); // just OK -> Esc/Alt+F4 close
-    Config.dwFlags := integer(aFlags);
+    Config.dwFlags := TaskDialogFlagsToInteger(aFlags);
     Config.hMainIcon := TD_ICONS[aDialogIcon];
     Config.hFooterIcon := TD_FOOTERICONS[aFooterIcon];
     Config.nDefaultButton := aButtonDef;
2023-07-12 15:15:34 +02:00
mattias
c6200e29c8 lcl: TWinControl class completed 2023-07-12 11:35:47 +02:00
mattias
2dc7c77293 lcl: clean hostdocksite 2023-07-12 11:35:47 +02:00
wp_xyz
e77066d3af TAChart: Use new icons in charteditor demo. 2023-07-12 10:48:19 +02:00