diff --git a/demo/project.xml b/demo/project.xml
new file mode 100644
index 0000000..e43fc5a
--- /dev/null
+++ b/demo/project.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/demo/run.sh b/demo/run.sh
index 0b84004..b8e8469 100644
--- a/demo/run.sh
+++ b/demo/run.sh
@@ -1,4 +1,5 @@
#!/usr/bin/env bash
echo "`pwd`/target" > ~/.macromedia/Flash_Player/#Security/FlashPlayerTrust/haxework_demo.cfg
. /opt/sdk/haxe/3.4.7/activate
-haxe build.hxml && flashplayerdebugger target/demo.swf
+haxe build.hxml && flashplayerdebugger target/demo.swf &
+tail -f ~/.macromedia/Flash_Player/Logs/flashlog.txt
diff --git a/demo/run_openfl.sh b/demo/run_openfl.sh
new file mode 100644
index 0000000..dbb6797
--- /dev/null
+++ b/demo/run_openfl.sh
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+echo "`pwd`/target/flash/bin" > ~/.macromedia/Flash_Player/#Security/FlashPlayerTrust/haxework_demo.cfg
+. /opt/sdk/haxe/3.4.7/activate
+haxelib run openfl test linux
diff --git a/demo/src/demo/Demo.hx b/demo/src/demo/Demo.hx
index 1bc514c..1d05836 100644
--- a/demo/src/demo/Demo.hx
+++ b/demo/src/demo/Demo.hx
@@ -1,21 +1,16 @@
package demo;
-import haxework.gui.InputView;
-import flash.display.BitmapData;
-import haxework.gui.ToggleButtonView;
+import haxework.gui.frame.IFrameSwitcher;
import haxework.gui.IGroupView;
import haxework.gui.IView;
-import haxework.resources.Resources;
-import haxework.resources.IResources;
-import haxework.gui.frame.IFrameSwitcher;
-import haxework.net.manage.LoaderManager;
-import haxework.net.manage.ILoaderManager;
-import haxework.log.TraceLogger;
import haxework.gui.Root;
+import haxework.gui.ToggleButtonView;
import haxework.gui.VGroupView;
-
-@:bitmap("haxe-logo.png")
-class HaxeLogo extends BitmapData { }
+import haxework.log.TraceLogger;
+import haxework.net.manage.ILoaderManager;
+import haxework.net.manage.LoaderManager;
+import haxework.resources.IResources;
+import haxework.resources.Resources;
@:template class Demo extends VGroupView {
@@ -26,29 +21,16 @@ class HaxeLogo extends BitmapData { }
L.push(new TraceLogger());
resources = new Resources();
manager = new LoaderManager();
- resources.image.put("logo", new HaxeLogo(0, 0));
+ resources.image.put("logo", HaxeLogo.resolve());
+ Theme.setColor(0x33aa33);
var demo = new Demo();
demo.switcher.change("list_form");
Root.bind(demo);
+ Root.instance.onResize.connect(function(rect) trace("resize", rect));
}
@:view var switcher:IFrameSwitcher;
@:view var tabs:IGroupView;
- @:view var color:InputView;
-
- private var themeColor(default, set):Int;
-
- private function init():Void {
- resources.color.bind("theme", this, "themeColor");
- resources.color.put("theme", 0x33aa33);
- }
-
- private function set_themeColor(value:Int):Int {
- themeColor = value;
- Theme.setColor(value);
- this.color.text = StringTools.hex(value);
- return themeColor;
- }
private function onFrameSwicth(frame:IView):Void {
for (view in tabs.views) cast(view, ToggleButtonView).on = view.id == frame.id;
diff --git a/demo/src/demo/Demo.yaml b/demo/src/demo/Demo.yaml
index de748c0..9cb02e0 100644
--- a/demo/src/demo/Demo.yaml
+++ b/demo/src/demo/Demo.yaml
@@ -49,32 +49,31 @@ views:
- $type: haxework.gui.HGroupView
geometry.size.percent.width: 100
geometry.padding: 10
- layout.hAlign: RIGHT
layout.margin: 10
views:
- - id: color
- $type: haxework.gui.InputView
- skin: [ { $type: [haxework.gui.skin.Skin.border, 0xffffff] } ]
- +onChange: "$code:function(a) resources.color.put('theme', Std.parseInt('0x'+a))"
- fontColor: 0xffffff
- geometry.size.percent.width: 100
- $type: haxework.gui.ButtonView
geometry.padding: [25, 8]
skin: $r:skin:button
text: green
- +onPress: "$code:Theme.setColor(0x33aa33)"
+ +onPress: "$code:Theme.setColor(0x33AA33)"
- $type: haxework.gui.ButtonView
geometry.padding: [25, 8]
skin: $r:skin:button
text: red
- +onPress: "$code:Theme.setColor(0xaa3333)"
+ +onPress: "$code:Theme.setColor(0xAA3333)"
- $type: haxework.gui.ButtonView
geometry.padding: [25, 8]
skin: $r:skin:button
text: yellow
- +onPress: "$code:Theme.setColor(0xaaaa33)"
- geometry.margin.right: 20
-
+ +onPress: "$code:Theme.setColor(0xFFCC55, 0x555555)"
+ - $type: haxework.gui.ButtonView
+ geometry.padding: [25, 8]
+ skin: $r:skin:button
+ text: pink
+ +onPress: "$code:Theme.setColor(0xCC33AA)"
+ # separator
+ - $type: haxework.gui.SpriteView
+ geometry.size.stretch: true
- $type: haxework.gui.ButtonView
geometry.padding: [25, 8]
skin: $r:skin:button
diff --git a/demo/src/demo/HaxeLogo.hx b/demo/src/demo/HaxeLogo.hx
new file mode 100644
index 0000000..acd069e
--- /dev/null
+++ b/demo/src/demo/HaxeLogo.hx
@@ -0,0 +1,17 @@
+package demo;
+
+import flash.display.BitmapData;
+
+#if !openfl
+@:bitmap("haxe-logo.png")
+#end
+class HaxeLogo extends BitmapData {
+
+ public static function resolve():BitmapData {
+ #if openfl
+ return openfl.Assets.getBitmapData("image/haxe-logo.png");
+ #else
+ return new HaxeLogo(0, 0);
+ #end
+ }
+}
diff --git a/src/main/haxework/gui/Root.hx b/src/main/haxework/gui/Root.hx
index 3ba3f75..b96d4ad 100755
--- a/src/main/haxework/gui/Root.hx
+++ b/src/main/haxework/gui/Root.hx
@@ -1,60 +1,73 @@
package haxework.gui;
-import flash.errors.Error;
-import flash.Lib;
+import flash.display.DisplayObject;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
-import flash.display.DisplayObject;
+import flash.errors.Error;
import flash.events.Event;
-import flash.display.Sprite;
+import flash.geom.Rectangle;
+import flash.Lib;
+import haxework.core.IDisposable;
+import haxework.signal.Signal;
-class Root {
+class Root implements IDisposable {
- public static function bind(view:IView, autoSize:Bool = true) {
- new Root(view, autoSize);
- }
-
- public static var instance(default, null):Root;
-
- public var view(default, null):IView;
- public var autoSize(default, default):Bool;
-
- public function new(view:IView, autoSize:Bool = true) {
- if (instance != null) throw new Error("Only one instance");
- instance = this;
- this.view = view;
- this.autoSize = autoSize;
- Lib.current.addChild(view.content);
- var content:DisplayObject = view.content;
- if (content.stage == null) {
- content.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
- } else {
- onAddedToStage();
+ public static function bind(view:IView, autoSize:Bool = true) {
+ new Root(view, autoSize);
}
- View.updater.update();
- }
- private function onAddedToStage(?_):Void {
- var content:DisplayObject = view.content;
- content.removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
- content.stage.scaleMode = StageScaleMode.NO_SCALE;
- content.stage.align = StageAlign.TOP_LEFT;
- View.updater.stage = content.stage;
+ public static var instance(default, null):Root;
- content.stage.addEventListener(Event.RESIZE, onResize);
- content.stage.stageFocusRect = false;
- onResize();
- }
+ public var view(default, null):IView;
+ public var autoSize(default, default):Bool;
+ public var onResize(default, null):Signal = new Signal();
- private function onResize(?_):Void {
- var content:DisplayObject = view.content;
- if (autoSize) {
- view.width = content.stage.stageWidth;
- view.height = content.stage.stageHeight;
- } else {
- view.x = (content.stage.stageWidth - view.width) / 2;
- view.y = (content.stage.stageHeight - view.height) / 2;
+ public function new(view:IView, autoSize:Bool = true) {
+ if (instance != null) throw new Error("Only one instance");
+ instance = this;
+ this.view = view;
+ this.autoSize = autoSize;
+ Lib.current.addChild(view.content);
+ var content:DisplayObject = view.content;
+ if (content.stage == null) {
+ content.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
+ } else {
+ onAddedToStage();
+ }
+ View.updater.update();
}
- L.d("Screen", content.stage.stageWidth + "x" + content.stage.stageHeight);
- }
+
+ private function onAddedToStage(?_):Void {
+ var content:DisplayObject = view.content;
+ content.removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
+ content.stage.scaleMode = StageScaleMode.NO_SCALE;
+ content.stage.align = StageAlign.TOP_LEFT;
+ View.updater.stage = content.stage;
+
+ content.stage.addEventListener(Event.RESIZE, onResizeEvent);
+ content.stage.stageFocusRect = false;
+ onResizeEvent();
+ }
+
+ private function onResizeEvent(?_):Void {
+ var content:DisplayObject = view.content;
+ if (autoSize) {
+ view.width = content.stage.stageWidth;
+ view.height = content.stage.stageHeight;
+ view.toUpdate();
+ } else {
+ view.x = (content.stage.stageWidth - view.width) / 2;
+ view.y = (content.stage.stageHeight - view.height) / 2;
+ }
+ onResize.emit(new Rectangle(0, 0, content.stage.stageWidth, content.stage.stageHeight));
+ }
+
+ public function dispose():Void {
+ if (view != null) {
+ view.content.stage.removeEventListener(Event.RESIZE, onResizeEvent);
+ view = null;
+ }
+ onResize.dispose();
+ }
+
}
diff --git a/src/main/haxework/gui/ScrollView.hx b/src/main/haxework/gui/ScrollView.hx
index 2d6580c..a902197 100644
--- a/src/main/haxework/gui/ScrollView.hx
+++ b/src/main/haxework/gui/ScrollView.hx
@@ -1,9 +1,10 @@
package haxework.gui;
-import flash.display.Shape;
-import haxework.gui.skin.Skin;
+import flash.display.DisplayObject;
+import flash.display.Sprite;
import flash.events.MouseEvent;
import haxework.gui.list.ScrollBarView;
+import haxework.gui.skin.Skin;
import haxework.signal.Signal;
class ScrollView extends HGroupView {
@@ -14,12 +15,12 @@ class ScrollView extends HGroupView {
public var ratio(default, null):Signal = new Signal();
public var position(default, set):Float = 0;
- private var mask:Shape;
+ private var mask:Sprite;
public function new() {
super();
skin = [Skin.color(0x000000, 0.0)];
- mask = new Shape();
+ mask = new Sprite();
content.addChild(mask);
content.addEventListener(MouseEvent.MOUSE_WHEEL, onMouseWheelEvent);
}
@@ -32,7 +33,7 @@ class ScrollView extends HGroupView {
private function set_view(value:IView):IView {
view = value;
views = [view, scroll];
- view.content.mask = mask;
+ cast(view.content, DisplayObject).mask = mask;
return view;
}
@@ -42,7 +43,8 @@ class ScrollView extends HGroupView {
ratio.connect(function(ratio) {
if (scroll.ratio == ratio) return;
scroll.ratio = ratio;
- //scroll.visible = scroll.inLayout = ratio < 1;
+ scroll.visible = ratio < 1;
+ scroll.geometry.skipLayout = ratio >= 1;
});
scroll.onScroll.connect(function(position) this.position = position);
return scroll;
@@ -65,7 +67,7 @@ class ScrollView extends HGroupView {
view.y = - position * view.height;
// mask redraw
mask.graphics.clear();
- mask.graphics.beginFill(0, 0);
+ mask.graphics.beginFill(0xffffff);
mask.graphics.drawRect(0, 0, width, height);
mask.graphics.endFill();
}
diff --git a/src/main/haxework/gui/TextView.hx b/src/main/haxework/gui/TextView.hx
index c5c13f0..797c1f1 100755
--- a/src/main/haxework/gui/TextView.hx
+++ b/src/main/haxework/gui/TextView.hx
@@ -10,8 +10,8 @@ import haxework.text.BitmapTextField;
import haxework.text.TextUtil;
class TextLayout {
- public var hAlign(default, default):HAlign = HAlign.NONE;
- public var vAlign(default, default):VAlign = VAlign.NONE;
+ public var hAlign(default, default):HAlign = NONE;
+ public var vAlign(default, default):VAlign = NONE;
public function new() {}
}
@@ -53,7 +53,7 @@ class TextView extends SpriteView implements ITextView {
textFormat.font = "Arial";
textFormat.size = 16;
textFormat.leading = 0;
- textFormat.align = TextFormatAlign.CENTER;
+ textFormat.align = TextFormatAlign.LEFT;
content.addChild(textField);
}
@@ -157,21 +157,6 @@ class TextView extends SpriteView implements ITextView {
textField.setTextFormat(textFormat);
updateTextSize();
placeTextField(textField);
- /*if (false && _text != null && _text.length > 0) {
- #if html5
- var h = _textHeight;
- var w = _textWidth;
- //if (h > textFormat.size * 1.5) h = h / 2;
- textField.height = h;
- textField.width = w;
- #end
- width = textField.width + leftPadding + rightPadding;
- height = textField.height + topPadding + bottomPadding;
- textField.x = leftPadding;
- textField.y = topPadding;
- } else {
- placeTextField(textField);
- }*/
//ToDo:
//var t:Point = content.localToGlobal(new Point(textField.x, textField.y));
//t.x = Math.round(t.x);
@@ -187,15 +172,13 @@ class TextView extends SpriteView implements ITextView {
textField.height = geometry.size.content.height;
textField.x = switch (layout.hAlign) {
- case HAlign.NONE: 0;
- case HAlign.LEFT: geometry.padding.left;
+ case HAlign.LEFT | HAlign.NONE: geometry.padding.left;
case HAlign.CENTER: (width - textField.width) / 2 + geometry.padding.left - geometry.padding.right;
case HAlign.RIGHT: width - textField.width - geometry.padding.right;
default: 0;
}
textField.y = switch (layout.vAlign) {
- case VAlign.NONE: 0;
- case VAlign.TOP: geometry.padding.top;
+ case VAlign.TOP | VAlign.NONE: geometry.padding.top;
case VAlign.MIDDLE: (height - geometry.size.content.height) / 2 + geometry.padding.top - geometry.padding.bottom;
case VAlign.BOTTOM: height - geometry.size.content.height - geometry.padding.bottom;
default: 0;
diff --git a/src/main/haxework/gui/View.hx b/src/main/haxework/gui/View.hx
index c761e1f..0cefc11 100755
--- a/src/main/haxework/gui/View.hx
+++ b/src/main/haxework/gui/View.hx
@@ -84,7 +84,6 @@ class View implements IView {
}
private function set_width(value:Float):Float {
- //trace('${this.id}.width = $value');
if (width != value) {
width = value;
toRedraw();
@@ -93,7 +92,6 @@ class View implements IView {
}
private function set_height(value:Float):Float {
- //trace('${this.id}.height = $value');
if (height != value) {
height = value;
toRedraw();
@@ -148,6 +146,7 @@ class Updater {
private function set_stage(value:Stage):Stage {
value.addEventListener(Event.ENTER_FRAME, update);
+ value.addEventListener(Event.ENTER_FRAME, redraw);
return value;
}
@@ -160,19 +159,18 @@ class Updater {
}
public function update(?_):Void {
- var t = Date.now().getTime();
while (updateViews.length > 0) {
var v = null;
v = updateViews.shift();
v.update();
}
+ }
+
+ public function redraw(?_):Void {
while (redrawViews.length > 0) {
var v = null;
v = redrawViews.shift();
v.redraw();
}
- t = Date.now().getTime() - t;
- if (t > 10) trace("UPDATE(" + t + ")");
}
-
}
diff --git a/src/main/haxework/gui/core/Geometry.hx b/src/main/haxework/gui/core/Geometry.hx
index 3a111aa..27252d9 100644
--- a/src/main/haxework/gui/core/Geometry.hx
+++ b/src/main/haxework/gui/core/Geometry.hx
@@ -1,6 +1,5 @@
package haxework.gui.core;
-import haxework.gui.core.Geometry.SizeValue;
abstract Size(Array) {
public var width(get, set):Float;
public var height(get, set):Float;
@@ -155,25 +154,25 @@ class Geometry {
public function get_width():SizeValue {
if (size.percent.width > -1) {
- return SizeValue.PERCENT(size.percent.width);
+ return PERCENT(size.percent.width);
}
var result = size.fixed.width;
if (result < 0) {
result = size.content.width;
}
result += padding.horizontal;
- return SizeValue.FIXED(result);
+ return FIXED(result);
}
public function get_height():SizeValue {
if (size.percent.height > -1) {
- return SizeValue.PERCENT(size.percent.height);
+ return PERCENT(size.percent.height);
}
var result = size.fixed.height;
if (result < 0) {
result = size.content.height;
}
result += padding.vertical;
- return SizeValue.FIXED(result);
+ return FIXED(result);
}
}
diff --git a/src/main/haxework/gui/layout/DefaultLayout.hx b/src/main/haxework/gui/layout/DefaultLayout.hx
index bab5c2b..5f937a6 100755
--- a/src/main/haxework/gui/layout/DefaultLayout.hx
+++ b/src/main/haxework/gui/layout/DefaultLayout.hx
@@ -11,8 +11,8 @@ class DefaultLayout implements ILayout {
public var margin(default, default):Float;
public function new() {
- hAlign = HAlign.NONE;
- vAlign = VAlign.NONE;
+ hAlign = NONE;
+ vAlign = NONE;
margin = 0;
}
@@ -41,48 +41,48 @@ class DefaultLayout implements ILayout {
private function setViewWidth(group:IGroupView, view:IView):Void {
switch (view.geometry.width) {
- case SizeValue.FIXED(value):
+ case FIXED(value):
view.width = value;
- case SizeValue.PERCENT(value):
+ case PERCENT(value):
view.width = value / 100 * (group.width - view.geometry.margin.horizontal - group.geometry.padding.horizontal);
}
}
private function setViewHeight(group:IGroupView, view:IView):Void {
switch (view.geometry.height) {
- case SizeValue.FIXED(value):
+ case FIXED(value):
view.height = value;
- case SizeValue.PERCENT(value):
+ case PERCENT(value):
view.height = value / 100 * (group.height - view.geometry.margin.vertical - group.geometry.padding.vertical);
}
}
private function placeViewHorizontal(group:IGroupView, view:IView):Void {
var align:HAlign = view.geometry.hAlign;
- if (align == HAlign.NONE) align = hAlign;
+ if (align == NONE) align = hAlign;
switch (align) {
- case HAlign.LEFT | HAlign.NONE:
+ case LEFT | NONE:
view.x = group.geometry.padding.left + view.geometry.margin.left;
- case HAlign.CENTER:
+ case CENTER:
view.x = (group.width - view.width) / 2 +
(group.geometry.padding.left - group.geometry.padding.right) +
(view.geometry.margin.left - view.geometry.margin.right);
- case HAlign.RIGHT:
+ case RIGHT:
view.x = group.width - view.width - group.geometry.padding.right - view.geometry.margin.right;
}
}
private function placeViewVertical(group:IGroupView, view:IView):Void {
var align:VAlign = view.geometry.vAlign;
- if (align == VAlign.NONE) align = vAlign;
+ if (align == NONE) align = vAlign;
switch (align) {
- case VAlign.TOP | VAlign.NONE:
+ case TOP | NONE:
view.y = group.geometry.padding.top + view.geometry.margin.top;
- case VAlign.MIDDLE:
+ case MIDDLE:
view.y = (group.height - view.height) / 2 +
(group.geometry.padding.top - group.geometry.padding.bottom) +
(view.geometry.margin.top - view.geometry.margin.bottom);
- case VAlign.BOTTOM:
+ case BOTTOM:
view.y = group.height - view.height - group.geometry.padding.bottom - view.geometry.margin.bottom;
}
}
diff --git a/src/main/haxework/gui/layout/HorizontalLayout.hx b/src/main/haxework/gui/layout/HorizontalLayout.hx
index 5bb2264..4175657 100755
--- a/src/main/haxework/gui/layout/HorizontalLayout.hx
+++ b/src/main/haxework/gui/layout/HorizontalLayout.hx
@@ -19,9 +19,9 @@ class HorizontalLayout extends DefaultLayout {
for (view in views) {
switch (view.geometry.width) {
- case SizeValue.PERCENT(value):
+ case PERCENT(value):
leftSize -= (view.geometry.margin.horizontal);
- case SizeValue.FIXED(value):
+ case FIXED(value):
fixedSize += (value + view.geometry.margin.horizontal);
}
setViewHeight(group, view);
@@ -35,20 +35,19 @@ class HorizontalLayout extends DefaultLayout {
leftSize -= fixedSize;
for (view in views) {
switch (view.geometry.width) {
- case SizeValue.PERCENT(value):
+ case PERCENT(value):
view.width = value / 100 * leftSize;
fixedSize += view.width + view.geometry.margin.horizontal;
- case SizeValue.FIXED(value):
+ case FIXED(value):
view.width = value;
}
}
var x:Float = 0;
switch (hAlign) {
- case HAlign.LEFT: x = group.geometry.padding.left;
- case HAlign.CENTER: x = (group.width - fixedSize) / 2 + group.geometry.padding.left - group.geometry.padding.right;
- case HAlign.RIGHT: x = group.width - fixedSize - group.geometry.padding.right;
- case _:
+ case LEFT | NONE: x = group.geometry.padding.left;
+ case CENTER: x = (group.width - fixedSize) / 2 + group.geometry.padding.left - group.geometry.padding.right;
+ case RIGHT: x = group.width - fixedSize - group.geometry.padding.right;
}
for (view in views) {
diff --git a/src/main/haxework/gui/layout/VerticalLayout.hx b/src/main/haxework/gui/layout/VerticalLayout.hx
index ae807cd..01fad4b 100755
--- a/src/main/haxework/gui/layout/VerticalLayout.hx
+++ b/src/main/haxework/gui/layout/VerticalLayout.hx
@@ -15,9 +15,9 @@ class VerticalLayout extends DefaultLayout {
for (view in views) {
switch (view.geometry.height) {
- case SizeValue.PERCENT(value):
+ case PERCENT(value):
leftSize -= (view.geometry.margin.vertical);
- case SizeValue.FIXED(value):
+ case FIXED(value):
fixedSize += (value + view.geometry.margin.vertical);
}
setViewWidth(group, view);
@@ -31,20 +31,19 @@ class VerticalLayout extends DefaultLayout {
leftSize -= fixedSize;
for (view in views) {
switch (view.geometry.height) {
- case SizeValue.PERCENT(value):
+ case PERCENT(value):
view.height = value / 100 * leftSize;
fixedSize += view.height + view.geometry.margin.vertical;
- case SizeValue.FIXED(value):
+ case FIXED(value):
view.height = value;
}
}
var y:Float = 0;
switch (vAlign) {
- case VAlign.TOP: y = group.geometry.padding.top;
- case VAlign.MIDDLE: y = (group.height - fixedSize) / 2 + group.geometry.padding.top - group.geometry.padding.bottom;
- case VAlign.BOTTOM: y = group.height - fixedSize - group.geometry.padding.bottom;
- case _:
+ case TOP | NONE: y = group.geometry.padding.top;
+ case MIDDLE: y = (group.height - fixedSize) / 2 + group.geometry.padding.top - group.geometry.padding.bottom;
+ case BOTTOM: y = group.height - fixedSize - group.geometry.padding.bottom;
}
for (view in views) {
diff --git a/src/main/haxework/gui/list/HListView.hx b/src/main/haxework/gui/list/HListView.hx
index 1f6b6da..2da214a 100755
--- a/src/main/haxework/gui/list/HListView.hx
+++ b/src/main/haxework/gui/list/HListView.hx
@@ -16,7 +16,7 @@ class HListView extends ListView {
}
override private function recalcSize(item:IListItemView):Void {
- var itemSize = switch(item.geometry.width) {
+ itemSize = switch(item.geometry.width) {
case SizeValue.FIXED(value): value + item.geometry.margin.horizontal + box.layout.margin;
case _: 0;
}
@@ -27,6 +27,8 @@ class HListView extends ListView {
override private function set_offsetDiff(value:Float):Float {
box.geometry.padding.left = -value * itemSize;
mask.geometry.margin.left = -box.geometry.padding.left;
+ box.toUpdate();
+ mask.toUpdate();
return super.set_offsetDiff(value);
}
diff --git a/src/main/haxework/gui/list/LabelListItem.hx b/src/main/haxework/gui/list/LabelListItem.hx
index b2e06a1..f2b4a7b 100644
--- a/src/main/haxework/gui/list/LabelListItem.hx
+++ b/src/main/haxework/gui/list/LabelListItem.hx
@@ -1,5 +1,6 @@
package haxework.gui.list;
+import haxework.gui.core.HAlign;
import haxework.gui.list.ListView.IListItemView;
import haxework.gui.skin.ColorSkin;
@@ -12,6 +13,8 @@ class LabelListItem extends LabelView implements IListItemView {
super();
geometry.size.percent.width = 100;
geometry.size.fixed.height = 20;
+ geometry.padding = 8;
+ layout.hAlign = HAlign.LEFT;
}
private function set_data(value:T):T {
data = value;
diff --git a/src/main/haxework/gui/list/VListView.hx b/src/main/haxework/gui/list/VListView.hx
index ea18295..de02552 100755
--- a/src/main/haxework/gui/list/VListView.hx
+++ b/src/main/haxework/gui/list/VListView.hx
@@ -16,7 +16,7 @@ class VListView extends ListView {
}
override private function recalcSize(item:IListItemView):Void {
- var itemSize = switch(item.geometry.height) {
+ itemSize = switch(item.geometry.height) {
case SizeValue.FIXED(value): value + item.geometry.margin.vertical + box.layout.margin;
case _: 0;
}
@@ -27,6 +27,8 @@ class VListView extends ListView {
override private function set_offsetDiff(value:Float):Float {
box.geometry.padding.top = -value * itemSize;
mask.geometry.margin.top = -box.geometry.padding.top;
+ box.toUpdate();
+ mask.toUpdate();
return super.set_offsetDiff(value);
}
diff --git a/src/main/haxework/resources/Resources.hx b/src/main/haxework/resources/Resources.hx
index f1fe3a0..9cac845 100755
--- a/src/main/haxework/resources/Resources.hx
+++ b/src/main/haxework/resources/Resources.hx
@@ -18,7 +18,6 @@ class ResMap extends StringMap {
}
public function put(key:String, value:T):Void {
- trace(key, value);
set(key, value);
if (listeners.exists(key)) {
for (f in listeners.get(key)) call(f, value);
diff --git a/src/main/haxework/text/TextUtil.hx b/src/main/haxework/text/TextUtil.hx
index a6d5553..1365416 100644
--- a/src/main/haxework/text/TextUtil.hx
+++ b/src/main/haxework/text/TextUtil.hx
@@ -23,4 +23,4 @@ class TextUtil {
#end
return new Point(_textWidth, _textHeight);
}
-}
\ No newline at end of file
+}