From 3bbbb189c2d1374eb2c85c53b6bc5c03884cebf2 Mon Sep 17 00:00:00 2001 From: Joseph Cloutier Date: Wed, 27 Apr 2022 01:28:56 -0400 Subject: [PATCH 1/5] Reduce clutter by merging related files. There's no need to have three separate files containing a single static variable each. Ideally, the `Data` types should include the variable, which can be accomplished using abstracts. `from Dynamic` is required in Haxe 3 and simplifies things in Haxe 4. --- src/lime/tools/ApplicationData.hx | 15 +++++++- src/lime/tools/MetaData.hx | 16 +++++++- src/lime/tools/ProjectXMLParser.hx | 13 +++---- src/lime/tools/WindowData.hx | 37 ++++++++++++++++++- src/lime/tools/_types/ApplicationDataType.hx | 17 --------- src/lime/tools/_types/MetaDataType.hx | 18 --------- src/lime/tools/_types/WindowDataType.hx | 39 -------------------- tools/CommandLineTools.hx | 15 +++----- 8 files changed, 73 insertions(+), 97 deletions(-) delete mode 100644 src/lime/tools/_types/ApplicationDataType.hx delete mode 100644 src/lime/tools/_types/MetaDataType.hx delete mode 100644 src/lime/tools/_types/WindowDataType.hx diff --git a/src/lime/tools/ApplicationData.hx b/src/lime/tools/ApplicationData.hx index bf5876f89..08668be9e 100644 --- a/src/lime/tools/ApplicationData.hx +++ b/src/lime/tools/ApplicationData.hx @@ -1,7 +1,7 @@ package lime.tools; -typedef ApplicationData = -{ +@:forward +abstract ApplicationData({ @:optional var file:String; @:optional var init:String; @:optional var main:String; @@ -9,4 +9,15 @@ typedef ApplicationData = @:optional var preloader:String; @:optional var swfVersion:Float; @:optional var url:String; +}) from Dynamic +{ + public static var defaults = { + file: "", + init: "", + main: "", + path: "", + preloader: "", + swfVersion: 0.0, + url: "" + }; } diff --git a/src/lime/tools/MetaData.hx b/src/lime/tools/MetaData.hx index 1849064f0..784d1dda3 100644 --- a/src/lime/tools/MetaData.hx +++ b/src/lime/tools/MetaData.hx @@ -1,7 +1,7 @@ package lime.tools; -typedef MetaData = -{ +@:forward +abstract MetaData({ @:optional var buildNumber:String; @:optional var company:String; @:optional var companyId:String; @@ -10,4 +10,16 @@ typedef MetaData = @:optional var packageName:String; @:optional var title:String; @:optional var version:String; +}) from Dynamic +{ + public static var defaults = { + buildNumber: "", + company: "", + companyId: "", + companyUrl: "", + description: "", + packageName: "", + title: "", + version: "" + }; } diff --git a/src/lime/tools/ProjectXMLParser.hx b/src/lime/tools/ProjectXMLParser.hx index cafeb9457..b8f7d6054 100644 --- a/src/lime/tools/ProjectXMLParser.hx +++ b/src/lime/tools/ProjectXMLParser.hx @@ -7,9 +7,6 @@ import lime.tools.Asset; import lime.tools.AssetType; import lime.tools.Dependency; import lime.tools.HXProject; -import lime.tools._types.ApplicationDataType; -import lime.tools._types.MetaDataType; -import lime.tools._types.WindowDataType; #if lime import lime.utils.AssetManifest; #end @@ -442,11 +439,11 @@ class ProjectXMLParser extends HXProject name = "packageName"; } - if (Reflect.hasField(ApplicationDataType.fields, name)) + if (Reflect.hasField(ApplicationData.defaults, name)) { Reflect.setField(app, name, value); } - else if (Reflect.hasField(MetaDataType.fields, name)) + else if (Reflect.hasField(MetaData.defaults, name)) { Reflect.setField(meta, name, value); } @@ -859,7 +856,7 @@ class ProjectXMLParser extends HXProject name = "packageName"; } - if (Reflect.hasField(MetaDataType.fields, name)) + if (Reflect.hasField(MetaData.defaults, name)) { Reflect.setField(meta, name, value); } @@ -2009,11 +2006,11 @@ class ProjectXMLParser extends HXProject Reflect.setField(windows[id], "colorDepth", Std.parseInt(value)); default: - if (Reflect.hasField(WindowDataType.fields, name)) + if (Reflect.hasField(WindowData.defaults, name)) { Reflect.setField(windows[id], name, value == "true"); } - else if (Reflect.hasField(WindowDataType.fields, formatAttributeName(name))) + else if (Reflect.hasField(WindowData.defaults, formatAttributeName(name))) { Reflect.setField(windows[id], formatAttributeName(name), value == "true"); } diff --git a/src/lime/tools/WindowData.hx b/src/lime/tools/WindowData.hx index c6141bafb..a8a654277 100644 --- a/src/lime/tools/WindowData.hx +++ b/src/lime/tools/WindowData.hx @@ -1,7 +1,7 @@ package lime.tools; -typedef WindowData = -{ +@:forward +abstract WindowData({ @:optional var width:Int; @:optional var height:Int; @:optional var x:Float; @@ -31,4 +31,37 @@ typedef WindowData = @:optional var minimized:Bool; @:optional var maximized:Bool; @:optional var hidden:Bool; +}) from Dynamic +{ + public static var defaults = { + width: 0, + height: 0, + x: 0.0, + y: 0.0, + background: 0, + parameters: "", + fps: 0, + hardware: false, + display: 0, + resizable: false, + borderless: false, + vsync: false, + fullscreen: false, + allowHighDPI: false, + alwaysOnTop: false, + antialiasing: 0, + orientation: Orientation.AUTO, + allowShaders: false, + requireShaders: false, + depthBuffer: false, + stencilBuffer: false, + title: "", + #if (js && html5) + element: null, + #end + colorDepth: 0, + minimized: false, + maximized: false, + hidden: false + }; } diff --git a/src/lime/tools/_types/ApplicationDataType.hx b/src/lime/tools/_types/ApplicationDataType.hx deleted file mode 100644 index 5f6123cb3..000000000 --- a/src/lime/tools/_types/ApplicationDataType.hx +++ /dev/null @@ -1,17 +0,0 @@ -package lime.tools._types; - -import lime.tools.ApplicationData; - -class ApplicationDataType -{ - public static var fields:ApplicationData = - { - file: "", - init: "", - main: "", - path: "", - preloader: "", - swfVersion: 0.0, - url: "" - } -} diff --git a/src/lime/tools/_types/MetaDataType.hx b/src/lime/tools/_types/MetaDataType.hx deleted file mode 100644 index d96214039..000000000 --- a/src/lime/tools/_types/MetaDataType.hx +++ /dev/null @@ -1,18 +0,0 @@ -package lime.tools._types; - -import lime.tools.MetaData; - -class MetaDataType -{ - public static var fields:MetaData = - { - buildNumber: "", - company: "", - companyId: "", - companyUrl: "", - description: "", - packageName: "", - title: "", - version: "" - } -} diff --git a/src/lime/tools/_types/WindowDataType.hx b/src/lime/tools/_types/WindowDataType.hx deleted file mode 100644 index 7745382e4..000000000 --- a/src/lime/tools/_types/WindowDataType.hx +++ /dev/null @@ -1,39 +0,0 @@ -package lime.tools._types; - -import lime.tools.WindowData; - -class WindowDataType -{ - public static var fields:WindowData = - { - width: 0, - height: 0, - x: 0.0, - y: 0.0, - background: 0, - parameters: "", - fps: 0, - hardware: false, - display: 0, - resizable: false, - borderless: false, - vsync: false, - fullscreen: false, - allowHighDPI: false, - alwaysOnTop: false, - antialiasing: 0, - orientation: Orientation.AUTO, - allowShaders: false, - requireShaders: false, - depthBuffer: false, - stencilBuffer: false, - title: "", - #if (js && html5) - element: null, - #end - colorDepth: 0, - minimized: false, - maximized: false, - hidden: false - } -} \ No newline at end of file diff --git a/tools/CommandLineTools.hx b/tools/CommandLineTools.hx index cf897ad80..2391e6f0e 100644 --- a/tools/CommandLineTools.hx +++ b/tools/CommandLineTools.hx @@ -10,9 +10,6 @@ import hxp.*; import lime.system.CFFI; import lime.tools.HXProject; import lime.tools.*; -import lime.tools._types.ApplicationDataType; -import lime.tools._types.MetaDataType; -import lime.tools._types.WindowDataType; import sys.io.File; import sys.io.Process; import sys.FileSystem; @@ -1863,9 +1860,9 @@ class CommandLineTools var fieldValue = Reflect.field(project, field); var typeValue:Dynamic = switch (field) { - case "app": ApplicationDataType.fields; - case "meta": MetaDataType.fields; - case "window": WindowDataType.fields; + case "app": ApplicationData.defaults; + case "meta": MetaData.defaults; + case "window": WindowData.defaults; default: fieldValue; }; @@ -2133,9 +2130,9 @@ class CommandLineTools var fieldReference = Reflect.field(overrides, fieldName); var typeValue:Dynamic = switch (fieldName) { - case "app": ApplicationDataType.fields; - case "meta": MetaDataType.fields; - case "window": WindowDataType.fields; + case "app": ApplicationData.defaults; + case "meta": MetaData.defaults; + case "window": WindowData.defaults; default: fieldReference; }; From 50488aee5353c2918b7a00bbe2930c5cf51fe1c9 Mon Sep 17 00:00:00 2001 From: Joseph Cloutier Date: Wed, 27 Apr 2022 11:51:39 -0400 Subject: [PATCH 2/5] Clarify purpose of data validation variables. This value doesn't actually contain default values, but instead helps verify that the correct fields are present and have the correct types. It also doesn't need to show up in code completion. --- src/lime/tools/ApplicationData.hx | 3 ++- src/lime/tools/MetaData.hx | 3 ++- src/lime/tools/ProjectXMLParser.hx | 10 +++++----- src/lime/tools/WindowData.hx | 3 ++- tools/CommandLineTools.hx | 12 ++++++------ 5 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/lime/tools/ApplicationData.hx b/src/lime/tools/ApplicationData.hx index 08668be9e..301917209 100644 --- a/src/lime/tools/ApplicationData.hx +++ b/src/lime/tools/ApplicationData.hx @@ -11,7 +11,8 @@ abstract ApplicationData({ @:optional var url:String; }) from Dynamic { - public static var defaults = { + @:noCompletion + public static var expectedFields:ApplicationData = { file: "", init: "", main: "", diff --git a/src/lime/tools/MetaData.hx b/src/lime/tools/MetaData.hx index 784d1dda3..2e859905a 100644 --- a/src/lime/tools/MetaData.hx +++ b/src/lime/tools/MetaData.hx @@ -12,7 +12,8 @@ abstract MetaData({ @:optional var version:String; }) from Dynamic { - public static var defaults = { + @:noCompletion + public static var expectedFields:MetaData = { buildNumber: "", company: "", companyId: "", diff --git a/src/lime/tools/ProjectXMLParser.hx b/src/lime/tools/ProjectXMLParser.hx index b8f7d6054..e71d87c73 100644 --- a/src/lime/tools/ProjectXMLParser.hx +++ b/src/lime/tools/ProjectXMLParser.hx @@ -439,11 +439,11 @@ class ProjectXMLParser extends HXProject name = "packageName"; } - if (Reflect.hasField(ApplicationData.defaults, name)) + if (Reflect.hasField(ApplicationData.expectedFields, name)) { Reflect.setField(app, name, value); } - else if (Reflect.hasField(MetaData.defaults, name)) + else if (Reflect.hasField(MetaData.expectedFields, name)) { Reflect.setField(meta, name, value); } @@ -856,7 +856,7 @@ class ProjectXMLParser extends HXProject name = "packageName"; } - if (Reflect.hasField(MetaData.defaults, name)) + if (Reflect.hasField(MetaData.expectedFields, name)) { Reflect.setField(meta, name, value); } @@ -2006,11 +2006,11 @@ class ProjectXMLParser extends HXProject Reflect.setField(windows[id], "colorDepth", Std.parseInt(value)); default: - if (Reflect.hasField(WindowData.defaults, name)) + if (Reflect.hasField(WindowData.expectedFields, name)) { Reflect.setField(windows[id], name, value == "true"); } - else if (Reflect.hasField(WindowData.defaults, formatAttributeName(name))) + else if (Reflect.hasField(WindowData.expectedFields, formatAttributeName(name))) { Reflect.setField(windows[id], formatAttributeName(name), value == "true"); } diff --git a/src/lime/tools/WindowData.hx b/src/lime/tools/WindowData.hx index a8a654277..d861cd23b 100644 --- a/src/lime/tools/WindowData.hx +++ b/src/lime/tools/WindowData.hx @@ -33,7 +33,8 @@ abstract WindowData({ @:optional var hidden:Bool; }) from Dynamic { - public static var defaults = { + @:noCompletion + public static var expectedFields:WindowData = { width: 0, height: 0, x: 0.0, diff --git a/tools/CommandLineTools.hx b/tools/CommandLineTools.hx index 2391e6f0e..8f693435a 100644 --- a/tools/CommandLineTools.hx +++ b/tools/CommandLineTools.hx @@ -1860,9 +1860,9 @@ class CommandLineTools var fieldValue = Reflect.field(project, field); var typeValue:Dynamic = switch (field) { - case "app": ApplicationData.defaults; - case "meta": MetaData.defaults; - case "window": WindowData.defaults; + case "app": ApplicationData.expectedFields; + case "meta": MetaData.expectedFields; + case "window": WindowData.expectedFields; default: fieldValue; }; @@ -2130,9 +2130,9 @@ class CommandLineTools var fieldReference = Reflect.field(overrides, fieldName); var typeValue:Dynamic = switch (fieldName) { - case "app": ApplicationData.defaults; - case "meta": MetaData.defaults; - case "window": WindowData.defaults; + case "app": ApplicationData.expectedFields; + case "meta": MetaData.expectedFields; + case "window": WindowData.expectedFields; default: fieldReference; }; From c0a77a01fbaf56ead99d34903d464a76c90b5a25 Mon Sep 17 00:00:00 2001 From: Junsred <63877982+Junsred@users.noreply.github.com> Date: Thu, 28 Apr 2022 15:27:24 +0300 Subject: [PATCH 3/5] prevent clipboard being set as null --- src/lime/_internal/backend/html5/HTML5Window.hx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/lime/_internal/backend/html5/HTML5Window.hx b/src/lime/_internal/backend/html5/HTML5Window.hx index 850b13b06..8e6078ef8 100644 --- a/src/lime/_internal/backend/html5/HTML5Window.hx +++ b/src/lime/_internal/backend/html5/HTML5Window.hx @@ -419,7 +419,11 @@ class HTML5Window private function handleCutOrCopyEvent(event:ClipboardEvent):Void { - event.clipboardData.setData("text/plain", Clipboard.text); + var text = ""; + if (Clipboard.text != null) { + text = Clipboard.text; + } + event.clipboardData.setData("text/plain", text); if (event.cancelable) event.preventDefault(); } From 0c077da2bb34c15da6d10b0b8b5c091954b52dc0 Mon Sep 17 00:00:00 2001 From: Junsred <63877982+Junsred@users.noreply.github.com> Date: Fri, 29 Apr 2022 00:17:16 +0300 Subject: [PATCH 4/5] better readability --- src/lime/_internal/backend/html5/HTML5Window.hx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lime/_internal/backend/html5/HTML5Window.hx b/src/lime/_internal/backend/html5/HTML5Window.hx index 8e6078ef8..376216bad 100644 --- a/src/lime/_internal/backend/html5/HTML5Window.hx +++ b/src/lime/_internal/backend/html5/HTML5Window.hx @@ -419,9 +419,9 @@ class HTML5Window private function handleCutOrCopyEvent(event:ClipboardEvent):Void { - var text = ""; - if (Clipboard.text != null) { - text = Clipboard.text; + var text = Clipboard.text; + if (text == null) { + text = ""; } event.clipboardData.setData("text/plain", text); if (event.cancelable) event.preventDefault(); From c406bc53ea14c229fcbb22ba9b21abd0cea5853e Mon Sep 17 00:00:00 2001 From: Joshua Granick Date: Mon, 2 May 2022 16:33:04 -0700 Subject: [PATCH 5/5] Update submodule paths --- .gitmodules | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/.gitmodules b/.gitmodules index afb8e8cd0..3a3694038 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,60 +1,60 @@ [submodule "project/lib/vorbis"] path = project/lib/vorbis - url = https://github.com/native-toolkit/vorbis + url = https://github.com/openfl/libvorbis [submodule "project/lib/sdl"] path = project/lib/sdl - url = https://github.com/native-toolkit/sdl + url = https://github.com/openfl/libsdl [submodule "project/lib/openal"] path = project/lib/openal - url = https://github.com/native-toolkit/openal + url = https://github.com/openfl/libopenal [submodule "project/lib/curl"] path = project/lib/curl - url = https://github.com/native-toolkit/curl + url = https://github.com/openfl/libcurl [submodule "project/lib/ogg"] path = project/lib/ogg - url = https://github.com/native-toolkit/ogg + url = https://github.com/openfl/libogg [submodule "project/lib/zlib"] path = project/lib/zlib - url = https://github.com/native-toolkit/zlib + url = https://github.com/openfl/libzlib [submodule "project/lib/neko"] path = project/lib/neko - url = https://github.com/native-toolkit/neko + url = https://github.com/openfl/libneko [submodule "project/lib/png"] path = project/lib/png - url = https://github.com/native-toolkit/png + url = https://github.com/openfl/libpng [submodule "project/lib/jpeg"] path = project/lib/jpeg - url = https://github.com/native-toolkit/jpeg + url = https://github.com/openfl/libjpeg [submodule "project/lib/freetype"] path = project/lib/freetype - url = https://github.com/native-toolkit/freetype + url = https://github.com/openfl/libfreetype [submodule "project/lib/harfbuzz"] path = project/lib/harfbuzz - url = https://github.com/native-toolkit/harfbuzz + url = https://github.com/openfl/libharfbuzz [submodule "project/lib/cairo"] path = project/lib/cairo - url = https://github.com/native-toolkit/cairo + url = https://github.com/openfl/libcairo [submodule "project/lib/pixman"] path = project/lib/pixman - url = https://github.com/native-toolkit/pixman + url = https://github.com/openfl/libpixman [submodule "project/lib/lzma"] path = project/lib/lzma - url = https://github.com/native-toolkit/lzma + url = https://github.com/openfl/liblzma [submodule "project/lib/tinyfiledialogs"] path = project/lib/tinyfiledialogs - url = https://github.com/native-toolkit/tinyfiledialogs + url = https://github.com/openfl/libtinyfiledialogs [submodule "project/lib/efsw"] path = project/lib/efsw - url = https://github.com/native-toolkit/efsw + url = https://github.com/openfl/libefsw [submodule "project/lib/vpx"] path = project/lib/vpx - url = https://github.com/native-toolkit/vpx + url = https://github.com/openfl/libvpx [submodule "project/lib/webm"] path = project/lib/webm - url = https://github.com/native-toolkit/webm + url = https://github.com/openfl/libwebm [submodule "project/lib/mbedtls"] path = project/lib/mbedtls - url = https://github.com/native-toolkit/mbedtls + url = https://github.com/openfl/libmbedtls [submodule "project/lib/mojoal"] path = project/lib/mojoal - url = https://github.com/native-toolkit/mojoal + url = https://github.com/openfl/libmojoal