View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0017284 | Scribus | Canvas | public | 2024-10-06 11:35 | 2024-10-23 18:42 |
| Reporter | nitramr | Assigned To | nitramr | ||
| Priority | normal | Severity | feature | Reproducibility | N/A |
| Status | closed | Resolution | fixed | ||
| Platform | Desktop PC | OS | Ubuntu | OS Version | 24.04 64-bit |
| Fixed in Version | 1.7.0.svn | ||||
| Summary | 0017284: Implement white space review view mode | ||||
| Description | I would like a review mode to make the white space between words more visible. This can help to find white spaces that are too large more quickly. I could imagine that this is a new view mode that resizes all text frames equally. The image below shows what this view mode could look like. I manually simulated it in Scribus by setting a black background color for all words. The view mode could simply render the glyph box instead of the glyphs. It should be possible to continue editing the contents of a text frame. | ||||
| Tags | No tags attached. | ||||
| Attached Files | |||||
| Patch | No | ||||
|
|
needs a shortcut to switch it on and off, as you can't really edit the text (i.e. hyphenation) in this 'black box view'. but with the shortcut i would use it. |
|
|
well, if it gets a good name, it's not that hard to trigger it with the action search. ... and it's not that hard to add a shortcut either : - ) |
|
|
Patch is ready for testing. I didn't specify a shortcut yet. But if you prefer one, you can define it by yourself in Scribus preferences: "Keyboard Shortcuts -> View -> Toggle White Space Review Mode". And there is a new button in preview toolbar (the icon is just a placeholder) At the moment there is a render issue for Japanese glyphs and I don't know what is the reason for it. whitespace_2024-10-07_01.patch (10,050 bytes)
Index: scribus/actionmanager.cpp
===================================================================
--- scribus/actionmanager.cpp (Revision 26313)
+++ scribus/actionmanager.cpp (Arbeitskopie)
@@ -679,6 +679,8 @@
scrActions->insert(name, new ScrAction("16/editdoc.png", "16/editdoc.png", "", defaultKey(name), mainWindow));
name = "viewToggleCMS";
scrActions->insert(name, new ScrAction("cmsOn.png", "cmsOn.png", "", defaultKey(name), mainWindow));
+ name = "viewToggleWhiteSpaceMode";
+ scrActions->insert(name, new ScrAction("16/format-justify-left.png", "16/format-justify-left.png", "", defaultKey(name), mainWindow));
name = "viewShowMargins";
scrActions->insert(name, new ScrAction("", defaultKey(name), mainWindow));
name = "viewShowBleeds";
@@ -729,6 +731,7 @@
(*scrActions)["viewPreviewMode"]->setToggleAction(true);
(*scrActions)["viewEditInPreview"]->setToggleAction(true);
(*scrActions)["viewToggleCMS"]->setToggleAction(true);
+ (*scrActions)["viewToggleWhiteSpaceMode"]->setToggleAction(true);
(*scrActions)["viewShowMargins"]->setToggleAction(true);
(*scrActions)["viewShowBleeds"]->setToggleAction(true);
(*scrActions)["viewShowFrames"]->setToggleAction(true);
@@ -749,6 +752,7 @@
(*scrActions)["viewPreviewMode"]->setChecked(false);
(*scrActions)["viewEditInPreview"]->setChecked(false);
+ (*scrActions)["viewToggleWhiteSpaceMode"]->setChecked(false);
(*scrActions)["viewToggleCMS"]->setChecked(false);
(*scrActions)["viewShowMargins"]->setChecked(true);
(*scrActions)["viewShowBleeds"]->setChecked(true);
@@ -1305,6 +1309,7 @@
//qDebug()<<"disconnectNewViewActions"<<mainWindow->doc->DocName;
(*scrActions)["viewPreviewMode"]->disconnect();
(*scrActions)["viewEditInPreview"]->disconnect();
+ (*scrActions)["viewToggleWhiteSpaceMode"]->disconnect();
(*scrActions)["viewToggleCMS"]->disconnect();
(*scrActions)["toolsZoomIn"]->disconnect();
(*scrActions)["toolsZoomOut"]->disconnect();
@@ -1329,6 +1334,7 @@
//qDebug()<<"connectNewViewActions"<<currView->Doc->DocName;
connect( (*scrActions)["viewPreviewMode"], SIGNAL(toggled(bool)), currView, SLOT(togglePreview(bool)) );
connect( (*scrActions)["viewEditInPreview"], SIGNAL(toggled(bool)), currView, SLOT(togglePreviewEdit(bool)) );
+ connect( (*scrActions)["viewToggleWhiteSpaceMode"], SIGNAL(toggled(bool)), currView, SLOT(toggleWhiteSpaceMode(bool)) );
connect( (*scrActions)["viewToggleCMS"], SIGNAL(toggled(bool)), currView, SLOT(toggleCMS(bool)));
connect( (*scrActions)["toolsZoomIn"], SIGNAL(triggered()) , currView, SLOT(slotZoomIn()) );
connect( (*scrActions)["toolsZoomOut"], SIGNAL(triggered()) , currView, SLOT(slotZoomOut()) );
@@ -1666,6 +1672,7 @@
(*scrActions)["viewFit400"]->setTexts( tr("&400%"));
(*scrActions)["viewPreviewMode"]->setTexts( tr("Preview Mode"));
(*scrActions)["viewEditInPreview"]->setTexts( tr("Edit in Preview Mode") );
+ (*scrActions)["viewToggleWhiteSpaceMode"]->setTexts( tr("Toggle White Space Review Mode") );
(*scrActions)["viewToggleCMS"]->setTexts( tr("Toggle Color Management System"));
(*scrActions)["viewShowMargins"]->setTexts( tr("Show &Margins"));
(*scrActions)["viewShowBleeds"]->setTexts( tr("Show Bleeds"));
@@ -1822,6 +1829,7 @@
(*scrActions)["toolsZoom"]->setStatusTextAndShortcut( tr("Zoom in or out"));
(*scrActions)["viewPreviewMode"]->setStatusTextAndShortcut( tr("Enable preview mode"));
(*scrActions)["viewEditInPreview"]->setStatusTextAndShortcut( tr("Enable editing in preview mode"));
+ (*scrActions)["viewToggleWhiteSpaceMode"]->setStatusTextAndShortcut( tr("Toggle white space review mode"));
(*scrActions)["viewToggleCMS"]->setStatusTextAndShortcut( tr("Toggle color management system"));
#ifdef HAVE_OSG
(*scrActions)["toolsPDFAnnot3D"]->setStatusTextAndShortcut( tr("Insert 3D annotation"));
@@ -2327,6 +2335,7 @@
<< "viewPreviewMode"
<< "viewEditInPreview"
<< "viewToggleCMS"
+ << "viewToggleWhiteSpaceMode"
<< "viewShowMargins"
<< "viewShowBleeds"
<< "viewShowFrames"
Index: scribus/scribus.cpp
===================================================================
--- scribus/scribus.cpp (Revision 26313)
+++ scribus/scribus.cpp (Arbeitskopie)
@@ -1241,6 +1241,7 @@
scrMenuMgr->createMenu("ViewPreview", tr("Preview"), "View");
scrMenuMgr->addMenuItemString("ViewPreview", "View");
scrMenuMgr->addMenuItemString("viewPreviewMode", "ViewPreview");
+ scrMenuMgr->addMenuItemString("viewToggleWhiteSpaceMode", "ViewPreview");
scrMenuMgr->createMenu("ViewMeasuring", tr("Measurement"), "View");
scrMenuMgr->addMenuItemString("ViewMeasuring", "View");
scrMenuMgr->addMenuItemString("viewShowRulers", "ViewMeasuring");
@@ -2458,6 +2459,9 @@
scrActions["viewToggleCMS"]->blockSignals(true);
scrActions["viewToggleCMS"]->setChecked(doc->HasCMS);
scrActions["viewToggleCMS"]->blockSignals(false);
+ scrActions["viewToggleWhiteSpaceMode"]->blockSignals(true);
+ scrActions["viewToggleWhiteSpaceMode"]->setChecked(doc->toggleWhiteSpaceMode);
+ scrActions["viewToggleWhiteSpaceMode"]->blockSignals(false);
viewToolBar->previewQualitySwitcher->setCurrentIndex(doc->previewQuality());
connect(viewToolBar->previewQualitySwitcher, SIGNAL(activated(int)), this, SLOT(changePreviewQuality(int)));
viewToolBar->visualMenu->setCurrentIndex(doc->previewVisual);
@@ -3704,6 +3708,7 @@
emit UpdateRequest(reqNumUpdate);
doc->setCurrentPage(doc->DocPages.at(0));
scrActions["viewToggleCMS"]->setChecked(doc->HasCMS);
+ scrActions["viewToggleWhiteSpaceMode"]->setChecked(doc->toggleWhiteSpaceMode);
view->zoom();
view->GotoPage(0);
connect(mdiArea, SIGNAL(subWindowActivated(QMdiSubWindow*)), this, SLOT(newActWin(QMdiSubWindow*)));
@@ -4251,6 +4256,7 @@
mainWindowYPosDataLabel->clear();
//not running view's togglePreview as we don't want to affect the doc settings.
scrActions["viewPreviewMode"]->setChecked(false);
+ scrActions["viewToggleWhiteSpaceMode"]->setChecked(false);
appModeHelper->setPreviewMode(false);
return true;
}
@@ -6646,6 +6652,7 @@
scrActions["extrasGenerateTableOfContents"]->setEnabled(doc->hasTOCSetup());
scrActions["extrasUpdateDocument"]->setEnabled(true);
scrActions["viewToggleCMS"]->setChecked(doc->HasCMS);
+ scrActions["viewToggleWhiteSpaceMode"]->setChecked(doc->toggleWhiteSpaceMode);
view->setRulersShown(doc->guidesPrefs().rulersShown);
//doc emits changed() via this
doc->setMasterPageMode(true);
@@ -7589,6 +7596,11 @@
view->togglePreview(false);
scrActions["viewPreviewMode"]->setChecked(false);
}
+ if (doc->toggleWhiteSpaceMode)
+ {
+ view->toggleWhiteSpaceMode(false);
+ scrActions["viewToggleWhiteSpaceMode"]->setChecked(false);
+ }
m_WasAutoSave = doc->autoSave();
if (m_WasAutoSave)
{
Index: scribus/scribusdoc.h
===================================================================
--- scribus/scribusdoc.h (Revision 26313)
+++ scribus/scribusdoc.h (Arbeitskopie)
@@ -1461,7 +1461,8 @@
QWidget* WinHan {nullptr};
bool DoDrawing {true};
bool drawAsPreview {false};
- bool viewAsPreview {false};
+ bool viewAsPreview {false};
+ bool toggleWhiteSpaceMode {false};
bool editOnPreview {false};
int previewVisual {0};
struct OpenNodesList
Index: scribus/scribusview.cpp
===================================================================
--- scribus/scribusview.cpp (Revision 26313)
+++ scribus/scribusview.cpp (Arbeitskopie)
@@ -272,6 +272,12 @@
DrawNew();
}
+void ScribusView::toggleWhiteSpaceMode(bool inReview)
+{
+ m_doc->toggleWhiteSpaceMode = inReview;
+ DrawNew();
+}
+
void ScribusView::togglePreview(bool inPreview)
{
this->requestMode(modeNormal);
Index: scribus/scribusview.h
===================================================================
--- scribus/scribusview.h (Revision 26313)
+++ scribus/scribusview.h (Arbeitskopie)
@@ -252,6 +252,7 @@
void toggleCMS(bool cmsOn);
void switchPreviewVisual(int vis);
void togglePreviewEdit(bool edit);
+ void toggleWhiteSpaceMode(bool inReview);
void togglePreview(bool inPreview);
void unitChange();
void setRulersShown(bool isShown);
Index: scribus/text/boxes.cpp
===================================================================
--- scribus/text/boxes.cpp (Revision 26313)
+++ scribus/text/boxes.cpp (Arbeitskopie)
@@ -598,6 +598,19 @@
p->setFont(font);
p->setFontSize(fontSize);
+ if (p->glyphBoxRendering())
+ {
+ if (!this->m_glyphRun.isSpace())
+ {
+ p->setFillColor(TextLayoutColor("Black", 100.0));
+ p->setStrokeColor(TextLayoutColor(CommonStrings::None, 0));
+ QRectF rect(x(), -ascent(), width(), height());
+ p->drawRect(rect);
+ }
+ p->restore();
+ return;
+ }
+
p->translate(x() + m_glyphRun.xoffset, y() + m_glyphRun.yoffset);
p->setMatrix(m_matrix);
Index: scribus/text/textlayoutpainter.cpp
===================================================================
--- scribus/text/textlayoutpainter.cpp (Revision 26313)
+++ scribus/text/textlayoutpainter.cpp (Arbeitskopie)
@@ -66,6 +66,16 @@
return m_stack.top().strokeWidth;
}
+void TextLayoutPainter::setGlyphBoxRendering(bool r)
+{
+ m_glyphBoxRendering = r;
+}
+
+bool TextLayoutPainter::glyphBoxRendering()
+{
+ return m_glyphBoxRendering;
+}
+
void TextLayoutPainter::translate(double x, double y)
{
m_stack.top().x += x;
Index: scribus/text/textlayoutpainter.h
===================================================================
--- scribus/text/textlayoutpainter.h (Revision 26313)
+++ scribus/text/textlayoutpainter.h (Arbeitskopie)
@@ -81,6 +81,11 @@
/// The current width for line strokes.
virtual double strokeWidth() const;
+ /// Sets the current render mode for glyph boxes only.
+ virtual void setGlyphBoxRendering(bool r);
+ /// The current render mode for glyph boxes only.
+ virtual bool glyphBoxRendering();
+
/// Moves the current x and y positions by the specified amount.
virtual void translate(double x, double y);
/// The current x positions.
@@ -159,6 +164,7 @@
};
std::stack<State> m_stack;
+ bool m_glyphBoxRendering {false};
};
#endif // TEXTLAYOUTPAINTER_H
|
|
|
as i don't compile my own versions, i can't test it before it is applied and craig b. ships a new version for mac os. but i will do it as soon possible… |
|
|
I could fix the issue for Japanese characters. Looks like they count as space. I add a second condition and now it works. In addition, I made a new icon and added some missing code in the new patch file. |
|
|
whitespace_2024-10-08_02.patch (12,228 bytes)
Index: resources/iconsets/1_7_0/1_7_0.xml
===================================================================
--- resources/iconsets/1_7_0/1_7_0.xml (Revision 26313)
+++ resources/iconsets/1_7_0/1_7_0.xml (Arbeitskopie)
@@ -150,6 +150,7 @@
<icon id="context-menu" file="16/action-menu.svg" />
<icon id="scale-width" file="16/action-scale-width.svg" />
<icon id="scale-height" file="16/action-scale-height.svg" />
+ <icon id="whitespace-review-mode" file="16/action-whitespace-review.svg" />
<!-- Alerts -->
<icon onLight="#E54545" onDark="#FF6666" id="22/dialog-error.png" file="16/alert-error.svg" />
Index: scribus/actionmanager.cpp
===================================================================
--- scribus/actionmanager.cpp (Revision 26313)
+++ scribus/actionmanager.cpp (Arbeitskopie)
@@ -679,6 +679,8 @@
scrActions->insert(name, new ScrAction("16/editdoc.png", "16/editdoc.png", "", defaultKey(name), mainWindow));
name = "viewToggleCMS";
scrActions->insert(name, new ScrAction("cmsOn.png", "cmsOn.png", "", defaultKey(name), mainWindow));
+ name = "viewToggleWhiteSpaceMode";
+ scrActions->insert(name, new ScrAction("whitespace-review-mode", "whitespace-review-mode", "", defaultKey(name), mainWindow));
name = "viewShowMargins";
scrActions->insert(name, new ScrAction("", defaultKey(name), mainWindow));
name = "viewShowBleeds";
@@ -729,6 +731,7 @@
(*scrActions)["viewPreviewMode"]->setToggleAction(true);
(*scrActions)["viewEditInPreview"]->setToggleAction(true);
(*scrActions)["viewToggleCMS"]->setToggleAction(true);
+ (*scrActions)["viewToggleWhiteSpaceMode"]->setToggleAction(true);
(*scrActions)["viewShowMargins"]->setToggleAction(true);
(*scrActions)["viewShowBleeds"]->setToggleAction(true);
(*scrActions)["viewShowFrames"]->setToggleAction(true);
@@ -749,6 +752,7 @@
(*scrActions)["viewPreviewMode"]->setChecked(false);
(*scrActions)["viewEditInPreview"]->setChecked(false);
+ (*scrActions)["viewToggleWhiteSpaceMode"]->setChecked(false);
(*scrActions)["viewToggleCMS"]->setChecked(false);
(*scrActions)["viewShowMargins"]->setChecked(true);
(*scrActions)["viewShowBleeds"]->setChecked(true);
@@ -1305,6 +1309,7 @@
//qDebug()<<"disconnectNewViewActions"<<mainWindow->doc->DocName;
(*scrActions)["viewPreviewMode"]->disconnect();
(*scrActions)["viewEditInPreview"]->disconnect();
+ (*scrActions)["viewToggleWhiteSpaceMode"]->disconnect();
(*scrActions)["viewToggleCMS"]->disconnect();
(*scrActions)["toolsZoomIn"]->disconnect();
(*scrActions)["toolsZoomOut"]->disconnect();
@@ -1329,6 +1334,7 @@
//qDebug()<<"connectNewViewActions"<<currView->Doc->DocName;
connect( (*scrActions)["viewPreviewMode"], SIGNAL(toggled(bool)), currView, SLOT(togglePreview(bool)) );
connect( (*scrActions)["viewEditInPreview"], SIGNAL(toggled(bool)), currView, SLOT(togglePreviewEdit(bool)) );
+ connect( (*scrActions)["viewToggleWhiteSpaceMode"], SIGNAL(toggled(bool)), currView, SLOT(toggleWhiteSpaceMode(bool)) );
connect( (*scrActions)["viewToggleCMS"], SIGNAL(toggled(bool)), currView, SLOT(toggleCMS(bool)));
connect( (*scrActions)["toolsZoomIn"], SIGNAL(triggered()) , currView, SLOT(slotZoomIn()) );
connect( (*scrActions)["toolsZoomOut"], SIGNAL(triggered()) , currView, SLOT(slotZoomOut()) );
@@ -1666,6 +1672,7 @@
(*scrActions)["viewFit400"]->setTexts( tr("&400%"));
(*scrActions)["viewPreviewMode"]->setTexts( tr("Preview Mode"));
(*scrActions)["viewEditInPreview"]->setTexts( tr("Edit in Preview Mode") );
+ (*scrActions)["viewToggleWhiteSpaceMode"]->setTexts( tr("Toggle White Space Review Mode") );
(*scrActions)["viewToggleCMS"]->setTexts( tr("Toggle Color Management System"));
(*scrActions)["viewShowMargins"]->setTexts( tr("Show &Margins"));
(*scrActions)["viewShowBleeds"]->setTexts( tr("Show Bleeds"));
@@ -1822,6 +1829,7 @@
(*scrActions)["toolsZoom"]->setStatusTextAndShortcut( tr("Zoom in or out"));
(*scrActions)["viewPreviewMode"]->setStatusTextAndShortcut( tr("Enable preview mode"));
(*scrActions)["viewEditInPreview"]->setStatusTextAndShortcut( tr("Enable editing in preview mode"));
+ (*scrActions)["viewToggleWhiteSpaceMode"]->setStatusTextAndShortcut( tr("Toggle white space review mode"));
(*scrActions)["viewToggleCMS"]->setStatusTextAndShortcut( tr("Toggle color management system"));
#ifdef HAVE_OSG
(*scrActions)["toolsPDFAnnot3D"]->setStatusTextAndShortcut( tr("Insert 3D annotation"));
@@ -2327,6 +2335,7 @@
<< "viewPreviewMode"
<< "viewEditInPreview"
<< "viewToggleCMS"
+ << "viewToggleWhiteSpaceMode"
<< "viewShowMargins"
<< "viewShowBleeds"
<< "viewShowFrames"
Index: scribus/scribus.cpp
===================================================================
--- scribus/scribus.cpp (Revision 26313)
+++ scribus/scribus.cpp (Arbeitskopie)
@@ -1241,6 +1241,7 @@
scrMenuMgr->createMenu("ViewPreview", tr("Preview"), "View");
scrMenuMgr->addMenuItemString("ViewPreview", "View");
scrMenuMgr->addMenuItemString("viewPreviewMode", "ViewPreview");
+ scrMenuMgr->addMenuItemString("viewToggleWhiteSpaceMode", "ViewPreview");
scrMenuMgr->createMenu("ViewMeasuring", tr("Measurement"), "View");
scrMenuMgr->addMenuItemString("ViewMeasuring", "View");
scrMenuMgr->addMenuItemString("viewShowRulers", "ViewMeasuring");
@@ -2458,6 +2459,9 @@
scrActions["viewToggleCMS"]->blockSignals(true);
scrActions["viewToggleCMS"]->setChecked(doc->HasCMS);
scrActions["viewToggleCMS"]->blockSignals(false);
+ scrActions["viewToggleWhiteSpaceMode"]->blockSignals(true);
+ scrActions["viewToggleWhiteSpaceMode"]->setChecked(doc->toggleWhiteSpaceMode);
+ scrActions["viewToggleWhiteSpaceMode"]->blockSignals(false);
viewToolBar->previewQualitySwitcher->setCurrentIndex(doc->previewQuality());
connect(viewToolBar->previewQualitySwitcher, SIGNAL(activated(int)), this, SLOT(changePreviewQuality(int)));
viewToolBar->visualMenu->setCurrentIndex(doc->previewVisual);
@@ -3704,6 +3708,7 @@
emit UpdateRequest(reqNumUpdate);
doc->setCurrentPage(doc->DocPages.at(0));
scrActions["viewToggleCMS"]->setChecked(doc->HasCMS);
+ scrActions["viewToggleWhiteSpaceMode"]->setChecked(doc->toggleWhiteSpaceMode);
view->zoom();
view->GotoPage(0);
connect(mdiArea, SIGNAL(subWindowActivated(QMdiSubWindow*)), this, SLOT(newActWin(QMdiSubWindow*)));
@@ -4251,6 +4256,7 @@
mainWindowYPosDataLabel->clear();
//not running view's togglePreview as we don't want to affect the doc settings.
scrActions["viewPreviewMode"]->setChecked(false);
+ scrActions["viewToggleWhiteSpaceMode"]->setChecked(false);
appModeHelper->setPreviewMode(false);
return true;
}
@@ -6646,6 +6652,7 @@
scrActions["extrasGenerateTableOfContents"]->setEnabled(doc->hasTOCSetup());
scrActions["extrasUpdateDocument"]->setEnabled(true);
scrActions["viewToggleCMS"]->setChecked(doc->HasCMS);
+ scrActions["viewToggleWhiteSpaceMode"]->setChecked(doc->toggleWhiteSpaceMode);
view->setRulersShown(doc->guidesPrefs().rulersShown);
//doc emits changed() via this
doc->setMasterPageMode(true);
@@ -7589,6 +7596,11 @@
view->togglePreview(false);
scrActions["viewPreviewMode"]->setChecked(false);
}
+ if (doc->toggleWhiteSpaceMode)
+ {
+ view->toggleWhiteSpaceMode(false);
+ scrActions["viewToggleWhiteSpaceMode"]->setChecked(false);
+ }
m_WasAutoSave = doc->autoSave();
if (m_WasAutoSave)
{
Index: scribus/scribusdoc.h
===================================================================
--- scribus/scribusdoc.h (Revision 26313)
+++ scribus/scribusdoc.h (Arbeitskopie)
@@ -1461,7 +1461,8 @@
QWidget* WinHan {nullptr};
bool DoDrawing {true};
bool drawAsPreview {false};
- bool viewAsPreview {false};
+ bool viewAsPreview {false};
+ bool toggleWhiteSpaceMode {false};
bool editOnPreview {false};
int previewVisual {0};
struct OpenNodesList
Index: scribus/scribusview.cpp
===================================================================
--- scribus/scribusview.cpp (Revision 26313)
+++ scribus/scribusview.cpp (Arbeitskopie)
@@ -272,6 +272,12 @@
DrawNew();
}
+void ScribusView::toggleWhiteSpaceMode(bool inReview)
+{
+ m_doc->toggleWhiteSpaceMode = inReview;
+ DrawNew();
+}
+
void ScribusView::togglePreview(bool inPreview)
{
this->requestMode(modeNormal);
Index: scribus/scribusview.h
===================================================================
--- scribus/scribusview.h (Revision 26313)
+++ scribus/scribusview.h (Arbeitskopie)
@@ -252,6 +252,7 @@
void toggleCMS(bool cmsOn);
void switchPreviewVisual(int vis);
void togglePreviewEdit(bool edit);
+ void toggleWhiteSpaceMode(bool inReview);
void togglePreview(bool inPreview);
void unitChange();
void setRulersShown(bool isShown);
Index: scribus/text/boxes.cpp
===================================================================
--- scribus/text/boxes.cpp (Revision 26313)
+++ scribus/text/boxes.cpp (Arbeitskopie)
@@ -209,7 +209,8 @@
{
p->translate(x(), y());
- drawBackGround(p);
+ if (!p->glyphBoxRendering())
+ drawBackGround(p);
p->translate(0, ascent());
for (const Box *box : boxes())
@@ -224,7 +225,8 @@
{
p->translate(x(), y());
- drawBackGround(p);
+ if (!p->glyphBoxRendering())
+ drawBackGround(p);
drawSelection(p, ctx);
p->translate(0, ascent());
@@ -598,6 +600,20 @@
p->setFont(font);
p->setFontSize(fontSize);
+ if (p->glyphBoxRendering())
+ {
+ if (this->m_glyphRun.getText() != " " || !this->m_glyphRun.isSpace())
+ {
+ p->setFillColor(TextLayoutColor("Black", 100.0));
+ p->setStrokeColor(TextLayoutColor(CommonStrings::None, 0));
+ QRectF rect(x(), -ascent(), width(), height());
+ p->drawRect(rect);
+ }
+ p->restore();
+ return;
+ }
+
p->translate(x() + m_glyphRun.xoffset, y() + m_glyphRun.yoffset);
p->setMatrix(m_matrix);
Index: scribus/text/textlayoutpainter.cpp
===================================================================
--- scribus/text/textlayoutpainter.cpp (Revision 26313)
+++ scribus/text/textlayoutpainter.cpp (Arbeitskopie)
@@ -66,6 +66,16 @@
return m_stack.top().strokeWidth;
}
+void TextLayoutPainter::setGlyphBoxRendering(bool r)
+{
+ m_glyphBoxRendering = r;
+}
+
+bool TextLayoutPainter::glyphBoxRendering()
+{
+ return m_glyphBoxRendering;
+}
+
void TextLayoutPainter::translate(double x, double y)
{
m_stack.top().x += x;
Index: scribus/pageitem_textframe.cpp
===================================================================
--- scribus/pageitem_textframe.cpp (Revision 26313)
+++ scribus/pageitem_textframe.cpp (Arbeitskopie)
@@ -3549,8 +3549,10 @@
int sm = p->strokeMode();
p->setFillMode(ScPainter::Solid);
p->setStrokeMode(ScPainter::Solid);
- ScreenPainter painter(p, this);
- textLayout.renderBackground(&painter);
+ ScreenPainter painter(p, this);
+ painter.setGlyphBoxRendering(m_Doc->toggleWhiteSpaceMode);
+ if (!m_Doc->toggleWhiteSpaceMode)
+ textLayout.renderBackground(&painter);
textLayout.render(&painter, this);
p->setFillMode(fm);
p->setStrokeMode(sm);
Index: scribus/text/textlayoutpainter.h
===================================================================
--- scribus/text/textlayoutpainter.h (Revision 26313)
+++ scribus/text/textlayoutpainter.h (Arbeitskopie)
@@ -81,6 +81,11 @@
/// The current width for line strokes.
virtual double strokeWidth() const;
+ /// Sets the current render mode for glyph boxes only.
+ virtual void setGlyphBoxRendering(bool r);
+ /// The current render mode for glyph boxes only.
+ virtual bool glyphBoxRendering();
+
/// Moves the current x and y positions by the specified amount.
virtual void translate(double x, double y);
/// The current x positions.
@@ -159,6 +164,7 @@
};
std::stack<State> m_stack;
+ bool m_glyphBoxRendering {false};
};
#endif // TEXTLAYOUTPAINTER_H
Index: scribus/ui/viewtoolbar.cpp
===================================================================
--- scribus/ui/viewtoolbar.cpp (Revision 26313)
+++ scribus/ui/viewtoolbar.cpp (Arbeitskopie)
@@ -52,6 +52,7 @@
addAction(parent->scrActions["viewToggleCMS"]);
addAction(parent->scrActions["viewPreviewMode"]);
addAction(parent->scrActions["viewEditInPreview"]);
+ addAction(parent->scrActions["viewToggleWhiteSpaceMode"]);
addWidget(visualMenu);
languageChange();
|
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2024-10-06 11:35 | nitramr | New Issue | |
| 2024-10-06 11:35 | nitramr | File Added: Bildschirmfoto vom 2024-10-06 13-23-38.png | |
| 2024-10-06 19:47 | utnik | Note Added: 0051413 | |
| 2024-10-07 18:19 | ale | Note Added: 0051414 | |
| 2024-10-07 22:03 | nitramr | Note Added: 0051417 | |
| 2024-10-07 22:03 | nitramr | File Added: whitespace_2024-10-07_01.patch | |
| 2024-10-07 22:22 | utnik | Note Added: 0051418 | |
| 2024-10-08 21:02 | nitramr | Note Added: 0051419 | |
| 2024-10-08 21:02 | nitramr | File Added: whitespace_2024-10-08_01.patch | |
| 2024-10-08 21:02 | nitramr | File Added: action-whitespace-review.svg | |
| 2024-10-08 21:11 | nitramr | Note Added: 0051420 | |
| 2024-10-08 21:11 | nitramr | File Added: whitespace_2024-10-08_02.patch | |
| 2024-10-08 21:11 | nitramr | File Deleted: whitespace_2024-10-08_01.patch | |
| 2024-10-16 19:37 | cbradney | Assigned To | => nitramr |
| 2024-10-16 19:37 | cbradney | Status | new => resolved |
| 2024-10-16 19:37 | cbradney | Resolution | open => fixed |
| 2024-10-16 19:37 | cbradney | Fixed in Version | => 1.7.0.svn |
| 2024-10-23 18:42 | cbradney | Status | resolved => closed |