Skip to content

Commit

Permalink
Wip
Browse files Browse the repository at this point in the history
  • Loading branch information
mattkae committed Feb 2, 2025
1 parent 5f01640 commit b1f2c7c
Show file tree
Hide file tree
Showing 21 changed files with 261 additions and 793 deletions.
4 changes: 2 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,7 @@ add_library(miracle-wm-implementation
src/program_factory.cpp
src/mode_observer.cpp
src/debug_helper.h
src/floating_window_container.cpp
src/shell_component_container.cpp
src/shell_component_container.cpp
src/container_group_container.cpp
src/container_group_container.h
src/layout_scheme.cpp
Expand All @@ -85,6 +84,7 @@ add_library(miracle-wm-implementation
src/output_manager.cpp src/output_manager.h
src/miral_output_factory.cpp src/miral_output_factory.cpp
src/miral_output.h src/miral_output.cpp
src/move_service.h src/move_service.cpp
)

add_executable(miracle-wm
Expand Down
9 changes: 7 additions & 2 deletions src/command_controller.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -589,8 +589,8 @@ std::shared_ptr<Container> CommandController::toggle_floating_internal(std::shar
{
geom::Rectangle new_area = {
geom::Point{
container->get_logical_area().top_left.x.as_int() + 100,
container->get_logical_area().top_left.y.as_int() + 100
container->get_logical_area().top_left.x.as_int() + 50,
container->get_logical_area().top_left.y.as_int() + 50
},
geom::Size{
container->get_logical_area().size.width,
Expand All @@ -600,6 +600,7 @@ std::shared_ptr<Container> CommandController::toggle_floating_internal(std::shar
auto new_parent = workspace->create_floating_tree(new_area);
new_parent->graft_existing(container, new_parent->num_nodes());
container->set_workspace(workspace);
new_parent->commit_changes();
}
else
{
Expand Down Expand Up @@ -1116,6 +1117,10 @@ nlohmann::json CommandController::mode_to_json() const
return {
{ "name", "dragging" }
};
case WindowManagerMode::moving:
return {
{ "name", "moving" }
};
default:
{
mir::fatal_error("handle_command: unknown binding state: %d", (int)state.mode());
Expand Down
4 changes: 3 additions & 1 deletion src/compositor_state.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,9 @@ enum class WindowManagerMode
/// keybind/mousebind can be selected or deselected.
selecting,

dragging
dragging,

moving
};

class CompositorState
Expand Down
12 changes: 12 additions & 0 deletions src/config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,8 @@ void FilesystemConfiguration::reload()
read_animation_definitions(config["animations"]);
if (config["enable_animations"])
read_enable_animations(config["enable_animations"]);
if (config["move_modifier"])
read_move_modifier(config["move_modifier"]);
if (config["drag_and_drop"])
read_drag_and_drop(config["drag_and_drop"]);

Expand Down Expand Up @@ -754,6 +756,11 @@ void FilesystemConfiguration::read_enable_animations(YAML::Node const& node)
try_parse_value(node, options.animations_enabled);
}

void FilesystemConfiguration::read_move_modifier(YAML::Node const& node)
{
try_parse_modifiers(node, options.move_modifier);
}

void FilesystemConfiguration::read_drag_and_drop(YAML::Node const& node)
{
try_parse_value(node, "enabled", options.drag_and_drop.enabled, true);
Expand Down Expand Up @@ -1025,6 +1032,11 @@ DragAndDropConfiguration FilesystemConfiguration::drag_and_drop() const
return options.drag_and_drop;
}

uint FilesystemConfiguration::move_modifier() const
{
return options.move_modifier;
}

FilesystemConfiguration::ConfigDetails::ConfigDetails()
{
const KeyCommand default_key_commands[static_cast<int>(DefaultKeyCommand::MAX)] = {
Expand Down
6 changes: 5 additions & 1 deletion src/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ enum class RenderFilter : int
struct DragAndDropConfiguration
{
bool enabled = true;
uint modifiers = miracle_input_event_modifier_default;
uint modifiers = miracle_input_event_modifier_default | mir_input_event_modifier_shift;
};

class Config
Expand All @@ -184,6 +184,7 @@ class Config
[[nodiscard]] virtual WorkspaceConfig get_workspace_config(std::optional<int> const& num, std::optional<std::string> const& name) const = 0;
[[nodiscard]] virtual LayoutScheme get_default_layout_scheme() const = 0;
[[nodiscard]] virtual DragAndDropConfiguration drag_and_drop() const = 0;
[[nodiscard]] virtual uint move_modifier() const = 0;

virtual int register_listener(std::function<void(miracle::Config&)> const&) = 0;
/// Register a listener on configuration change. A lower "priority" number signifies that the
Expand Down Expand Up @@ -224,6 +225,7 @@ class FilesystemConfiguration : public Config
[[nodiscard]] WorkspaceConfig get_workspace_config(std::optional<int> const& num, std::optional<std::string> const& name) const override;
[[nodiscard]] LayoutScheme get_default_layout_scheme() const override;
[[nodiscard]] DragAndDropConfiguration drag_and_drop() const override;
[[nodiscard]] uint move_modifier() const override;
int register_listener(std::function<void(miracle::Config&)> const&) override;
int register_listener(std::function<void(miracle::Config&)> const&, int priority) override;
void unregister_listener(int handle) override;
Expand All @@ -249,6 +251,7 @@ class FilesystemConfiguration : public Config
bool animations_enabled = true;
std::array<AnimationDefinition, static_cast<int>(AnimateableEvent::max)> animation_definitions;
std::vector<WorkspaceConfig> workspace_configs;
uint move_modifier = miracle_input_event_modifier_default;
DragAndDropConfiguration drag_and_drop;
};

Expand All @@ -275,6 +278,7 @@ class FilesystemConfiguration : public Config
void read_workspaces(YAML::Node const&);
void read_animation_definitions(YAML::Node const&);
void read_enable_animations(YAML::Node const&);
void read_move_modifier(YAML::Node const&);
void read_drag_and_drop(YAML::Node const&);

static std::optional<uint> try_parse_modifier(std::string const& stringified_action_key);
Expand Down
6 changes: 0 additions & 6 deletions src/container.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.

#include "container.h"
#include "container_group_container.h"
#include "floating_window_container.h"
#include "layout_scheme.h"
#include "leaf_container.h"
#include "output.h"
Expand Down Expand Up @@ -78,11 +77,6 @@ std::shared_ptr<ParentContainer> Container::as_parent(std::shared_ptr<Container>
return std::dynamic_pointer_cast<ParentContainer>(container);
}

std::shared_ptr<FloatingWindowContainer> Container::as_floating(std::shared_ptr<Container> const& container)
{
return std::dynamic_pointer_cast<FloatingWindowContainer>(container);
}

std::shared_ptr<ContainerGroupContainer> Container::as_group(std::shared_ptr<Container> const& container)
{
return std::dynamic_pointer_cast<ContainerGroupContainer>(container);
Expand Down
Loading

0 comments on commit b1f2c7c

Please sign in to comment.