diff options
author | graemeg <graemeg@ae50a9b5-8222-0410-bf8d-8a13f76226bf> | 2007-09-06 21:41:49 +0000 |
---|---|---|
committer | graemeg <graemeg@ae50a9b5-8222-0410-bf8d-8a13f76226bf> | 2007-09-06 21:41:49 +0000 |
commit | 4296554992d2c56360ef23f5ada4c966b9fa157c (patch) | |
tree | 3cdfe0433cc85ee1a4cd7aefadcafa36c46b50de /src | |
parent | 7d76bc5a71cccf70ab7e6c49fd3ea8d9c93f1e8c (diff) | |
download | fpGUI-4296554992d2c56360ef23f5ada4c966b9fa157c.tar.xz |
* Added a new generic property to TfpgWidget to dispatch messages so
the GUI Form Designer can intercept them.
* File Save dialog can now save even if the file does not exist. Still
needs a little bit of improvement.
* GUI Designer now detects OS messages in designer window.
* Painting has been improved a bit, though the z-order is still screwed.
* The formating of a new template unit has been improved.
Diffstat (limited to 'src')
-rw-r--r-- | src/corelib/gfx_widget.pas | 52 | ||||
-rw-r--r-- | src/gui/gui_dialogs.pas | 7 | ||||
-rw-r--r-- | src/gui/gui_form.pas | 7 |
3 files changed, 64 insertions, 2 deletions
diff --git a/src/corelib/gfx_widget.pas b/src/corelib/gfx_widget.pas index 39a155c3..b0e22233 100644 --- a/src/corelib/gfx_widget.pas +++ b/src/corelib/gfx_widget.pas @@ -41,6 +41,7 @@ type procedure MsgMouseScroll(var msg: TfpgMessageRec); message FPGM_SCROLL; procedure SetActiveWidget(const AValue: TfpgWidget); protected + FFormDesigner: TObject; FVisible: boolean; FEnabled: boolean; FFocusable: boolean; @@ -95,6 +96,7 @@ type procedure MoveAndResizeBy(dx, dy, dw, dh: TfpgCoord); procedure SetPosition(aleft, atop, awidth, aheight: TfpgCoord); procedure Invalidate; // double check this works as developers expect???? + property FormDesigner: TObject read FFormDesigner write FFormDesigner; property Parent: TfpgWidget read GetParent write SetParent; property ActiveWidget: TfpgWidget read FActiveWidget write SetActiveWidget; property Visible: boolean read FVisible write SetVisible; @@ -246,6 +248,12 @@ var consumed: boolean; wg: TfpgWidget; begin + if FFormDesigner <> nil then + begin + FFormDesigner.Dispatch(msg); + Exit; + end; + key := msg.params.keyboard.keycode; ss := msg.params.keyboard.shiftstate; consumed := False; @@ -269,6 +277,12 @@ var consumed: boolean; wg: TfpgWidget; begin + if FFormDesigner <> nil then + begin + FFormDesigner.Dispatch(msg); + Exit; + end; + key := msg.params.keyboard.keycode; ss := msg.params.keyboard.shiftstate; consumed := False; @@ -289,6 +303,12 @@ procedure TfpgWidget.MsgMouseDown(var msg: TfpgMessageRec); var mb: TMouseButton; begin + if FFormDesigner <> nil then + begin + FFormDesigner.Dispatch(msg); + Exit; + end; + if not FEnabled then exit; // Do we want this here? @@ -318,6 +338,12 @@ var mb: TMouseButton; IsDblClick: boolean; begin + if FFormDesigner <> nil then + begin + FFormDesigner.Dispatch(msg); + Exit; + end; + if not FEnabled then exit; // Do we want this here? @@ -359,6 +385,12 @@ end; procedure TfpgWidget.MsgMouseMove(var msg: TfpgMessageRec); begin + if FFormDesigner <> nil then + begin + FFormDesigner.Dispatch(msg); + Exit; + end; + HandleMouseMove(msg.Params.mouse.x, msg.Params.mouse.y, msg.Params.mouse.Buttons, msg.Params.mouse.shiftstate); if Assigned(OnMouseMove) then OnMouseMove(self, msg.Params.mouse.shiftstate, @@ -382,6 +414,12 @@ end; procedure TfpgWidget.MsgMouseEnter(var msg: TfpgMessageRec); begin + if FFormDesigner <> nil then + begin + FFormDesigner.Dispatch(msg); + Exit; + end; + HandleMouseEnter; if Assigned(FOnMouseEnter) then FOnMouseEnter(self); @@ -389,6 +427,12 @@ end; procedure TfpgWidget.MsgMouseExit(var msg: TfpgMessageRec); begin + if FFormDesigner <> nil then + begin + FFormDesigner.Dispatch(msg); + Exit; + end; + HandleMouseExit; if Assigned(FOnMouseExit) then FOnMouseExit(Self); @@ -706,6 +750,10 @@ end; procedure TfpgWidget.MsgResize(var msg: TfpgMessageRec); begin HandleResize(msg.Params.rect.Width, msg.Params.rect.Height); + if FFormDesigner <> nil then + begin + FFormDesigner.Dispatch(msg); + end; end; procedure TfpgWidget.HandleResize(awidth, aheight: TfpgCoord); @@ -723,6 +771,10 @@ end; procedure TfpgWidget.MsgMove(var msg: TfpgMessageRec); begin HandleMove(msg.Params.rect.left, msg.Params.rect.top); + if FFormDesigner <> nil then + begin + FFormDesigner.Dispatch(msg); + end; end; procedure TfpgWidget.HandleMove(x, y: TfpgCoord); diff --git a/src/gui/gui_dialogs.pas b/src/gui/gui_dialogs.pas index 0cad667f..715685d4 100644 --- a/src/gui/gui_dialogs.pas +++ b/src/gui/gui_dialogs.pas @@ -716,8 +716,11 @@ begin if grid.CurrentEntry.EntryType <> etDir then edFileName.Text := grid.CurrentEntry.Name; - - btnOK.Enabled := grid.CurrentEntry.EntryType = etFile; + + if FOpenMode then + btnOK.Enabled := grid.CurrentEntry.EntryType = etFile + else + btnOK.Enabled := edFileName.Text <> ''; lbFileInfo.Text := s; end; diff --git a/src/gui/gui_form.pas b/src/gui/gui_form.pas index 4e075068..7acab61c 100644 --- a/src/gui/gui_form.pas +++ b/src/gui/gui_form.pas @@ -112,6 +112,13 @@ begin if (fpgApplication.TopModalForm = nil) or (fpgApplication.TopModalForm = self) then begin FocusRootWidget := self; + + if FFormDesigner <> nil then + begin + FFormDesigner.Dispatch(msg); + Exit; + end; + if ActiveWidget = nil then ActiveWidget := FindFocusWidget(nil, fsdFirst) else |