Public Access
Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8915650a0d | ||
|
|
b931a06998 | ||
|
|
ca48e18b57 |
@@ -188,9 +188,21 @@ the chrome, hosts and terminals, file transfer, the vault, teams, and preference
|
|||||||
> project rather than requested by name and left to whatever the machine happens to have, the way `WithInterFont`
|
> project rather than requested by name and left to whatever the machine happens to have, the way `WithInterFont`
|
||||||
> alone used to leave Inter registered but unused. Montserrat is the default sans now, with Inter kept as its
|
> alone used to leave Inter registered but unused. Montserrat is the default sans now, with Inter kept as its
|
||||||
> fallback rather than the whole answer; `MonoFont` gains JetBrains Mono at the front of its own list, ahead of
|
> fallback rather than the whole answer; `MonoFont` gains JetBrains Mono at the front of its own list, ahead of
|
||||||
> the system-mono stack that is still behind it for a glyph JetBrains Mono does not cover. Android recolours
|
> the system-mono stack that is still behind it for a glyph JetBrains Mono does not cover. **Android recoloured
|
||||||
> with the shared palette and keeps its own default sans — fonts are per-head by decision, only colour is
|
> with the shared palette and kept its own default sans when this paragraph was first written; it does not any
|
||||||
> shared.
|
> more** — see "the phone catches up", directly below.
|
||||||
|
>
|
||||||
|
> **The phone catches up.** A later reversal than the one above, on the same reasoning: a face is not a
|
||||||
|
> colour, and the user decided the phone should share both rather than only the second. `WithInterFont` gains
|
||||||
|
> the same `FontManagerOptions` block `Program.cs` sets, off the same embedded Montserrat, no new asset
|
||||||
|
> required. `Theme/Phone.axaml`'s six-rung v2 ladder — 4/9/10/11/12/14 — collapses to the desktop's three:
|
||||||
|
> chip or tag 6, button or field 10, card or output 12; `Button.fab`'s 28 and every sheet's 22 survive
|
||||||
|
> unchanged, being geometry rather than ladder rungs. `Button.primary` and `Button.fab` take `AccentGradient`
|
||||||
|
> and `AccentGlow` in place of a flat fill, the same swap `Button.accent` made on the desktop, `BoxShadow`
|
||||||
|
> cleared the same way on disabled. And the phone's own chrome — the vault header, the bottom bar, the shells
|
||||||
|
> strip, `HostActionBar`, the editor headers, the terminal's collapsed bar and every screen's raised selection
|
||||||
|
> bar — moves from `Chrome`/`Sidebar` to `DeepChrome`, joining the desktop's own v5b titlebar-and-rail move;
|
||||||
|
> `PhoneRail`'s hover takes `Track`, which `Palette.axaml` already names for that row. Borders stay keyed.
|
||||||
>
|
>
|
||||||
> **Flat sections replace the grid of group cards and the breadcrumb trail — reversing v3, on the user's own
|
> **Flat sections replace the grid of group cards and the breadcrumb trail — reversing v3, on the user's own
|
||||||
> approval rather than a defect found in it.** v3's grid held one level of the group tree at a time, opened by
|
> approval rather than a defect found in it.** v3's grid held one level of the group tree at a time, opened by
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
// See the note at the top of MainActivity for why the platform namespaces are reached through `global::`.
|
// See the note at the top of MainActivity for why the platform namespaces are reached through `global::`.
|
||||||
using Avalonia;
|
using Avalonia;
|
||||||
using Avalonia.Android;
|
using Avalonia.Android;
|
||||||
|
using Avalonia.Media;
|
||||||
using DodoSSH.Client.Android.Platform;
|
using DodoSSH.Client.Android.Platform;
|
||||||
using global::Android.App;
|
using global::Android.App;
|
||||||
using global::Android.Runtime;
|
using global::Android.Runtime;
|
||||||
@@ -46,6 +47,30 @@ public sealed class DodoSshAndroidApplication : AvaloniaAndroidApplication<DodoS
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
|
/// <remarks>
|
||||||
|
/// This used to be the one place the two heads disagreed on purpose: the recorded v2 decision was
|
||||||
|
/// "Android recolours with the shared palette and keeps its own default sans", on the reasoning that a
|
||||||
|
/// phone's system font is a phone's own business. The user has reversed that, this pass — the phone now
|
||||||
|
/// takes the desktop's face as well as its colours, and <c>docs/design-import-gaps.md</c> is corrected
|
||||||
|
/// to say so rather than left asserting a decision that no longer holds.
|
||||||
|
///
|
||||||
|
/// <c>WithInterFont</c> still registers Inter, for the same reason <c>Program.cs</c> keeps it on the
|
||||||
|
/// desktop: it is what the layout suite pins and what a glyph Montserrat does not cover falls back to.
|
||||||
|
/// What changes is which face answers first. Montserrat ships embedded in
|
||||||
|
/// <c>DodoSSH.Client.Shell/Assets/Fonts</c> already — this project references that assembly for
|
||||||
|
/// <c>Theme/Phone.axaml</c>'s own <c>MonoFont</c>, so no csproj or asset work was needed to reach it
|
||||||
|
/// from here, only the same <see cref="FontManagerOptions"/> block the desktop's
|
||||||
|
/// <c>Program.BuildAvaloniaApp</c> sets.
|
||||||
|
/// </remarks>
|
||||||
protected override AppBuilder CustomizeAppBuilder(AppBuilder builder) =>
|
protected override AppBuilder CustomizeAppBuilder(AppBuilder builder) =>
|
||||||
base.CustomizeAppBuilder(builder).WithInterFont();
|
base.CustomizeAppBuilder(builder)
|
||||||
|
.WithInterFont()
|
||||||
|
.With(new FontManagerOptions
|
||||||
|
{
|
||||||
|
DefaultFamilyName = "avares://DodoSSH.Client.Shell/Assets/Fonts#Montserrat",
|
||||||
|
FontFallbacks =
|
||||||
|
[
|
||||||
|
new FontFallback { FontFamily = new FontFamily("avares://Avalonia.Fonts.Inter/Assets#Inter") },
|
||||||
|
],
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,10 +12,28 @@
|
|||||||
the alternative, and the red one is the one that costs something.
|
the alternative, and the red one is the one that costs something.
|
||||||
|
|
||||||
── v2 ──────────────────────────────────────────────────────────────────────────────────────────────
|
── v2 ──────────────────────────────────────────────────────────────────────────────────────────────
|
||||||
The second design rounds everything. The corner radii below are the design's own — 4 for a tag, 9 for a
|
The second design rounded everything on its own ladder — 4 for a tag, 9 for a button or a pill, 10 for
|
||||||
button or a pill, 10 for a list row, 11 for the search well, 12 for a card, 14 for a block of
|
a list row, 11 for the search well, 12 for a card, 14 for a block of monospaced output — and the numbers
|
||||||
monospaced output — and they are a ladder rather than a set of preferences: the radius says how big the
|
below carried it for three passes: the radius said how big the thing was, so a 12 on a chip or a 4 on a
|
||||||
thing is, so a 12 on a chip or a 4 on a card reads as the wrong size before it reads as the wrong shape.
|
card read as the wrong size before it read as the wrong shape. Left as a record of that reasoning rather
|
||||||
|
than deleted, because the reasoning still holds; only the numbers it was reasoning about have moved.
|
||||||
|
|
||||||
|
── v5 ──────────────────────────────────────────────────────────────────────────────────────────────
|
||||||
|
This pass takes the desktop's v5 ladder instead of v2's own, on the same reversal recorded for the
|
||||||
|
fonts: the phone now matches the desktop's shape as well as its face. Three rungs rather than six —
|
||||||
|
cards and sections stay 12, a button or a field is 10, a chip or a tag is 6 — collapsing v2's 9/10/11
|
||||||
|
into the one value the desktop's buttons and fields already use, and moving its 4 up to 6 and its 14
|
||||||
|
down to 12 to land on the desktop's own chip and card numbers. The ladder still says how big a thing
|
||||||
|
is before it says what shape it is; it is just a shorter ladder now, because the desktop it is copying
|
||||||
|
never drew v2's 11-radius search well or a card any rounder than a chip's neighbour a step away, and the
|
||||||
|
same case that closed the gap between 9, 10 and 11 closes the one between 12 and 14.
|
||||||
|
|
||||||
|
Not every radius on this head belongs to this ladder. The floating action button is 28 — half its own
|
||||||
|
56, which is a circle rather than a ladder rung — and the sheets stay at 22 on their top corners only,
|
||||||
|
which is a phone idiom this codebase's own bottom sheets have used since v2 and the desktop draws
|
||||||
|
nothing like. Both are documented where they are set rather than here, for the reason FAB and sheet
|
||||||
|
radii are always documented locally: a reader who only ever meets one of them should not have to find
|
||||||
|
this paragraph to learn it was deliberate.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<Style Selector="Button.primary">
|
<Style Selector="Button.primary">
|
||||||
@@ -23,15 +41,32 @@
|
|||||||
<Setter Property="HorizontalAlignment" Value="Stretch" />
|
<Setter Property="HorizontalAlignment" Value="Stretch" />
|
||||||
<Setter Property="HorizontalContentAlignment" Value="Center" />
|
<Setter Property="HorizontalContentAlignment" Value="Center" />
|
||||||
<Setter Property="VerticalContentAlignment" Value="Center" />
|
<Setter Property="VerticalContentAlignment" Value="Center" />
|
||||||
<Setter Property="Background" Value="{StaticResource Accent}" />
|
|
||||||
<Setter Property="Foreground" Value="{StaticResource AccentInk}" />
|
<Setter Property="Foreground" Value="{StaticResource AccentInk}" />
|
||||||
<Setter Property="CornerRadius" Value="9" />
|
<Setter Property="CornerRadius" Value="10" />
|
||||||
<Setter Property="FontFamily" Value="{StaticResource MonoFont}" />
|
<Setter Property="FontFamily" Value="{StaticResource MonoFont}" />
|
||||||
<Setter Property="FontSize" Value="12" />
|
<Setter Property="FontSize" Value="12" />
|
||||||
<Setter Property="FontWeight" Value="SemiBold" />
|
<Setter Property="FontWeight" Value="SemiBold" />
|
||||||
</Style>
|
</Style>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
◆ Gradient and glow, replacing a flat Accent fill — the same swap App.axaml's Button.accent made on the
|
||||||
|
desktop, and for the same reason: this design draws every primary button top-to-bottom from a lighter
|
||||||
|
violet into the accent proper, lifted off the surface with a soft violet glow rather than a border. Both
|
||||||
|
live in Palette.axaml as AccentGradient and AccentGlow, already resolvable here because the palette is
|
||||||
|
shared — this is a resource-key swap, not new colour.
|
||||||
|
|
||||||
|
Background and BoxShadow are set here rather than as plain Setters above, because Fluent's default
|
||||||
|
button template only lets a style reach the fill and the glow through the ContentPresenter it draws
|
||||||
|
itself around — the same reason the desktop's rule targets /template/ ContentPresenter rather than the
|
||||||
|
Button. Height, radius and the rest stay ordinary Setters on Button.primary itself; only the two the
|
||||||
|
template intercepts move down here.
|
||||||
|
-->
|
||||||
|
<Style Selector="Button.primary /template/ ContentPresenter">
|
||||||
|
<Setter Property="Background" Value="{StaticResource AccentGradient}" />
|
||||||
|
<Setter Property="BoxShadow" Value="{StaticResource AccentGlow}" />
|
||||||
|
</Style>
|
||||||
<Style Selector="Button.primary:pressed /template/ ContentPresenter">
|
<Style Selector="Button.primary:pressed /template/ ContentPresenter">
|
||||||
<Setter Property="Background" Value="{StaticResource Accent}" />
|
<Setter Property="Background" Value="{StaticResource AccentGradient}" />
|
||||||
<Setter Property="Opacity" Value="0.82" />
|
<Setter Property="Opacity" Value="0.82" />
|
||||||
</Style>
|
</Style>
|
||||||
|
|
||||||
@@ -39,9 +74,15 @@
|
|||||||
Disabled is drawn as flat and unlit rather than merely dimmed. The design's CONTINUE button on the
|
Disabled is drawn as flat and unlit rather than merely dimmed. The design's CONTINUE button on the
|
||||||
recovery screen is disabled until the checkbox is ticked, and a user who cannot tell it is disabled
|
recovery screen is disabled until the checkbox is ticked, and a user who cannot tell it is disabled
|
||||||
reads the screen as broken rather than as waiting for them.
|
reads the screen as broken rather than as waiting for them.
|
||||||
|
|
||||||
|
BoxShadow has to be cleared here too, as "none" rather than left unset — see the remark on
|
||||||
|
Button.accent:disabled in the desktop's App.axaml for why the literal string is required and an empty
|
||||||
|
BoxShadows is not: the base rule's glow Setter is still in effect wherever a more specific one does not
|
||||||
|
override it, and a disabled primary button lit with a glow would read as wanting to be pressed.
|
||||||
-->
|
-->
|
||||||
<Style Selector="Button.primary:disabled /template/ ContentPresenter">
|
<Style Selector="Button.primary:disabled /template/ ContentPresenter">
|
||||||
<Setter Property="Background" Value="{StaticResource Raised}" />
|
<Setter Property="Background" Value="{StaticResource Raised}" />
|
||||||
|
<Setter Property="BoxShadow" Value="none" />
|
||||||
<Setter Property="TextElement.Foreground" Value="{StaticResource TextFaint}" />
|
<Setter Property="TextElement.Foreground" Value="{StaticResource TextFaint}" />
|
||||||
</Style>
|
</Style>
|
||||||
|
|
||||||
@@ -54,7 +95,7 @@
|
|||||||
<Setter Property="BorderBrush" Value="{StaticResource BorderMid}" />
|
<Setter Property="BorderBrush" Value="{StaticResource BorderMid}" />
|
||||||
<Setter Property="BorderThickness" Value="1" />
|
<Setter Property="BorderThickness" Value="1" />
|
||||||
<Setter Property="Foreground" Value="{StaticResource Text}" />
|
<Setter Property="Foreground" Value="{StaticResource Text}" />
|
||||||
<Setter Property="CornerRadius" Value="9" />
|
<Setter Property="CornerRadius" Value="10" />
|
||||||
<Setter Property="FontFamily" Value="{StaticResource MonoFont}" />
|
<Setter Property="FontFamily" Value="{StaticResource MonoFont}" />
|
||||||
<Setter Property="FontSize" Value="11.5" />
|
<Setter Property="FontSize" Value="11.5" />
|
||||||
<Setter Property="FontWeight" Value="SemiBold" />
|
<Setter Property="FontWeight" Value="SemiBold" />
|
||||||
@@ -69,7 +110,7 @@
|
|||||||
<Setter Property="BorderBrush" Value="{StaticResource DangerSoft}" />
|
<Setter Property="BorderBrush" Value="{StaticResource DangerSoft}" />
|
||||||
<Setter Property="BorderThickness" Value="1" />
|
<Setter Property="BorderThickness" Value="1" />
|
||||||
<Setter Property="Foreground" Value="{StaticResource Danger}" />
|
<Setter Property="Foreground" Value="{StaticResource Danger}" />
|
||||||
<Setter Property="CornerRadius" Value="9" />
|
<Setter Property="CornerRadius" Value="10" />
|
||||||
<Setter Property="FontFamily" Value="{StaticResource MonoFont}" />
|
<Setter Property="FontFamily" Value="{StaticResource MonoFont}" />
|
||||||
<Setter Property="FontSize" Value="10.5" />
|
<Setter Property="FontSize" Value="10.5" />
|
||||||
<Setter Property="FontWeight" Value="SemiBold" />
|
<Setter Property="FontWeight" Value="SemiBold" />
|
||||||
@@ -126,7 +167,17 @@
|
|||||||
|
|
||||||
Accent-filled, which it shares with Button.primary and with nothing else — and it means the same thing
|
Accent-filled, which it shares with Button.primary and with nothing else — and it means the same thing
|
||||||
in both places: the one action on the surface that is not a choice between peers. Circular by radius
|
in both places: the one action on the surface that is not a choice between peers. Circular by radius
|
||||||
rather than by a Path, so the pressed state the template draws is the same shape as the button.
|
rather than by a Path, so the pressed state the template draws is the same shape as the button — 28,
|
||||||
|
exactly half its own 56, which is a geometric constraint rather than a ladder rung and does not move
|
||||||
|
with the rest of this file's radii.
|
||||||
|
|
||||||
|
◆ Gradient and glow since v5, matching Button.primary rather than staying a flat fill once that one
|
||||||
|
moved. The two are the only accent-filled controls on this head and are read as one idea — "the thing
|
||||||
|
this surface wants you to do" — so a flat FAB beside a gradient primary button would be the seam this
|
||||||
|
codebase's palette file keeps warning about, one screenshot over from the button it echoes. The glow
|
||||||
|
reads as well on a floating circle as it does on a bar-anchored rectangle: if anything a control that
|
||||||
|
already floats over content earns a lift more than one sitting in a row of chrome does, so it is kept
|
||||||
|
rather than dropped for the FAB's own shape.
|
||||||
|
|
||||||
Still only on HOSTS. The design puts a second one on S3 and that editor genuinely does not exist yet, so
|
Still only on HOSTS. The design puts a second one on S3 and that editor genuinely does not exist yet, so
|
||||||
the style being here is not permission to draw one there.
|
the style being here is not permission to draw one there.
|
||||||
@@ -135,7 +186,6 @@
|
|||||||
<Setter Property="Width" Value="56" />
|
<Setter Property="Width" Value="56" />
|
||||||
<Setter Property="Height" Value="56" />
|
<Setter Property="Height" Value="56" />
|
||||||
<Setter Property="Padding" Value="0" />
|
<Setter Property="Padding" Value="0" />
|
||||||
<Setter Property="Background" Value="{StaticResource Accent}" />
|
|
||||||
<Setter Property="BorderThickness" Value="0" />
|
<Setter Property="BorderThickness" Value="0" />
|
||||||
<Setter Property="CornerRadius" Value="28" />
|
<Setter Property="CornerRadius" Value="28" />
|
||||||
<Setter Property="HorizontalContentAlignment" Value="Center" />
|
<Setter Property="HorizontalContentAlignment" Value="Center" />
|
||||||
@@ -145,8 +195,14 @@
|
|||||||
<Setter Property="FontSize" Value="24" />
|
<Setter Property="FontSize" Value="24" />
|
||||||
<Setter Property="FontWeight" Value="SemiBold" />
|
<Setter Property="FontWeight" Value="SemiBold" />
|
||||||
</Style>
|
</Style>
|
||||||
|
<!-- See the remark above Button.primary's own /template/ ContentPresenter rule: BoxShadow has no home on
|
||||||
|
a Button itself, so the fill moves down here alongside it rather than staying a plain Setter. -->
|
||||||
|
<Style Selector="Button.fab /template/ ContentPresenter">
|
||||||
|
<Setter Property="Background" Value="{StaticResource AccentGradient}" />
|
||||||
|
<Setter Property="BoxShadow" Value="{StaticResource AccentGlow}" />
|
||||||
|
</Style>
|
||||||
<Style Selector="Button.fab:pressed /template/ ContentPresenter">
|
<Style Selector="Button.fab:pressed /template/ ContentPresenter">
|
||||||
<Setter Property="Background" Value="{StaticResource Accent}" />
|
<Setter Property="Background" Value="{StaticResource AccentGradient}" />
|
||||||
<Setter Property="Opacity" Value="0.82" />
|
<Setter Property="Opacity" Value="0.82" />
|
||||||
</Style>
|
</Style>
|
||||||
|
|
||||||
@@ -194,7 +250,7 @@
|
|||||||
-->
|
-->
|
||||||
<Style Selector="Border.output">
|
<Style Selector="Border.output">
|
||||||
<Setter Property="Background" Value="{StaticResource TerminalSurface}" />
|
<Setter Property="Background" Value="{StaticResource TerminalSurface}" />
|
||||||
<Setter Property="CornerRadius" Value="14" />
|
<Setter Property="CornerRadius" Value="12" />
|
||||||
<Setter Property="Padding" Value="12" />
|
<Setter Property="Padding" Value="12" />
|
||||||
</Style>
|
</Style>
|
||||||
|
|
||||||
@@ -205,7 +261,7 @@
|
|||||||
-->
|
-->
|
||||||
<Style Selector="Border.tag">
|
<Style Selector="Border.tag">
|
||||||
<Setter Property="Background" Value="{StaticResource Chip}" />
|
<Setter Property="Background" Value="{StaticResource Chip}" />
|
||||||
<Setter Property="CornerRadius" Value="4" />
|
<Setter Property="CornerRadius" Value="6" />
|
||||||
<Setter Property="Padding" Value="7,2" />
|
<Setter Property="Padding" Value="7,2" />
|
||||||
<Setter Property="VerticalAlignment" Value="Center" />
|
<Setter Property="VerticalAlignment" Value="Center" />
|
||||||
</Style>
|
</Style>
|
||||||
@@ -231,7 +287,7 @@
|
|||||||
<Setter Property="Background" Value="Transparent" />
|
<Setter Property="Background" Value="Transparent" />
|
||||||
<Setter Property="BorderBrush" Value="{StaticResource BorderMid}" />
|
<Setter Property="BorderBrush" Value="{StaticResource BorderMid}" />
|
||||||
<Setter Property="BorderThickness" Value="1" />
|
<Setter Property="BorderThickness" Value="1" />
|
||||||
<Setter Property="CornerRadius" Value="4" />
|
<Setter Property="CornerRadius" Value="6" />
|
||||||
<Setter Property="Padding" Value="11,0" />
|
<Setter Property="Padding" Value="11,0" />
|
||||||
<Setter Property="Foreground" Value="{StaticResource TextDim}" />
|
<Setter Property="Foreground" Value="{StaticResource TextDim}" />
|
||||||
<Setter Property="VerticalContentAlignment" Value="Center" />
|
<Setter Property="VerticalContentAlignment" Value="Center" />
|
||||||
@@ -267,11 +323,17 @@
|
|||||||
Checked is a filled surface with accent *text*, not an accent fill. v2 makes that distinction
|
Checked is a filled surface with accent *text*, not an accent fill. v2 makes that distinction
|
||||||
everywhere — see the remark on AccentText in Palette.axaml — and a chip is where it matters most: a row
|
everywhere — see the remark on AccentText in Palette.axaml — and a chip is where it matters most: a row
|
||||||
of four solid blue lozenges is a row of four things that all look like the primary action.
|
of four solid blue lozenges is a row of four things that all look like the primary action.
|
||||||
|
|
||||||
|
◆ Its own radius rather than Border.tag's or Button.chiptoggle's, despite the name. v2 drew this control
|
||||||
|
on the ladder's button-or-pill rung rather than its tag rung — 9, not 4 — and the v5 pass carries the
|
||||||
|
same rung forward to 10 rather than to Border.tag's 6: it is a much larger control at 34 tall against a
|
||||||
|
tag's line-height, and a radius picked for a 34-pixel chip is not the one a 20-pixel tag needs, whatever
|
||||||
|
the class is called. See the remark on Phone.axaml's own ladder, above.
|
||||||
-->
|
-->
|
||||||
<Style Selector="RadioButton.chip">
|
<Style Selector="RadioButton.chip">
|
||||||
<Setter Property="MinHeight" Value="34" />
|
<Setter Property="MinHeight" Value="34" />
|
||||||
<Setter Property="Padding" Value="13,6" />
|
<Setter Property="Padding" Value="13,6" />
|
||||||
<Setter Property="CornerRadius" Value="9" />
|
<Setter Property="CornerRadius" Value="10" />
|
||||||
<Setter Property="Background" Value="Transparent" />
|
<Setter Property="Background" Value="Transparent" />
|
||||||
<Setter Property="BorderBrush" Value="{StaticResource BorderMid}" />
|
<Setter Property="BorderBrush" Value="{StaticResource BorderMid}" />
|
||||||
<Setter Property="BorderThickness" Value="1" />
|
<Setter Property="BorderThickness" Value="1" />
|
||||||
@@ -314,7 +376,7 @@
|
|||||||
<Setter Property="Background" Value="{StaticResource Field}" />
|
<Setter Property="Background" Value="{StaticResource Field}" />
|
||||||
<Setter Property="BorderBrush" Value="{StaticResource BorderMid}" />
|
<Setter Property="BorderBrush" Value="{StaticResource BorderMid}" />
|
||||||
<Setter Property="BorderThickness" Value="1" />
|
<Setter Property="BorderThickness" Value="1" />
|
||||||
<Setter Property="CornerRadius" Value="11" />
|
<Setter Property="CornerRadius" Value="10" />
|
||||||
<Setter Property="Foreground" Value="{StaticResource Text}" />
|
<Setter Property="Foreground" Value="{StaticResource Text}" />
|
||||||
<Setter Property="FontFamily" Value="{StaticResource MonoFont}" />
|
<Setter Property="FontFamily" Value="{StaticResource MonoFont}" />
|
||||||
<Setter Property="FontSize" Value="12" />
|
<Setter Property="FontSize" Value="12" />
|
||||||
|
|||||||
@@ -178,7 +178,7 @@
|
|||||||
<ScrollViewer Grid.Row="3" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled"
|
<ScrollViewer Grid.Row="3" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled"
|
||||||
IsVisible="{Binding IsConnected}" Margin="0,0,0,4">
|
IsVisible="{Binding IsConnected}" Margin="0,0,0,4">
|
||||||
<StackPanel Orientation="Horizontal" Spacing="4" Margin="14,0" VerticalAlignment="Center">
|
<StackPanel Orientation="Horizontal" Spacing="4" Margin="14,0" VerticalAlignment="Center">
|
||||||
<Button Classes="row" MinHeight="36" Padding="9,0" CornerRadius="9"
|
<Button Classes="row" MinHeight="36" Padding="9,0" CornerRadius="10"
|
||||||
Command="{Binding RemoteUpCommand}">
|
Command="{Binding RemoteUpCommand}">
|
||||||
<TextBlock Classes="mono" FontSize="12" Text="↑" Foreground="{StaticResource AccentText}" />
|
<TextBlock Classes="mono" FontSize="12" Text="↑" Foreground="{StaticResource AccentText}" />
|
||||||
</Button>
|
</Button>
|
||||||
@@ -188,7 +188,7 @@
|
|||||||
</ItemsControl.ItemsPanel>
|
</ItemsControl.ItemsPanel>
|
||||||
<ItemsControl.ItemTemplate>
|
<ItemsControl.ItemTemplate>
|
||||||
<DataTemplate x:DataType="vm:CrumbViewModel">
|
<DataTemplate x:DataType="vm:CrumbViewModel">
|
||||||
<Button Classes="row" MinHeight="36" Padding="7,0" CornerRadius="9"
|
<Button Classes="row" MinHeight="36" Padding="7,0" CornerRadius="10"
|
||||||
Command="{Binding $parent[views:FilesScreen].((vm:TransfersViewModel)DataContext).GoRemoteCommand}"
|
Command="{Binding $parent[views:FilesScreen].((vm:TransfersViewModel)DataContext).GoRemoteCommand}"
|
||||||
CommandParameter="{Binding Path}">
|
CommandParameter="{Binding Path}">
|
||||||
<TextBlock Classes="detail" FontSize="11" Text="{Binding Name}" />
|
<TextBlock Classes="detail" FontSize="11" Text="{Binding Name}" />
|
||||||
@@ -265,7 +265,8 @@
|
|||||||
</Panel>
|
</Panel>
|
||||||
|
|
||||||
<!-- ============ what to do with the chosen entry ============ -->
|
<!-- ============ what to do with the chosen entry ============ -->
|
||||||
<Border Grid.Row="5" IsVisible="{Binding IsConnected}" Background="{StaticResource Chrome}"
|
<!-- DeepChrome rather than Chrome, since v5 — see the remark on PhoneShell's vault header. -->
|
||||||
|
<Border Grid.Row="5" IsVisible="{Binding IsConnected}" Background="{StaticResource DeepChrome}"
|
||||||
BorderBrush="{StaticResource Border}" BorderThickness="0,1,0,0" Padding="12,10">
|
BorderBrush="{StaticResource Border}" BorderThickness="0,1,0,0" Padding="12,10">
|
||||||
<StackPanel Spacing="9">
|
<StackPanel Spacing="9">
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,9 @@
|
|||||||
of "edit these six". The three that stay are the ones a count makes better rather than worse.
|
of "edit these six". The three that stay are the ones a count makes better rather than worse.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<Border Background="{StaticResource Chrome}" BorderBrush="{StaticResource Border}"
|
<!-- DeepChrome rather than Chrome, since v5: this bar takes the vault header's own place, so it takes
|
||||||
|
the vault header's own surface too — see the remark on that header in PhoneShell.axaml. -->
|
||||||
|
<Border Background="{StaticResource DeepChrome}" BorderBrush="{StaticResource Border}"
|
||||||
BorderThickness="0,0,0,1" Padding="6,0" Height="56">
|
BorderThickness="0,0,0,1" Padding="6,0" Height="56">
|
||||||
<Grid ColumnDefinitions="Auto,*,Auto,Auto">
|
<Grid ColumnDefinitions="Auto,*,Auto,Auto">
|
||||||
|
|
||||||
|
|||||||
@@ -68,7 +68,7 @@
|
|||||||
of a selection and ticking it is a thing this screen supports rather than merely survives.
|
of a selection and ticking it is a thing this screen supports rather than merely survives.
|
||||||
-->
|
-->
|
||||||
<Border Grid.Row="0" Margin="14,10,14,4" Background="{StaticResource Field}"
|
<Border Grid.Row="0" Margin="14,10,14,4" Background="{StaticResource Field}"
|
||||||
BorderBrush="{StaticResource BorderMid}" BorderThickness="1" CornerRadius="11" Height="44">
|
BorderBrush="{StaticResource BorderMid}" BorderThickness="1" CornerRadius="10" Height="44">
|
||||||
<Grid ColumnDefinitions="Auto,*">
|
<Grid ColumnDefinitions="Auto,*">
|
||||||
<TextBlock Grid.Column="0" Text="⌕" Foreground="{StaticResource TextFaint}" FontSize="13"
|
<TextBlock Grid.Column="0" Text="⌕" Foreground="{StaticResource TextFaint}" FontSize="13"
|
||||||
Margin="13,0,0,0" VerticalAlignment="Center" />
|
Margin="13,0,0,0" VerticalAlignment="Center" />
|
||||||
@@ -974,7 +974,10 @@
|
|||||||
<Grid IsVisible="{Binding IsEditing}" RowDefinitions="Auto,*"
|
<Grid IsVisible="{Binding IsEditing}" RowDefinitions="Auto,*"
|
||||||
Background="{StaticResource Canvas}">
|
Background="{StaticResource Canvas}">
|
||||||
|
|
||||||
<Border Grid.Row="0" Background="{StaticResource Chrome}" BorderBrush="{StaticResource Border}"
|
<!-- DeepChrome rather than Chrome, since v5: "its header carries what the surrounding chrome no longer
|
||||||
|
can" below is still true, and now the header itself carries the darker chrome the rest of this
|
||||||
|
head's frame does — see the remark on PhoneShell's vault header. -->
|
||||||
|
<Border Grid.Row="0" Background="{StaticResource DeepChrome}" BorderBrush="{StaticResource Border}"
|
||||||
BorderThickness="0,0,0,1" Padding="6,0" Height="56">
|
BorderThickness="0,0,0,1" Padding="6,0" Height="56">
|
||||||
<Grid ColumnDefinitions="Auto,*,Auto">
|
<Grid ColumnDefinitions="Auto,*,Auto">
|
||||||
<Button Grid.Column="0" Classes="icon" Content="←" Command="{Binding CancelEditCommand}"
|
<Button Grid.Column="0" Classes="icon" Content="←" Command="{Binding CancelEditCommand}"
|
||||||
|
|||||||
@@ -91,8 +91,8 @@
|
|||||||
|
|
||||||
Not Border.card, and neither are its two counterparts on HOSTS and FILES: that class is a panel,
|
Not Border.card, and neither are its two counterparts on HOSTS and FILES: that class is a panel,
|
||||||
and this is a warning, so the background and the border are the warn pair rather than the chrome
|
and this is a warning, so the background and the border are the warn pair rather than the chrome
|
||||||
one. What it does take is the radius the v2 ladder gives anything card-sized, which is what the
|
one. What it does take is the radius the ladder gives anything card-sized — 12, unchanged from v2
|
||||||
other two already draw.
|
to v5 — which is what the other two already draw.
|
||||||
-->
|
-->
|
||||||
<Border IsVisible="{Binding HasLiveSessions}" Margin="0,22,0,0"
|
<Border IsVisible="{Binding HasLiveSessions}" Margin="0,22,0,0"
|
||||||
Background="{StaticResource WarnWash}" BorderBrush="{StaticResource WarnSoft}"
|
Background="{StaticResource WarnWash}" BorderBrush="{StaticResource WarnSoft}"
|
||||||
|
|||||||
@@ -36,6 +36,18 @@
|
|||||||
The .railentry styles live in this file because they are this control's own shape and nothing else wears
|
The .railentry styles live in this file because they are this control's own shape and nothing else wears
|
||||||
them; every colour in them is resolved from Theme/Palette.axaml by key, which is the rule that matters —
|
them; every colour in them is resolved from Theme/Palette.axaml by key, which is the rule that matters —
|
||||||
a rail that named its own blues is how a fifth surface colour ends up in the application.
|
a rail that named its own blues is how a fifth surface colour ends up in the application.
|
||||||
|
|
||||||
|
── DEEP CHROME, SINCE v5 ───────────────────────────────────────────────────────────────────────────────
|
||||||
|
This rail's own surface moves from Sidebar to DeepChrome in this pass, matching the desktop's NavRail —
|
||||||
|
which is exactly what this control is standing in for on a wide phone, and which took the same v5b move
|
||||||
|
itself: Palette.axaml's own remark on DeepChrome names "the rail down the side" as one of the five things
|
||||||
|
that colour is for. Sidebar stays what a card sits on; this is the frame the cards sit inside, the same
|
||||||
|
distinction PhoneShell's header, strip and bottom bar are drawing at the same time.
|
||||||
|
|
||||||
|
The hover fill moves too, from Panel to Track — and Track rather than Hover, because Palette.axaml's own
|
||||||
|
remark on Track names "the rail row a pointer sits over" as one of the three things that colour is for,
|
||||||
|
literally. Panel was never named for this; it read close enough that nobody had gone looking for the
|
||||||
|
seam, which is exactly the kind of gap Track exists to close.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<UserControl.Styles>
|
<UserControl.Styles>
|
||||||
@@ -54,7 +66,7 @@
|
|||||||
</Style>
|
</Style>
|
||||||
|
|
||||||
<Style Selector="Button.railentry:pointerover /template/ ContentPresenter">
|
<Style Selector="Button.railentry:pointerover /template/ ContentPresenter">
|
||||||
<Setter Property="Background" Value="{StaticResource Panel}" />
|
<Setter Property="Background" Value="{StaticResource Track}" />
|
||||||
</Style>
|
</Style>
|
||||||
|
|
||||||
<Style Selector="Button.railentry.active /template/ ContentPresenter">
|
<Style Selector="Button.railentry.active /template/ ContentPresenter">
|
||||||
@@ -96,7 +108,7 @@
|
|||||||
</Style>
|
</Style>
|
||||||
</UserControl.Styles>
|
</UserControl.Styles>
|
||||||
|
|
||||||
<Border Width="188" Background="{StaticResource Sidebar}"
|
<Border Width="188" Background="{StaticResource DeepChrome}"
|
||||||
BorderBrush="{StaticResource Border}" BorderThickness="0,0,1,0">
|
BorderBrush="{StaticResource Border}" BorderThickness="0,0,1,0">
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
|
|||||||
@@ -97,7 +97,16 @@
|
|||||||
the surface. See PhoneShell.ShowsVaultHeader.
|
the surface. See PhoneShell.ShowsVaultHeader.
|
||||||
-->
|
-->
|
||||||
<Panel Grid.Row="0" IsVisible="{Binding $parent[views:PhoneShell].ShowsVaultHeader}">
|
<Panel Grid.Row="0" IsVisible="{Binding $parent[views:PhoneShell].ShowsVaultHeader}">
|
||||||
<Border Background="{StaticResource Chrome}" BorderBrush="{StaticResource Border}"
|
<!--
|
||||||
|
◆ DeepChrome rather than Chrome, since v5. The desktop's own titlebar and nav rail made the same
|
||||||
|
move in v5b — one step darker than Chrome, #0B0B14 against #10111E, so the frame reads as what
|
||||||
|
holds the glass rather than as another pane of it — and this header is the phone's equivalent
|
||||||
|
furniture: it is what the desktop's titlebar is, on the surface that has no window to carry one.
|
||||||
|
HostActionBar, which takes this header's own place while hosts are selected, and the editor's
|
||||||
|
header in HostsScreen, which the header stands down for, both move with it for the same reason;
|
||||||
|
see the remark on each.
|
||||||
|
-->
|
||||||
|
<Border Background="{StaticResource DeepChrome}" BorderBrush="{StaticResource Border}"
|
||||||
BorderThickness="0,0,0,1" Padding="14,0" Height="56">
|
BorderThickness="0,0,0,1" Padding="14,0" Height="56">
|
||||||
<Grid ColumnDefinitions="Auto,*,Auto,Auto">
|
<Grid ColumnDefinitions="Auto,*,Auto,Auto">
|
||||||
|
|
||||||
@@ -288,7 +297,10 @@
|
|||||||
PhoneShell.ShowsShellStrip, which is where that "and" is made, Avalonia's bindings having none.
|
PhoneShell.ShowsShellStrip, which is where that "and" is made, Avalonia's bindings having none.
|
||||||
-->
|
-->
|
||||||
<Panel Grid.Row="2" IsVisible="{Binding $parent[views:PhoneShell].ShowsShellStrip}">
|
<Panel Grid.Row="2" IsVisible="{Binding $parent[views:PhoneShell].ShowsShellStrip}">
|
||||||
<Border IsVisible="{Binding HasTabs}" Background="{StaticResource Sidebar}"
|
<!-- DeepChrome rather than Sidebar, since v5, joining the header and the bar above and below it:
|
||||||
|
the strip is chrome the same way they are — a frame around the screen rather than a pane of
|
||||||
|
it — and Sidebar is what a card sits on, which this row is not. -->
|
||||||
|
<Border IsVisible="{Binding HasTabs}" Background="{StaticResource DeepChrome}"
|
||||||
BorderBrush="{StaticResource Border}" BorderThickness="0,1,0,0" Height="46">
|
BorderBrush="{StaticResource Border}" BorderThickness="0,1,0,0" Height="46">
|
||||||
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled">
|
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled">
|
||||||
<ItemsControl ItemsSource="{Binding Tabs}" Margin="12,0" VerticalAlignment="Center">
|
<ItemsControl ItemsSource="{Binding Tabs}" Margin="12,0" VerticalAlignment="Center">
|
||||||
@@ -297,7 +309,7 @@
|
|||||||
</ItemsControl.ItemsPanel>
|
</ItemsControl.ItemsPanel>
|
||||||
<ItemsControl.ItemTemplate>
|
<ItemsControl.ItemTemplate>
|
||||||
<DataTemplate x:DataType="vm:TerminalTabViewModel">
|
<DataTemplate x:DataType="vm:TerminalTabViewModel">
|
||||||
<Button Classes="row" MinHeight="34" Padding="13,0" CornerRadius="9"
|
<Button Classes="row" MinHeight="34" Padding="13,0" CornerRadius="10"
|
||||||
Background="{StaticResource Panel}" BorderBrush="{StaticResource BorderMid}"
|
Background="{StaticResource Panel}" BorderBrush="{StaticResource BorderMid}"
|
||||||
BorderThickness="1"
|
BorderThickness="1"
|
||||||
Command="{Binding $parent[views:PhoneShell].((vm:MainWindowViewModel)DataContext).SelectTabCommand}"
|
Command="{Binding $parent[views:PhoneShell].((vm:MainWindowViewModel)DataContext).SelectTabCommand}"
|
||||||
@@ -341,8 +353,10 @@
|
|||||||
shape of everything else already behind the hub. What is left is the two halves of using this
|
shape of everything else already behind the hub. What is left is the two halves of using this
|
||||||
application, and the drawer holding the rest.
|
application, and the drawer holding the rest.
|
||||||
-->
|
-->
|
||||||
|
<!-- DeepChrome rather than Chrome, since v5 — see the remark on the vault header, above, which this
|
||||||
|
bar is the foot of the same frame the header is the top of. -->
|
||||||
<Border Grid.Row="3" IsVisible="{Binding $parent[views:PhoneShell].ShowsBottomBar}"
|
<Border Grid.Row="3" IsVisible="{Binding $parent[views:PhoneShell].ShowsBottomBar}"
|
||||||
Background="{StaticResource Chrome}" BorderBrush="{StaticResource Border}"
|
Background="{StaticResource DeepChrome}" BorderBrush="{StaticResource Border}"
|
||||||
BorderThickness="0,1,0,0" Height="64">
|
BorderThickness="0,1,0,0" Height="64">
|
||||||
<Grid ColumnDefinitions="*,*,*">
|
<Grid ColumnDefinitions="*,*,*">
|
||||||
|
|
||||||
|
|||||||
@@ -36,8 +36,16 @@
|
|||||||
good way to read a code and a bad way to copy one: a user who cannot select it will photograph the
|
good way to read a code and a bad way to copy one: a user who cannot select it will photograph the
|
||||||
screen, and that is a worse home for it than their clipboard.
|
screen, and that is a worse home for it than their clipboard.
|
||||||
-->
|
-->
|
||||||
|
<!--
|
||||||
|
◆ CornerRadius 12, not 6. Its padding, 14,13, is Border.card's own — this box was already drawn to a
|
||||||
|
card's proportions, in every dimension but the corner — so under v2's ladder 6 was an outlier this
|
||||||
|
file never explained. It is worse than unexplained now: v5's ladder gives 6 to a chip, and a
|
||||||
|
full-width box holding the one secret this whole screen exists to show is not a chip wearing a
|
||||||
|
card's padding by coincidence. 12 is what a card-shaped box gets on this ladder, and this one always
|
||||||
|
was one.
|
||||||
|
-->
|
||||||
<Border Margin="0,20,0,0" Background="{StaticResource Field}" BorderBrush="{StaticResource BorderMid}"
|
<Border Margin="0,20,0,0" Background="{StaticResource Field}" BorderBrush="{StaticResource BorderMid}"
|
||||||
BorderThickness="1" CornerRadius="6" Padding="14,13">
|
BorderThickness="1" CornerRadius="12" Padding="14,13">
|
||||||
<SelectableTextBlock Text="{Binding RecoveryCode}"
|
<SelectableTextBlock Text="{Binding RecoveryCode}"
|
||||||
FontFamily="{StaticResource MonoFont}" FontSize="14"
|
FontFamily="{StaticResource MonoFont}" FontSize="14"
|
||||||
Foreground="{StaticResource Accent}"
|
Foreground="{StaticResource Accent}"
|
||||||
|
|||||||
@@ -20,9 +20,17 @@
|
|||||||
<StackPanel Spacing="10" HorizontalAlignment="Center" Margin="0,48,0,36">
|
<StackPanel Spacing="10" HorizontalAlignment="Center" Margin="0,48,0,36">
|
||||||
<!--
|
<!--
|
||||||
Filled rather than outlined since v2, the same mark the header, the desktop titlebar and the
|
Filled rather than outlined since v2, the same mark the header, the desktop titlebar and the
|
||||||
launcher icon carry. The radius is not picked: the mark runs 6 at 20 and 8 at 26, which is a
|
launcher icon carry. The radius is not picked: the mark runs 6 at 20 and 8 at 26, a third of a
|
||||||
third of a unit per unit of tile and lands on 14 at 44 — and 14 is a rung of Phone.axaml's
|
unit per unit of tile, and lands on 14 at 44.
|
||||||
ladder, the one for a block of monospaced output, which is what this is.
|
|
||||||
|
◆ That used to be a rung of Phone.axaml's own ladder too — 14, the one for a block of monospaced
|
||||||
|
output, which this glyph reads as — and the coincidence was worth a sentence: one fewer number
|
||||||
|
the ladder had to introduce. It is a coincidence no longer. v5's ladder moves output to 12 and
|
||||||
|
never reaches 14 at all, so the mark's own 6/8/14 progression stands on its own now rather than
|
||||||
|
borrowing a card- or output-shaped justification — a self-contained proportion for a badge that
|
||||||
|
answers to nothing but its own three sizes. Left at 14 rather than moved to 12 with everything
|
||||||
|
else: the ladder governs content surfaces, and this is a mark, sized off its own tile rather than
|
||||||
|
off what it holds.
|
||||||
-->
|
-->
|
||||||
<Border Width="44" Height="44" CornerRadius="14" Background="{StaticResource Accent}"
|
<Border Width="44" Height="44" CornerRadius="14" Background="{StaticResource Accent}"
|
||||||
HorizontalAlignment="Center">
|
HorizontalAlignment="Center">
|
||||||
|
|||||||
@@ -156,8 +156,12 @@
|
|||||||
</Border>
|
</Border>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
<!-- The command, on the surface every block of monospace in this design is drawn on. -->
|
<!-- The command, on the surface every block of monospace in this design is drawn on.
|
||||||
<Border Classes="output" CornerRadius="9" Padding="11,9">
|
No radius override any more: it diverged from Border.output's own 14 under v2 for a
|
||||||
|
smaller card-nested block, and now that the style's own value has moved to 12 there is
|
||||||
|
no gap left worth a second number for — it takes the class's, like every other output
|
||||||
|
block on this head. -->
|
||||||
|
<Border Classes="output" Padding="11,9">
|
||||||
<TextBlock Classes="mono" FontSize="11" Text="{Binding Preview}"
|
<TextBlock Classes="mono" FontSize="11" Text="{Binding Preview}"
|
||||||
Foreground="{StaticResource Text}" TextTrimming="CharacterEllipsis" />
|
Foreground="{StaticResource Text}" TextTrimming="CharacterEllipsis" />
|
||||||
</Border>
|
</Border>
|
||||||
@@ -174,8 +178,12 @@
|
|||||||
second column to put it in. Both buttons name the terminal — "TYPE INTO pg-primary" — because on a
|
second column to put it in. Both buttons name the terminal — "TYPE INTO pg-primary" — because on a
|
||||||
phone the tab strip may be scrolled away and "whatever is in the terminal receives this" is not a
|
phone the tab strip may be scrolled away and "whatever is in the terminal receives this" is not a
|
||||||
sentence anybody should have to guess the subject of.
|
sentence anybody should have to guess the subject of.
|
||||||
|
|
||||||
|
DeepChrome rather than Chrome, since v5: this bar is chrome furniture in the same sense the bottom
|
||||||
|
nav bar it sits above is — a raised strip of frame rather than a pane of content — and joins the same
|
||||||
|
DeepChrome decision PhoneShell's header, strip and bar made. See the remark there.
|
||||||
-->
|
-->
|
||||||
<Border Grid.Row="4" IsVisible="{Binding HasSelection}" Background="{StaticResource Chrome}"
|
<Border Grid.Row="4" IsVisible="{Binding HasSelection}" Background="{StaticResource DeepChrome}"
|
||||||
BorderBrush="{StaticResource Border}" BorderThickness="0,1,0,0" Padding="14,12"
|
BorderBrush="{StaticResource Border}" BorderThickness="0,1,0,0" Padding="14,12"
|
||||||
IsEnabled="{Binding !IsEditing}">
|
IsEnabled="{Binding !IsEditing}">
|
||||||
<StackPanel Spacing="9">
|
<StackPanel Spacing="9">
|
||||||
|
|||||||
@@ -49,7 +49,10 @@
|
|||||||
to 34, the pills to 30 — because a bar that shrank around controls that did not would only have moved
|
to 34, the pills to 30 — because a bar that shrank around controls that did not would only have moved
|
||||||
the clipping somewhere harder to see.
|
the clipping somewhere harder to see.
|
||||||
-->
|
-->
|
||||||
<Border Grid.Row="0" Height="35" Background="{StaticResource Chrome}"
|
<!-- DeepChrome rather than Chrome, since v5: this bar is what the vault header, the strip and the
|
||||||
|
bottom bar collapse into while a shell is showing, so it takes their surface along with their
|
||||||
|
job — see the remark on the header in PhoneShell.axaml. -->
|
||||||
|
<Border Grid.Row="0" Height="35" Background="{StaticResource DeepChrome}"
|
||||||
BorderBrush="{StaticResource Border}" BorderThickness="0,0,0,1">
|
BorderBrush="{StaticResource Border}" BorderThickness="0,0,0,1">
|
||||||
<Grid ColumnDefinitions="Auto,*,Auto">
|
<Grid ColumnDefinitions="Auto,*,Auto">
|
||||||
|
|
||||||
@@ -87,9 +90,9 @@
|
|||||||
row where nothing sits above or below it to be hit by mistake.
|
row where nothing sits above or below it to be hit by mistake.
|
||||||
-->
|
-->
|
||||||
<Border Background="{StaticResource Panel}" BorderBrush="{StaticResource BorderMid}"
|
<Border Background="{StaticResource Panel}" BorderBrush="{StaticResource BorderMid}"
|
||||||
BorderThickness="1" CornerRadius="9" Height="30">
|
BorderThickness="1" CornerRadius="10" Height="30">
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<Button Classes="row" MinHeight="28" Padding="11,0" CornerRadius="9"
|
<Button Classes="row" MinHeight="28" Padding="11,0" CornerRadius="10"
|
||||||
VerticalContentAlignment="Center"
|
VerticalContentAlignment="Center"
|
||||||
Command="{Binding $parent[views:TerminalScreen].((vm:MainWindowViewModel)DataContext).SelectTabCommand}"
|
Command="{Binding $parent[views:TerminalScreen].((vm:MainWindowViewModel)DataContext).SelectTabCommand}"
|
||||||
CommandParameter="{Binding}">
|
CommandParameter="{Binding}">
|
||||||
@@ -116,7 +119,7 @@
|
|||||||
It reads as a misprint, which for the control that ends a session is the wrong thing
|
It reads as a misprint, which for the control that ends a session is the wrong thing
|
||||||
to look like.
|
to look like.
|
||||||
-->
|
-->
|
||||||
<Button Classes="row" MinHeight="28" Width="44" Padding="0" CornerRadius="0,9,9,0"
|
<Button Classes="row" MinHeight="28" Width="44" Padding="0" CornerRadius="0,10,10,0"
|
||||||
HorizontalContentAlignment="Center" VerticalContentAlignment="Center"
|
HorizontalContentAlignment="Center" VerticalContentAlignment="Center"
|
||||||
BorderBrush="{StaticResource BorderMid}" BorderThickness="1,0,0,0"
|
BorderBrush="{StaticResource BorderMid}" BorderThickness="1,0,0,0"
|
||||||
Command="{Binding $parent[views:TerminalScreen].((vm:MainWindowViewModel)DataContext).CloseTabCommand}"
|
Command="{Binding $parent[views:TerminalScreen].((vm:MainWindowViewModel)DataContext).CloseTabCommand}"
|
||||||
@@ -362,7 +365,7 @@
|
|||||||
<Border Width="1" Height="18" Background="{StaticResource Border}" Margin="0,0,3,0"
|
<Border Width="1" Height="18" Background="{StaticResource Border}" Margin="0,0,3,0"
|
||||||
VerticalAlignment="Center" />
|
VerticalAlignment="Center" />
|
||||||
|
|
||||||
<Button Classes="row" MinHeight="30" Height="30" MinWidth="40" Padding="0" CornerRadius="9"
|
<Button Classes="row" MinHeight="30" Height="30" MinWidth="40" Padding="0" CornerRadius="10"
|
||||||
HorizontalContentAlignment="Center" VerticalContentAlignment="Center"
|
HorizontalContentAlignment="Center" VerticalContentAlignment="Center"
|
||||||
Background="{StaticResource Panel}" BorderBrush="{StaticResource BorderMid}"
|
Background="{StaticResource Panel}" BorderBrush="{StaticResource BorderMid}"
|
||||||
BorderThickness="1" Focusable="False"
|
BorderThickness="1" Focusable="False"
|
||||||
@@ -371,7 +374,7 @@
|
|||||||
<TextBlock Classes="mono" FontSize="13" Text="A−" />
|
<TextBlock Classes="mono" FontSize="13" Text="A−" />
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
<Button Classes="row" MinHeight="30" Height="30" MinWidth="40" Padding="0" CornerRadius="9"
|
<Button Classes="row" MinHeight="30" Height="30" MinWidth="40" Padding="0" CornerRadius="10"
|
||||||
HorizontalContentAlignment="Center" VerticalContentAlignment="Center"
|
HorizontalContentAlignment="Center" VerticalContentAlignment="Center"
|
||||||
Background="{StaticResource Panel}" BorderBrush="{StaticResource BorderMid}"
|
Background="{StaticResource Panel}" BorderBrush="{StaticResource BorderMid}"
|
||||||
BorderThickness="1" Focusable="False"
|
BorderThickness="1" Focusable="False"
|
||||||
|
|||||||
@@ -336,9 +336,11 @@
|
|||||||
the thing the whole screen is about — a member can only be selected under one, so choosing who is the
|
the thing the whole screen is about — a member can only be selected under one, so choosing who is the
|
||||||
only half left to make.
|
only half left to make.
|
||||||
-->
|
-->
|
||||||
|
<!-- DeepChrome rather than Chrome, since v5 — the same raised-bar decision SnippetsScreen and
|
||||||
|
FilesScreen make for their own selection bars; see the remark on PhoneShell's vault header. -->
|
||||||
<Border Grid.Row="4"
|
<Border Grid.Row="4"
|
||||||
IsVisible="{Binding SelectedMember, Converter={x:Static ObjectConverters.IsNotNull}}"
|
IsVisible="{Binding SelectedMember, Converter={x:Static ObjectConverters.IsNotNull}}"
|
||||||
Background="{StaticResource Chrome}" BorderBrush="{StaticResource Border}"
|
Background="{StaticResource DeepChrome}" BorderBrush="{StaticResource Border}"
|
||||||
BorderThickness="0,1,0,0" Padding="14,12">
|
BorderThickness="0,1,0,0" Padding="14,12">
|
||||||
<StackPanel Spacing="9">
|
<StackPanel Spacing="9">
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user