Skip to content

Commit

Permalink
PixelPaint: Disable Crop to Selection if empty
Browse files Browse the repository at this point in the history
This PR resolves 2 FIXMEs.
  • Loading branch information
alec3660 authored and tcl3 committed Jul 7, 2024
1 parent 8adcbd7 commit 648b36f
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 6 deletions.
20 changes: 14 additions & 6 deletions Userland/Applications/PixelPaint/MainWidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -677,11 +677,10 @@ ErrorOr<void> MainWidget::initialize_menubar(GUI::Window& window)
editor->did_complete_action("Resize Image"sv);
}
}));
m_image_menu->add_action(GUI::Action::create(
m_crop_image_to_selection_action = GUI::Action::create(
"&Crop Image to Selection", g_icon_bag.crop, [&](auto&) {
auto* editor = current_image_editor();
VERIFY(editor);
// FIXME: disable this action if there is no selection
if (editor->image().selection().is_empty())
return;
auto crop_rect = editor->image().rect().intersected(editor->image().selection().bounding_rect());
Expand All @@ -696,7 +695,8 @@ ErrorOr<void> MainWidget::initialize_menubar(GUI::Window& window)
}
editor->image().selection().clear();
editor->did_complete_action("Crop Image to Selection"sv);
}));
});
m_image_menu->add_action(*m_crop_image_to_selection_action);

m_image_menu->add_action(GUI::Action::create(
"&Crop Image to Content", g_icon_bag.crop, [&](auto&) {
Expand Down Expand Up @@ -1104,11 +1104,10 @@ ErrorOr<void> MainWidget::initialize_menubar(GUI::Window& window)
}));

m_layer_menu->add_separator();
m_layer_menu->add_action(GUI::Action::create(
m_crop_layer_to_selection_action = GUI::Action::create(
"&Crop Layer to Selection", g_icon_bag.crop, [&](auto&) {
auto* editor = current_image_editor();
VERIFY(editor);
// FIXME: disable this action if there is no selection
auto active_layer = editor->active_layer();
if (!active_layer || editor->image().selection().is_empty())
return;
Expand All @@ -1122,7 +1121,8 @@ ErrorOr<void> MainWidget::initialize_menubar(GUI::Window& window)
active_layer->set_location(intersection.location());
editor->image().selection().clear();
editor->did_complete_action("Crop Layer to Selection"sv);
}));
});
m_layer_menu->add_action(*m_crop_layer_to_selection_action);
m_layer_menu->add_action(GUI::Action::create(
"&Crop Layer to Content", g_icon_bag.crop, [&](auto&) {
auto* editor = current_image_editor();
Expand Down Expand Up @@ -1347,6 +1347,13 @@ ErrorOr<void> MainWidget::create_image_from_clipboard()
return {};
}

void MainWidget::refresh_crop_to_selection_menu_actions()
{
auto enabled = current_image_editor() && !current_image_editor()->image().selection().is_empty();
m_crop_image_to_selection_action->set_enabled(enabled);
m_crop_layer_to_selection_action->set_enabled(enabled);
}

bool MainWidget::request_close()
{
while (!m_tab_widget->children().is_empty()) {
Expand Down Expand Up @@ -1511,6 +1518,7 @@ void MainWidget::drop_event(GUI::DropEvent& event)

void MainWidget::update_window_modified()
{
refresh_crop_to_selection_menu_actions();
window()->set_modified(m_tab_widget->is_any_tab_modified());
}
void MainWidget::update_status_bar(ByteString appended_text)
Expand Down
3 changes: 3 additions & 0 deletions Userland/Applications/PixelPaint/MainWidget.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ class MainWidget : public GUI::Widget {
void open_image(FileSystemAccessClient::File);
ErrorOr<void> create_default_image();

void refresh_crop_to_selection_menu_actions();
bool request_close();

private:
Expand Down Expand Up @@ -120,6 +121,8 @@ class MainWidget : public GUI::Widget {
RefPtr<GUI::Action> m_toggle_mask_visibility_action;
RefPtr<GUI::Action> m_open_luminosity_masking_action;
RefPtr<GUI::Action> m_open_color_masking_action;
RefPtr<GUI::Action> m_crop_image_to_selection_action;
RefPtr<GUI::Action> m_crop_layer_to_selection_action;

Gfx::IntPoint m_last_image_editor_mouse_position;
};
Expand Down

0 comments on commit 648b36f

Please sign in to comment.