Merge pull request #571 from NativeScript/hhristov/layout-fix

Fix ListView module to check for layoutBase instead of Layout
This commit is contained in:
Hristo Hristov
2015-08-11 15:33:53 +03:00
11 changed files with 15 additions and 50 deletions

View File

@ -144,6 +144,8 @@
<TypeScriptCompile Include="apps\animations\model.ts" /> <TypeScriptCompile Include="apps\animations\model.ts" />
<TypeScriptCompile Include="apps\orientation-demo\main-page.ts" /> <TypeScriptCompile Include="apps\orientation-demo\main-page.ts" />
<TypeScriptCompile Include="apps\tests\ui\animation\animation-tests.ts" /> <TypeScriptCompile Include="apps\tests\ui\animation\animation-tests.ts" />
<TypeScriptCompile Include="apps\tests\xml-declaration\inherited-base-page.ts" />
<TypeScriptCompile Include="apps\tests\xml-declaration\inherited-page.ts" />
<TypeScriptCompile Include="ui\animation\animation.d.ts" /> <TypeScriptCompile Include="ui\animation\animation.d.ts" />
<TypeScriptCompile Include="ui\animation\animation-common.ts"> <TypeScriptCompile Include="ui\animation\animation-common.ts">
<DependentUpon>animation.d.ts</DependentUpon> <DependentUpon>animation.d.ts</DependentUpon>
@ -917,6 +919,7 @@
</Content> </Content>
<Content Include="apps\tests\test-icon.png" /> <Content Include="apps\tests\test-icon.png" />
<Content Include="apps\tests\ui\style\test.css" /> <Content Include="apps\tests\ui\style\test.css" />
<Content Include="apps\tests\xml-declaration\inherited-page.xml" />
<Content Include="apps\tests\xml-declaration\mymodulewithxml\my-control-no-js.xml"> <Content Include="apps\tests\xml-declaration\mymodulewithxml\my-control-no-js.xml">
<SubType>Designer</SubType> <SubType>Designer</SubType>
</Content> </Content>
@ -1924,7 +1927,7 @@
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile> <SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
</WebProjectProperties> </WebProjectProperties>
</FlavorProperties> </FlavorProperties>
<UserProperties ui_2scroll-view_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2editable-text-demo_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2absolute-layout-demo_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2gallery-app_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2content-view_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2web-view_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2linear-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2absolute-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2dock-layout_2package_1json__JSONSchema="" ui_2layouts_2grid-layout_2package_1json__JSONSchema="" ui_2layouts_2wrap-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" /> <UserProperties ui_2layouts_2wrap-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2grid-layout_2package_1json__JSONSchema="" ui_2layouts_2dock-layout_2package_1json__JSONSchema="" ui_2layouts_2absolute-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2linear-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2web-view_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2content-view_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2gallery-app_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2absolute-layout-demo_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2editable-text-demo_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2scroll-view_2package_1json__JSONSchema="http://json.schemastore.org/package" />
</VisualStudio> </VisualStudio>
</ProjectExtensions> </ProjectExtensions>
</Project> </Project>

View File

