From fde2420c6e4025e0a48c25447ce48f3bfd6cb1a7 Mon Sep 17 00:00:00 2001 From: shmyga Date: Wed, 29 Jan 2014 18:19:32 +0400 Subject: [PATCH] fixes --- haxework/gui/TextView.hx | 7 ++++++- haxework/gui/ToggleButtonView.hx | 14 ++++++++++++++ haxework/gui/list/HListView.hx | 9 +++++---- haxework/gui/list/ListView.hx | 23 ++++++++++++++--------- haxework/gui/list/VListView.hx | 9 +++++---- haxework/net/BaseLoader.hx | 5 ++++- haxework/net/BaseMediaLoader.hx | 1 + haxework/net/BaseURLLoader.hx | 1 + 8 files changed, 50 insertions(+), 19 deletions(-) diff --git a/haxework/gui/TextView.hx b/haxework/gui/TextView.hx index f9e426b..4c50d71 100755 --- a/haxework/gui/TextView.hx +++ b/haxework/gui/TextView.hx @@ -119,10 +119,15 @@ class TextView extends SpriteView implements ITextView { return fontSize; } + private function currentText():String { + return _text; + } + override public function update():Void { textField.defaultTextFormat = textFormat; textField.autoSize = fill ? TextFieldAutoSize.NONE : TextFieldAutoSize.LEFT; - if (_text != null) textField.text = _text; + var t:String = currentText(); + if (t != null) textField.text = t; if (contentSize && !Std.is(skin, ISize)) { width = textField.width; height = textField.height; diff --git a/haxework/gui/ToggleButtonView.hx b/haxework/gui/ToggleButtonView.hx index 97ce5bb..13d0b6c 100755 --- a/haxework/gui/ToggleButtonView.hx +++ b/haxework/gui/ToggleButtonView.hx @@ -8,6 +8,8 @@ class ToggleButtonView extends ButtonView { public var on(default, set):Bool; public var onSkin(default, set):ISkin>; + public var onText(default, set):String; + public function new() { super(); } @@ -27,4 +29,16 @@ class ToggleButtonView extends ButtonView { override private function currentSkin():ISkin> { return on ? onSkin : skin; } + + private function set_onText(value:String):String { + if (onText != value) { + onText = value; + invalidate; + } + return onText; + } + + override private function currentText():String { + return on && onText != null ? onText : super.currentText(); + } } \ No newline at end of file diff --git a/haxework/gui/list/HListView.hx b/haxework/gui/list/HListView.hx index 11a2ff8..bc8cf69 100755 --- a/haxework/gui/list/HListView.hx +++ b/haxework/gui/list/HListView.hx @@ -17,14 +17,15 @@ class HListView, D> extends ListView { override private function recalcSize(item:ListItem):Void { var view:IView = item.view; - itemSize = view.width + view.leftMargin + view.rightMargin + layoutMargin; - size = Math.round(Math.max(0, width / itemSize)) + 2; + itemSize = view.width + view.leftMargin + view.rightMargin + container.layoutMargin; + size = Math.ceil(Math.max(0, width / itemSize)) + 2; + sizeDiff = size - (width / itemSize); } - override private function set_diff(value:Float):Float { + override private function set_offsetDiff(value:Float):Float { container.leftPadding = -value * itemSize; mask.leftMargin = -container.leftPadding; - return super.set_diff(value); + return super.set_offsetDiff(value); } override private function onMouseWheel(value:Int):Void { diff --git a/haxework/gui/list/ListView.hx b/haxework/gui/list/ListView.hx index cc6c6b3..c2c0ac6 100755 --- a/haxework/gui/list/ListView.hx +++ b/haxework/gui/list/ListView.hx @@ -16,7 +16,12 @@ class ListView, D> extends GroupView implements ScrollListener { public var data(default, set):Array; public var renderer(null, set):IRenderer; + public var offset(default, set):Int; + private var offsetDiff(default, set):Float; + + private var size(default, set):Int; + private var sizeDiff:Float; public var dispatcher(default, null):IDispatcher>; public var scroll(default, set):ScrollView; @@ -24,8 +29,6 @@ class ListView, D> extends GroupView implements ScrollListener { private var container:GroupView; private var mask:SpriteView; private var itemSize:Float; - private var diff(default, set):Float; - private var size(default, set):Int; private var items:Array>; private var itemsListeners:Map, MouseEvent->Void>; @@ -46,7 +49,8 @@ class ListView, D> extends GroupView implements ScrollListener { dispatcher = new Dispatcher>(); itemSize = 0; offset = 0; - diff = 0; + offsetDiff = 0; + sizeDiff = 0; items = new Array>(); itemsListeners = new Map, MouseEvent->Void>(); content.addEventListener(MouseEvent.MOUSE_WHEEL, onMouseWheelEvent); @@ -69,11 +73,12 @@ class ListView, D> extends GroupView implements ScrollListener { public function onScroll(position:Float):Void { var x:Float = data.length * position; offset = Math.round(x) - 1; - diff = (x - offset); + offsetDiff = (x - offset); } private function onMouseWheelEvent(event:MouseEvent):Void { - diff = 0; + event.preventDefault(); + offsetDiff = 0; onMouseWheel(event.delta); } @@ -102,7 +107,7 @@ class ListView, D> extends GroupView implements ScrollListener { private function render():Void { if (data != null && renderer != null) { - scroll.ratio = Math.min(1.0, size / data.length); + scroll.ratio = Math.min(1.0, (size - sizeDiff) / data.length); scroll.position = (offset / data.length); for (i in 0...size) { var item:ListItem = items[i]; @@ -145,9 +150,9 @@ class ListView, D> extends GroupView implements ScrollListener { return size; } - private function set_diff(value:Float):Float { - diff = value; - return diff; + private function set_offsetDiff(value:Float):Float { + offsetDiff = value; + return offsetDiff; } private function setClickListener(item:ListItem):Void { diff --git a/haxework/gui/list/VListView.hx b/haxework/gui/list/VListView.hx index 9af9b7b..72a48c6 100755 --- a/haxework/gui/list/VListView.hx +++ b/haxework/gui/list/VListView.hx @@ -17,14 +17,15 @@ class VListView, D> extends ListView { override private function recalcSize(item:ListItem):Void { var view:IView = item.view; - itemSize = view.height + view.topMargin + view.bottomMargin + layoutMargin; - size = Math.round(Math.max(0, height / itemSize)) + 1; + itemSize = view.height + view.topMargin + view.bottomMargin + container.layoutMargin; + size = Math.ceil(Math.max(0, height / itemSize)) + 2; + sizeDiff = size - (height / itemSize); } - override private function set_diff(value:Float):Float { + override private function set_offsetDiff(value:Float):Float { container.topPadding = -value * itemSize; mask.topMargin = -container.topPadding; - return super.set_diff(value); + return super.set_offsetDiff(value); } override private function onMouseWheel(value:Int):Void { diff --git a/haxework/net/BaseLoader.hx b/haxework/net/BaseLoader.hx index d3dc2e8..af4fbdf 100755 --- a/haxework/net/BaseLoader.hx +++ b/haxework/net/BaseLoader.hx @@ -46,11 +46,14 @@ class BaseLoader implements ILoader { //L.d(TAG, "Request: " + prepareUrl(url)); //internalRequest(prepareUrl(url)); Provider.get(ILoaderManager).add(this); + return callback; + } + + private function cockTimeout():Void { if (timeout > 0) { timer = new Timer(timeout); timer.run = callTimeout; } - return callback; } public function fromBytes(data:ByteArray):ICallback { diff --git a/haxework/net/BaseMediaLoader.hx b/haxework/net/BaseMediaLoader.hx index a98309b..0086637 100755 --- a/haxework/net/BaseMediaLoader.hx +++ b/haxework/net/BaseMediaLoader.hx @@ -41,6 +41,7 @@ class BaseMediaLoader extends BaseLoader { }*/ override private function internalRequest(url:String):Void { + cockTimeout(); loader = buildLoader(); loader.load(new URLRequest(url), buildLoaderContext()); } diff --git a/haxework/net/BaseURLLoader.hx b/haxework/net/BaseURLLoader.hx index dc0f973..6111875 100755 --- a/haxework/net/BaseURLLoader.hx +++ b/haxework/net/BaseURLLoader.hx @@ -25,6 +25,7 @@ class BaseURLLoader extends BaseLoader { } override private function internalRequest(url:String):Void { + cockTimeout(); loader = buildLoader(); var request:URLRequest = new URLRequest(url); if (method != URLRequestMethod.POST && method != URLRequestMethod.GET) {