Skip to content

Commit

Permalink
Rename ProxyFloatingLayoutPlugin into FloatingWindowPlugin
Browse files Browse the repository at this point in the history
  • Loading branch information
Lukinoh committed Aug 3, 2024
1 parent 964cd0c commit 02d87f4
Show file tree
Hide file tree
Showing 17 changed files with 220 additions and 218 deletions.
2 changes: 1 addition & 1 deletion docs/docs/customize/layout-engines.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,6 @@ context.PluginManager.AddPlugin(treeLayoutPlugin);

### `FloatingLayoutEngine`

<xref:Whim.FloatingLayout.FloatingLayoutEngine> is a layout that has all windows being free-floating. To have specific windows float within a different layout, see the [Proxy Floating Layout Plugin](../plugins/proxy-floating-layout.md).
<xref:Whim.FloatingLayout.FloatingLayoutEngine> is a layout that has all windows being free-floating. To have specific windows float within a different layout, see the [Floating Window Plugin](../plugins/floating-window.md).

![FloatingLayoutEngine demo](../../images/floating-layout-demo.gif)
2 changes: 1 addition & 1 deletion docs/docs/getting-started/plugins.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ context.PluginManager.AddPlugin(barPlugin);
|--------------------------------------------------------------------------| ------------------------------------------------------------------------------------------------- |
| [Bar](../plugins/bar.md) | Adds a configurable bar to the top of each screen |
| [Command Palette](../plugins/command-palette.md) | Fuzzy command palette filled with [commands](../customize/commands.md) |
| [Proxy Floating Layout](../plugins/proxy-floating-layout.md) | Lets windows float outside other layout engines |
| [Floating Window](../plugins/floating-window.md) | Lets windows float outside other layout engines |
| [Focus](../plugins/focus-indicator.md) | Adds a border around the current window |
| [Gaps](../plugins/gaps.md) | Adds gaps between windows |
| [Layout Preview](../plugins/layout-preview.md) | Shows a preview when dragging windows |
Expand Down
39 changes: 39 additions & 0 deletions docs/docs/plugins/floating-window.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Floating Window Plugin

The <xref:Whim.FloatingLayout.FloatingWindowPlugin> adds a `ProxyFloatingLayoutEngine` proxy engine to Whim. This adds the ability for windows to float outside of any other layouts.

The <xref:Whim.FloatingLayout.FloatingWindowPlugin> has no configuration options.

![Floating window demo](../../images/floating-window-demo.gif)

Notice that this plugin is not related to the `FloatingLayoutEngine`.

## Example Config

```csharp
#r "WHIM_PATH\whim.dll"
#r "WHIM_PATH\plugins\Whim.FloatingLayout\Whim.FloatingLayout.dll"

using Whim;
using Whim.FloatingLayout;

void DoConfig(IContext context)
{
// ...
FloatingWindowPlugin floatingWindowPlugin = new(context);
context.PluginManager.AddPlugin(floatingWindowPlugin);

// ...
}

return DoConfig;
```

## Commands

| Identifier | Title | Keybind |
|------------------------------------------------| ----------------------- | ------------------------------------------------ |
| `whim.floating_window.toggle_window_floating` | Toggle window floating | <kbd>Win</kbd> + <kbd>Shift</kbd> + <kbd>F</kbd> |
| `whim.floating_window.mark_window_as_floating` | Mark window as floating | <kbd>Win</kbd> + <kbd>Shift</kbd> + <kbd>M</kbd> |
| `whim.floating_window.mark_window_as_docked` | Mark window as docked | <kbd>Win</kbd> + <kbd>Shift</kbd> + <kbd>D</kbd> |
37 changes: 0 additions & 37 deletions docs/docs/plugins/proxy-floating-layout.md

This file was deleted.

2 changes: 1 addition & 1 deletion docs/docs/toc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ items:
- name: Plugins
- href: plugins/bar.md
- href: plugins/command-palette.md
- href: plugins/proxy-floating-layout.md
- href: plugins/floating-window.md
- href: plugins/focus-indicator.md
- href: plugins/gaps.md
- href: plugins/layout-preview.md
Expand Down
File renamed without changes
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ public class BaseProxyFloatingLayoutEngineTests : ProxyLayoutEngineBaseTests
{
IContext context = Substitute.For<IContext>();
IMonitor monitor = Substitute.For<IMonitor>();
IInternalProxyFloatingLayoutPlugin plugin = Substitute.For<IInternalProxyFloatingLayoutPlugin>();
IInternalFloatingWindowPlugin plugin = Substitute.For<IInternalFloatingWindowPlugin>();
ILayoutEngine innerLayoutEngine = Substitute.For<ILayoutEngine>();

context
Expand Down
61 changes: 61 additions & 0 deletions src/Whim.FloatingLayout.Tests/FloatingWindowCommandsTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
using AutoFixture;
using NSubstitute;
using Whim.TestUtils;
using Xunit;

namespace Whim.FloatingLayout.Tests;

public class FloatingWindowCommandsCustomization : ICustomization
{
public void Customize(IFixture fixture)
{
IFloatingWindowPlugin plugin = fixture.Freeze<IFloatingWindowPlugin>();
plugin.Name.Returns("whim.floating_window");
fixture.Inject(plugin);
}
}

public class FloatingWindowCommandsTests
{
private static ICommand CreateSut(IFloatingWindowPlugin plugin, string id) =>
new PluginCommandsTestUtils(new FloatingWindowCommands(plugin)).GetCommand(id);

[Theory, AutoSubstituteData<FloatingWindowCommandsCustomization>]
public void ToggleWindowFloatingCommand(IFloatingWindowPlugin plugin)
{
// Given
ICommand command = CreateSut(plugin, "whim.floating_window.toggle_window_floating");

// When
command.TryExecute();

// Then
plugin.Received(1).ToggleWindowFloating(null);
}

[Theory, AutoSubstituteData<FloatingWindowCommandsCustomization>]
public void MarkWindowAsFloatingCommand(IFloatingWindowPlugin plugin)
{
// Given
ICommand command = CreateSut(plugin, "whim.floating_window.mark_window_as_floating");

// When
command.TryExecute();

// Then
plugin.Received(1).MarkWindowAsFloating(null);
}

[Theory, AutoSubstituteData<FloatingWindowCommandsCustomization>]
public void MarkWindowAsDockedCommand(IFloatingWindowPlugin plugin)
{
// Given
ICommand command = CreateSut(plugin, "whim.floating_window.mark_window_as_docked");

// When
command.TryExecute();

// Then
plugin.Received(1).MarkWindowAsDocked(null);
}
}
Loading

0 comments on commit 02d87f4

Please sign in to comment.