summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorchr <chr@cybre.space>2020-01-19 18:17:10 -0800
committerchr <chr@cybre.space>2020-01-19 18:17:10 -0800
commitf99f829acedc0c77bc91a0369f1bdbcc4120d6a9 (patch)
tree9d21735dd35bc7f0a2d51c44cf449a71ae0f6146 /src
parent6c41e5b06c372dc621c34157c86fb60d627f7c95 (diff)
downloadNiGui-f99f829acedc0c77bc91a0369f1bdbcc4120d6a9.tar.gz
NiGui-f99f829acedc0c77bc91a0369f1bdbcc4120d6a9.zip
Implement remove method for GTK3
Diffstat (limited to 'src')
-rwxr-xr-xsrc/nigui.nim18
-rwxr-xr-xsrc/nigui/private/gtk3/platform_impl.nim4
2 files changed, 13 insertions, 9 deletions
diff --git a/src/nigui.nim b/src/nigui.nim
index 199b8e4..fd5810f 100755
--- a/src/nigui.nim
+++ b/src/nigui.nim
@@ -1951,15 +1951,15 @@ method add(container: Container, control: Control) =
container.triggerRelayout()
method remove(container: Container, control: Control) =
- discard
- # if container != control.fParentControl:
- # raiseError("control can not be removed because it is not member of the container")
- # else:
- # let startIndex = control.fIndex
- # container.childControls.del(control.fIndex)
- # for i in startIndex..container.childControls.high:
- # container.childControl[i].fIndex = i
- # control.parentControl = nil
+ if cast[Control](container) != control.fParentControl:
+ raiseError("control can not be removed because it is not member of the container")
+ else:
+ let startIndex = control.fIndex
+ container.fChildControls.del(container.fChildControls.find(control))
+ for i in startIndex..container.childControls.high:
+ container.childControls[i].fIndex = i
+ container.triggerRelayout()
+ control.fParentControl = nil
method setControlPosition(container: Container, control: Control, x, y: int) =
control.setPosition(x, y)
diff --git a/src/nigui/private/gtk3/platform_impl.nim b/src/nigui/private/gtk3/platform_impl.nim
index 28f67f8..80176be 100755
--- a/src/nigui/private/gtk3/platform_impl.nim
+++ b/src/nigui/private/gtk3/platform_impl.nim
@@ -1201,6 +1201,10 @@ method add(container: ContainerImpl, control: Control) =
gtk_container_add(container.fInnerHandle, cast[ControlImpl](control).fHandle)
procCall container.Container.add(control)
+method remove(container: ContainerImpl, control: Control) =
+ gtk_container_remove(container.fInnerHandle, cast[ControlImpl](control).fHandle)
+ procCall container.Container.remove(control)
+
method paddingLeft(container: ContainerImpl): int {.base.} = 5 # TODO
method paddingRight(container: ContainerImpl): int {.base.} = 5 # TODO
method paddingTop(container: ContainerImpl): int {.base.} = 15 # TODO