[GB.FORM.MDI]

* NEW: Workspace.Remove() is a new method for removing a window from the 
  workspace.
* NEW: Workspace.Add() automatically calls Workspace.Remove() to remove the 
  window from its previous workspace if needed.
* NEW: Workspace now raises the Attach and Detach events when a window is
  respectively attached or detached.


git-svn-id: svn://localhost/gambas/trunk@6361 867c0c6c-44f3-4631-809d-bfa615b0a4ec
This commit is contained in:
Benoît Minisini 2014-07-04 13:04:25 +00:00
parent 949dcbd6aa
commit fee4e6cbaf
3 changed files with 66 additions and 3 deletions

View file

@ -110,6 +110,14 @@ Special
:Close
:
(Window)Window;
:Attach
:
(Window)Window;
:Detach
:
(Window)Window;
ActiveWindow
p
@ -151,6 +159,10 @@ Add
m
Window
(hWindow)Window;[(Resizable)b]
Remove
m
(hWindow)Window;
Detach
m
@ -171,7 +183,15 @@ _Activate
m
_Close
_RaiseClose
m
b
(hWindow)Window;
_RaiseAttach
m
(hWindow)Window;
_RaiseDetach
m
(hWindow)Window;

View file

@ -139,6 +139,8 @@ Public Sub Detach(hWin As Window)
hWindow.Detached = True
Inc $nDetach
GetParent()._RaiseDetach(hWin)
End
Public Sub Attach(hWin As Window)
@ -160,6 +162,8 @@ Public Sub Attach(hWin As Window)
Dec $nDetach
Activate
GetParent()._RaiseAttach(hWin)
End
@ -873,7 +877,7 @@ End
Public Sub tabWorkspace_Close(Index As Integer)
If GetParent()._Close($aWindow[Index].Window) Then
If GetParent()._RaiseClose($aWindow[Index].Window) Then
Stop Event
Return
Endif

View file

@ -10,6 +10,8 @@ Public Const _Group As String = "Special"
Event Activate
Event Close({Window} As Window)
Event Attach({Window} As Window)
Event Detach({Window} As Window)
Property ActiveWindow As Window
Property Read Windows As Window[]
@ -30,14 +32,38 @@ Public Sub _new()
End
Private Sub GetWorkspace(hWindow As Window) As Workspace
Dim hCtrl As Control = hWindow
While hCtrl
If hCtrl Is Workspace Then Return hCtrl
hCtrl = hCtrl.Parent
Wend
End
Public Sub Add(hWindow As Window, Optional Resizable As Boolean) As Window
Dim hPrev As Workspace
hPrev = GetWorkspace(hWindow)
If hPrev Then hPrev.Remove(hWindow)
$hWorkspace.Add(hWindow, Resizable)
Return hWindow
End
Public Sub Remove(hWindow As Window)
$hWorkspace.Remove(hWindow)
End
Public Sub Detach(hWindow As Window)
$hWorkspace.Detach(hWindow)
@ -95,7 +121,7 @@ Public Sub _Activate()
End
Public Sub _Close(hWindow As Window) As Boolean
Public Sub _RaiseClose(hWindow As Window) As Boolean
Dim bCancel As Boolean
@ -104,6 +130,19 @@ Public Sub _Close(hWindow As Window) As Boolean
End
Public Sub _RaiseAttach(hWindow As Window)
Raise Attach(hWindow)
End
Public Sub _RaiseDetach(hWindow As Window)
Raise Detach(hWindow)
End
' Private Function ShowTitle_Read() As Boolean
'
' Return $hWorkspace.IsShowTitle()