Skip to content

Commit c63bb86

Browse files
committed
fix(fix-orientation): apply manual trim with Apply to… (#129)
Apply to… only copied rotation; propagate ImageTrim from the panel to the selected pages (or clear trim when disabled), mirroring applyRotation. Add Settings::applyTrim and currentTrimFromControls().
1 parent 78291a0 commit c63bb86

4 files changed

Lines changed: 33 additions & 3 deletions

File tree

src/core/filters/fix_orientation/OptionsWidget.cpp

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ void OptionsWidget::appliedTo(const std::set<PageId>& pages) {
8383
}
8484

8585
m_settings->applyRotation(pages, m_rotation);
86+
m_settings->applyTrim(pages, currentTrimFromControls());
8687

8788
if (pages.size() > 1) {
8889
emit invalidateAllThumbnails();
@@ -95,6 +96,7 @@ void OptionsWidget::appliedTo(const std::set<PageId>& pages) {
9596

9697
void OptionsWidget::appliedToAllPages(const std::set<PageId>& pages) {
9798
m_settings->applyRotation(pages, m_rotation);
99+
m_settings->applyTrim(pages, currentTrimFromControls());
98100
emit invalidateAllThumbnails();
99101
}
100102

@@ -172,14 +174,25 @@ void OptionsWidget::pullTrimToControls() {
172174
}
173175

174176
void OptionsWidget::pushTrimFromControls() {
177+
const ImageTrim trim(currentTrimFromControls());
178+
if (!trim.enabled) {
179+
return;
180+
}
181+
m_settings->setTrim(m_pageId.imageId(), trim);
182+
emit invalidateThumbnail(m_pageId);
183+
}
184+
185+
ImageTrim OptionsWidget::currentTrimFromControls() const {
175186
ImageTrim trim;
176-
trim.enabled = true;
187+
trim.enabled = trimEnabledCheck->isChecked();
188+
if (!trim.enabled) {
189+
return trim;
190+
}
177191
trim.left = trimLeftSpin->value();
178192
trim.right = trimRightSpin->value();
179193
trim.top = trimTopSpin->value();
180194
trim.bottom = trimBottomSpin->value();
181-
m_settings->setTrim(m_pageId.imageId(), trim);
182-
emit invalidateThumbnail(m_pageId);
195+
return trim;
183196
}
184197

185198
void OptionsWidget::setRotationPixmap() {

src/core/filters/fix_orientation/OptionsWidget.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ class OptionsWidget : public FilterOptionsWidget, private Ui::OptionsWidget {
6969

7070
void pushTrimFromControls();
7171

72+
ImageTrim currentTrimFromControls() const;
73+
7274
std::shared_ptr<Settings> m_settings;
7375
PageSelectionAccessor m_pageSelectionAccessor;
7476
PageId m_pageId;

src/core/filters/fix_orientation/Settings.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,19 @@ void Settings::applyRotation(const std::set<PageId>& pages, const OrthogonalRota
5656
}
5757
}
5858

59+
void Settings::applyTrim(const std::set<PageId>& pages, const ImageTrim& trim) {
60+
QMutexLocker locker(&m_mutex);
61+
62+
for (const PageId& page : pages) {
63+
const ImageId imageId(page.imageId());
64+
if (!trim.enabled) {
65+
m_perImageTrim.erase(imageId);
66+
} else {
67+
Utils::mapSetValue(m_perImageTrim, imageId, trim);
68+
}
69+
}
70+
}
71+
5972
OrthogonalRotation Settings::getRotationFor(const ImageId& imageId) const {
6073
QMutexLocker locker(&m_mutex);
6174

src/core/filters/fix_orientation/Settings.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ class Settings {
3333

3434
void applyRotation(const std::set<PageId>& pages, OrthogonalRotation rotation);
3535

36+
void applyTrim(const std::set<PageId>& pages, const ImageTrim& trim);
37+
3638
OrthogonalRotation getRotationFor(const ImageId& imageId) const;
3739

3840
bool isRotationNull(const ImageId& imageId) const;

0 commit comments

Comments
 (0)