From 2d69e0452b5cf6f659c19b3366e5a01613e430e8 Mon Sep 17 00:00:00 2001 From: Wesley Kerfoot Date: Fri, 14 Aug 2020 00:00:57 -0400 Subject: [PATCH] handle window property types --- src/nimwin.nim | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/nimwin.nim b/src/nimwin.nim index 3f350df..2239bfd 100644 --- a/src/nimwin.nim +++ b/src/nimwin.nim @@ -31,13 +31,14 @@ template RunProcess(procedure : untyped) : untyped = spawn handleProcess(p) type - WinPropKind = enum pkString, pkCardinal, pkAtom + WinPropKind = enum pkString, pkCardinal, pkAtom, pkWindow WinProp = ref object of RootObj name : string case kind: WinPropKind of pkString: strProp : string of pkCardinal: cardinalProp : seq[uint] of pkAtom: atomProps : seq[string] + of pkWindow: windowProps : seq[TWindow] type Window = ref object of RootObj x : cint @@ -97,6 +98,8 @@ proc zipperMove[T](zipper: Zipper[T], direction: string) : Zipper[T] = proc zipperInsert[T](zipper: Zipper[T], item: T) : Zipper[T] = # insert a new item before as the current focus + if zipper.zipperExists(item): + return zipper result.lhs = zipper.lhs result.rhs = @[item] & zipper.rhs @@ -215,6 +218,15 @@ proc getPropertyValue(display : PDisplay, window : TWindow, property : TAtom) : atomProps: atomPropNames ) ) + + elif typeName == "WINDOW": + result = some( + WinProp( + name: atomName.get, + kind: pkWindow, + windowProps: mapIt(unpackPropValue(actualTypeFormat.int, nItemsReturn.int, propValue), it.culong) + ) + ) else: result = none(WinProp)