@ -271,14 +271,6 @@ export class View extends viewCommon.View {
public onMeasure(widthMeasureSpec: number, heightMeasureSpec: number): void { public onMeasure(widthMeasureSpec: number, heightMeasureSpec: number): void {
var view = this._nativeView; var view = this._nativeView;
if (view) { if (view) {
var width = utils.layout.getMeasureSpecSize(widthMeasureSpec);
var widthMode = utils.layout.getMeasureSpecMode(widthMeasureSpec);
var height = utils.layout.getMeasureSpecSize(heightMeasureSpec);
var heightMode = utils.layout.getMeasureSpecMode(heightMeasureSpec);
trace.write(this + " :onMeasure: " + utils.layout.getMode(widthMode) + " " + width + ", " + utils.layout.getMode(heightMode) + " " + height, trace.categories.Layout);
view.measure(widthMeasureSpec, heightMeasureSpec); view.measure(widthMeasureSpec, heightMeasureSpec);
this.setMeasuredDimension(view.getMeasuredWidth(), view.getMeasuredHeight()); this.setMeasuredDimension(view.getMeasuredWidth(), view.getMeasuredHeight());
} }
@ -288,7 +280,6 @@ export class View extends viewCommon.View {
var view = this._nativeView; var view = this._nativeView;
if (view) { if (view) {
this.layoutNativeView(left, top, right, bottom); this.layoutNativeView(left, top, right, bottom);
trace.write(this + " :onLayout: " + left + ", " + top + ", " + (right - left) + ", " + (bottom - top), trace.categories.Layout);
} }
} }

View File

@ -152,8 +152,6 @@ export class View extends viewCommon.View {
height = Number.POSITIVE_INFINITY; height = Number.POSITIVE_INFINITY;
} }
trace.write(this + " :onMeasure: " + utils.layout.getMode(widthMode) + " " + width + ", " + utils.layout.getMode(heightMode) + " " + height, trace.categories.Layout);
var nativeSize = view.sizeThatFits(CGSizeMake(width, height)); var nativeSize = view.sizeThatFits(CGSizeMake(width, height));
var measureWidth = Math.max(nativeSize.width, this.minWidth); var measureWidth = Math.max(nativeSize.width, this.minWidth);
@ -167,7 +165,7 @@ export class View extends viewCommon.View {
} }
public onLayout(left: number, top: number, right: number, bottom: number): void { public onLayout(left: number, top: number, right: number, bottom: number): void {
trace.write(this + " :onLayout: " + left + ", " + top + ", " + (right - left) + ", " + (bottom - top), trace.categories.Layout); //
} }
public layoutNativeView(left: number, top: number, right: number, bottom: number): void { public layoutNativeView(left: number, top: number, right: number, bottom: number): void {
@ -238,13 +236,6 @@ export class CustomLayoutView extends View {
public onMeasure(widthMeasureSpec: number, heightMeasureSpec: number): void { public onMeasure(widthMeasureSpec: number, heightMeasureSpec: number): void {
// Don't call super because it will set MeasureDimension. This method must be overriden and calculate its measuredDimensions. // Don't call super because it will set MeasureDimension. This method must be overriden and calculate its measuredDimensions.
var width = utils.layout.getMeasureSpecSize(widthMeasureSpec);
var widthMode = utils.layout.getMeasureSpecMode(widthMeasureSpec);
var height = utils.layout.getMeasureSpecSize(heightMeasureSpec);
var heightMode = utils.layout.getMeasureSpecMode(heightMeasureSpec);
trace.write(this + " :onMeasure: " + utils.layout.getMode(widthMode) + " " + width + ", " + utils.layout.getMode(heightMode) + " " + height, trace.categories.Layout);
} }
public _addViewToNativeVisualTree(child: View, atIndex: number): boolean { public _addViewToNativeVisualTree(child: View, atIndex: number): boolean {

View File

@ -71,7 +71,6 @@ export class Image extends imageCommon.Image {
var height = utils.layout.getMeasureSpecSize(heightMeasureSpec); var height = utils.layout.getMeasureSpecSize(heightMeasureSpec);
var heightMode = utils.layout.getMeasureSpecMode(heightMeasureSpec); var heightMode = utils.layout.getMeasureSpecMode(heightMeasureSpec);
trace.write(this + " :onMeasure: " + utils.layout.getMode(widthMode) + " " + width + ", " + utils.layout.getMode(heightMode) + " " + height, trace.categories.Layout);
var nativeWidth = this.imageSource ? this.imageSource.width : 0; var nativeWidth = this.imageSource ? this.imageSource.width : 0;
var nativeHeight = this.imageSource ? this.imageSource.height : 0; var nativeHeight = this.imageSource ? this.imageSource.height : 0;

View File

@ -4,7 +4,6 @@ import dependencyObservable = require("ui/core/dependency-observable");
import proxy = require("ui/core/proxy"); import proxy = require("ui/core/proxy");
import utils = require("utils/utils"); import utils = require("utils/utils");
import viewModule = require("ui/core/view"); import viewModule = require("ui/core/view");
import trace = require("trace");
function onTextWrapPropertyChanged(data: dependencyObservable.PropertyChangeData) { function onTextWrapPropertyChanged(data: dependencyObservable.PropertyChangeData) {
var label = <Label>data.object; var label = <Label>data.object;
@ -95,8 +94,6 @@ export class Label extends common.Label {
height = Number.POSITIVE_INFINITY; height = Number.POSITIVE_INFINITY;
} }
trace.write(this + " :onMeasure: " + utils.layout.getMode(widthMode) + " " + width + ", " + utils.layout.getMode(heightMode) + " " + height, trace.categories.Layout);
var nativeSize = nativeView.sizeThatFits(CGSizeMake(width, height)); var nativeSize = nativeView.sizeThatFits(CGSizeMake(width, height));
var labelWidth = nativeSize.width; var labelWidth = nativeSize.width;
if (!this.textWrap) { if (!this.textWrap) {

View File

@ -55,17 +55,9 @@ export class Layout extends layoutBase.LayoutBase implements definition.Layout {
public onMeasure(widthMeasureSpec: number, heightMeasureSpec: number): void { public onMeasure(widthMeasureSpec: number, heightMeasureSpec: number): void {
// Don't call super because it will trigger measure again. // Don't call super because it will trigger measure again.
var width = utils.layout.getMeasureSpecSize(widthMeasureSpec);
var widthMode = utils.layout.getMeasureSpecMode(widthMeasureSpec);
var height = utils.layout.getMeasureSpecSize(heightMeasureSpec);
var heightMode = utils.layout.getMeasureSpecMode(heightMeasureSpec);
trace.write(this + " :onMeasure: " + utils.layout.getMode(widthMode) + " " + width + ", " + utils.layout.getMode(heightMode) + " " + height, trace.categories.Layout);
} }
public onLayout(left: number, top: number, right: number, bottom: number): void { public onLayout(left: number, top: number, right: number, bottom: number): void {
// Don't call super because it will trigger layout again. // Don't call super because it will trigger layout again.
trace.write(this + " :onLayout: " + left + ", " + top + ", " + (right - left) + ", " + (bottom - top), trace.categories.Layout);
} }
} }

View File

@ -1,7 +1,5 @@
import definition = require("ui/layouts/layout"); import definition = require("ui/layouts/layout");
import layoutBase = require("ui/layouts/layout-base"); import layoutBase = require("ui/layouts/layout-base");
import trace = require("trace");
import utils = require("utils/utils");
export class Layout extends layoutBase.LayoutBase implements definition.Layout { export class Layout extends layoutBase.LayoutBase implements definition.Layout {
@ -24,12 +22,5 @@ export class Layout extends layoutBase.LayoutBase implements definition.Layout {
public onMeasure(widthMeasureSpec: number, heightMeasureSpec: number): void { public onMeasure(widthMeasureSpec: number, heightMeasureSpec: number): void {
// Don't call super because it will measure the native element. // Don't call super because it will measure the native element.
var width = utils.layout.getMeasureSpecSize(widthMeasureSpec);
var widthMode = utils.layout.getMeasureSpecMode(widthMeasureSpec);
var height = utils.layout.getMeasureSpecSize(heightMeasureSpec);
var heightMode = utils.layout.getMeasureSpecMode(heightMeasureSpec);
trace.write(this + " :onMeasure: " + utils.layout.getMode(widthMode) + " " + width + ", " + utils.layout.getMode(heightMode) + " " + height, trace.categories.Layout);
} }
} }

View File

@ -1,7 +1,7 @@
import observable = require("data/observable"); import observable = require("data/observable");
import common = require("ui/list-view/list-view-common"); import common = require("ui/list-view/list-view-common");
import viewModule = require("ui/core/view"); import viewModule = require("ui/core/view");
import layout = require("ui/layouts/layout"); import layoutBaseModule = require("ui/layouts/layout-base");
import stackLayout = require("ui/layouts/stack-layout"); import stackLayout = require("ui/layouts/stack-layout");
import proxy = require("ui/core/proxy"); import proxy = require("ui/core/proxy");
import dependencyObservable = require("ui/core/dependency-observable"); import dependencyObservable = require("ui/core/dependency-observable");
@ -199,7 +199,7 @@ class ListViewAdapter extends android.widget.BaseAdapter {
if (args.view) { if (args.view) {
if (!args.view.parent) { if (!args.view.parent) {
if (args.view instanceof layout.Layout) { if (args.view instanceof layoutBaseModule.LayoutBase) {
this._listView._addView(args.view); this._listView._addView(args.view);
convertView = args.view.android; convertView = args.view.android;
} else { } else {

View File

@ -4,7 +4,7 @@
declare module "ui/repeater" { declare module "ui/repeater" {
import view = require("ui/core/view"); import view = require("ui/core/view");
import dependencyObservable = require("ui/core/dependency-observable"); import dependencyObservable = require("ui/core/dependency-observable");
import layoutModule = require("ui/layouts/layout"); import layoutBaseModule = require("ui/layouts/layout-base");
/** /**
* Represents a UI Repeater component. * Represents a UI Repeater component.
@ -39,7 +39,7 @@ declare module "ui/repeater" {
/** /**
* Gets or set the items layout of the Repeater. Default value is StackLayout with orientation="vertical". * Gets or set the items layout of the Repeater. Default value is StackLayout with orientation="vertical".
*/ */
itemsLayout: layoutModule.Layout; itemsLayout: layoutBaseModule.LayoutBase;
/** /**
* Forces the Repeater to reload all its items. * Forces the Repeater to reload all its items.

View File

@ -6,7 +6,7 @@ import observable = require("data/observable");
import observableArray = require("data/observable-array"); import observableArray = require("data/observable-array");
import weakEvents = require("ui/core/weak-event-listener"); import weakEvents = require("ui/core/weak-event-listener");
import types = require("utils/types"); import types = require("utils/types");
import layoutModule = require("ui/layouts/layout"); import layoutBaseModule = require("ui/layouts/layout-base");
import stackLayoutModule = require("ui/layouts/stack-layout"); import stackLayoutModule = require("ui/layouts/stack-layout");
import builder = require("ui/builder"); import builder = require("ui/builder");
import utils = require("utils/utils"); import utils = require("utils/utils");
@ -93,10 +93,10 @@ export class Repeater extends viewModule.CustomLayoutView implements definition.
this._setValue(Repeater.itemTemplateProperty, value); this._setValue(Repeater.itemTemplateProperty, value);
} }
get itemsLayout(): layoutModule.Layout { get itemsLayout(): layoutBaseModule.LayoutBase {
return this._getValue(Repeater.itemsLayoutProperty); return this._getValue(Repeater.itemsLayoutProperty);
} }
set itemsLayout(value: layoutModule.Layout) { set itemsLayout(value: layoutBaseModule.LayoutBase) {
this._setValue(Repeater.itemsLayoutProperty, value); this._setValue(Repeater.itemsLayoutProperty, value);
} }
@ -211,7 +211,7 @@ export class Repeater extends viewModule.CustomLayoutView implements definition.
} }
} }
function clearItemsLayout(itemsLayout: layoutModule.Layout) { function clearItemsLayout(itemsLayout: layoutBaseModule.LayoutBase) {
if (!types.isNullOrUndefined(itemsLayout)) { if (!types.isNullOrUndefined(itemsLayout)) {
var i: number = itemsLayout.getChildrenCount(); var i: number = itemsLayout.getChildrenCount();
if (i > 0) { if (i > 0) {

1
ui/ui.d.ts vendored
View File

@ -22,6 +22,7 @@ declare module "ui" {
export * from "ui/image"; export * from "ui/image";
export * from "ui/image-cache"; export * from "ui/image-cache";
export * from "ui/label"; export * from "ui/label";
export * from "ui/layouts/layout-base";
export * from "ui/layouts/layout"; export * from "ui/layouts/layout";
export * from "ui/layouts/absolute-layout"; export * from "ui/layouts/absolute-layout";
export * from "ui/layouts/dock-layout"; export * from "ui/layouts/dock-layout";