mirror of
https://github.com/haven1433/HexManiacAdvance.git
synced 2026-05-20 04:08:04 -05:00
ViewPort.GetSelectionSpan needs to be decorator aware
This commit is contained in:
parent
0e075a34b7
commit
31472fea77
|
|
@ -149,7 +149,11 @@ namespace HavenSoft.HexManiac.Core.ViewModels.DataFormats {
|
|||
public void Visit(IDataFormatVisitor visitor, byte data) => visitor.Visit(this, data);
|
||||
}
|
||||
|
||||
public class Anchor : IDataFormat {
|
||||
public interface IDataFormatDecorator : IDataFormat {
|
||||
IDataFormat OriginalFormat { get; }
|
||||
}
|
||||
|
||||
public class Anchor : IDataFormatDecorator {
|
||||
public IDataFormat OriginalFormat { get; }
|
||||
public string Name { get; }
|
||||
public string Format { get; }
|
||||
|
|
@ -165,7 +169,7 @@ namespace HavenSoft.HexManiac.Core.ViewModels.DataFormats {
|
|||
public void Visit(IDataFormatVisitor visitor, byte data) => visitor.Visit(this, data);
|
||||
}
|
||||
|
||||
public class SpriteDecorator : IDataFormat {
|
||||
public class SpriteDecorator : IDataFormatDecorator {
|
||||
public IDataFormat OriginalFormat { get; }
|
||||
public IPixelViewModel Pixels { get; }
|
||||
public int CellWidth { get; }
|
||||
|
|
|
|||
|
|
@ -889,7 +889,7 @@ namespace HavenSoft.HexManiac.Core.ViewModels {
|
|||
}
|
||||
|
||||
public bool TryImport(LoadedFile file, IFileSystem fileSystem) {
|
||||
if (file.Name.EndsWith(".hma")) {
|
||||
if (file.Name.ToLower().EndsWith(".hma")) {
|
||||
var edit = Encoding.Default.GetString(file.Contents);
|
||||
Edit(edit);
|
||||
return true;
|
||||
|
|
@ -1922,11 +1922,12 @@ namespace HavenSoft.HexManiac.Core.ViewModels {
|
|||
|
||||
(Point, Point) pair(int start, int end) => (scroll.DataIndexToViewPoint(start), scroll.DataIndexToViewPoint(end));
|
||||
|
||||
using (ModelCacheScope.CreateScope(Model)) {
|
||||
if (run.CreateDataFormat(Model, index) is IDataFormatInstance instance) {
|
||||
return pair(instance.Source, instance.Source + instance.Length - 1);
|
||||
}
|
||||
var format = run.CreateDataFormat(Model, index);
|
||||
while (format is IDataFormatDecorator decorator) format = decorator.OriginalFormat;
|
||||
if (format is IDataFormatInstance instance) {
|
||||
return pair(instance.Source, instance.Source + instance.Length - 1);
|
||||
}
|
||||
|
||||
if (!(run is ITableRun array)) return (p, p);
|
||||
|
||||
var naturalEnd = array.Start + array.ElementCount * array.ElementLength;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user