summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Pierre Ledure <jp@ledure.be>2021-04-14 15:01:22 +0200
committerJean-Pierre Ledure <jp@ledure.be>2021-04-15 11:20:34 +0200
commit60778f053ab0740a3339d4b06595bb6327cf3599 (patch)
treed21c9de279b8f71c18d0d941ba40a72c5b818b01
parent67ff46b8a50cfbbfa217afa1f68527f09eeb7a7e (diff)
ScriptForge - (SFDocuments) Fix SF_Base.OpenFormDocument()
When a Base form is: 1. opened with OpenFormDocument(), then closed 2. Opened manually in Edit mode, then closed 3. Reopened with OpenFormDocument() in normal mode - it again gets opened in Edit mode - its closure is not executed, neither by program nor manually The OpenFormDocument() method is simplified: the invoked loadComponent method may be executed even when the form is already open. It simply activates the form which is exactly the expected bahaviour. Additionally: - the opening mode is checked after the open and, if not matching the expected DesignMode argument, reset. - the alive check of a form (IsStillAlive()) does not require a database connection anymore Change-Id: I5f55e45b246867d19e514e0d820f164790dec300 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114092 Tested-by: Jenkins Tested-by: Jean-Pierre Ledure <jp@ledure.be> Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>
-rw-r--r--wizards/source/sfdocuments/SF_Base.xba25
-rw-r--r--wizards/source/sfdocuments/SF_Form.xba1
2 files changed, 10 insertions, 16 deletions
diff --git a/wizards/source/sfdocuments/SF_Base.xba b/wizards/source/sfdocuments/SF_Base.xba
index e9f9075f4fd7..f0310d0da48a 100644
--- a/wizards/source/sfdocuments/SF_Base.xba
+++ b/wizards/source/sfdocuments/SF_Base.xba
@@ -428,6 +428,7 @@ Public Function OpenFormDocument(Optional ByVal FormDocument As Variant _
Dim bOpen As Boolean &apos; Return value
Dim vFormNames As Variant &apos; Array of all document form names present in the document
Dim oContainer As Object &apos; com.sun.star.awt.XWindow
+Dim oNewForm As Object &apos; Output of loadComponent()
Const cstThisSub = &quot;SFDocuments.Base.OpenFormDocument&quot;
Const cstSubArgs = &quot;FormDocument, [DesignMode=False]&quot;
@@ -446,22 +447,16 @@ Check:
End If
Try:
- If IsLoaded(FormDocument) Then &apos; Activate
- Set oContainer = _FormDocuments.getByHierarchicalName(FormDocument).Component.CurrentController.Frame.ContainerWindow
- With oContainer
- If .isVisible() = False Then .setVisible(True)
- .IsMinimized = False
- .setFocus()
- .toFront() &apos; Force window change in Linux
- Wait 1 &apos; Bypass desynchro issue in Linux
+ With _Component.CurrentController
+ If Not .IsConnected Then .connect()
+ &apos; loadComponent activates the form when already loaded
+ Set oNewForm = .loadComponent(com.sun.star.sdb.application.DatabaseObject.FORM, FormDocument, DesignMode)
+ &apos; When user opened manually the form in design mode and closed it, the next execution in normal mode needs to be confirmed as below
+ With oNewForm.CurrentController
+ If .isFormDesignMode() &lt;&gt; DesignMode Then .setFormDesignMode(DesignMode)
End With
- Else &apos; Open
- With _Component.CurrentController
- If Not .IsConnected Then .connect()
- .loadComponent(com.sun.star.sdb.application.DatabaseObject.FORM, FormDocument, DesignMode)
- End With
- bOpen = True
- End If
+ End With
+ bOpen = True
Finally:
OpenFormDocument = bOpen
diff --git a/wizards/source/sfdocuments/SF_Form.xba b/wizards/source/sfdocuments/SF_Form.xba
index 197aad194a28..0af834aea4d6 100644
--- a/wizards/source/sfdocuments/SF_Form.xba
+++ b/wizards/source/sfdocuments/SF_Form.xba
@@ -1296,7 +1296,6 @@ Check:
Try:
&apos; At main form termination, all database connections are lost
bAlive = Not IsNull(_Form)
- If bAlive Then bAlive = Not IsNull(_Form.ActiveConnection)
If Not bAlive Then GoTo Catch
Finally: