View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0017113 | Scribus | Usability | public | 2024-01-09 18:38 | 2024-09-16 20:54 |
Reporter | pmjdebruijn | Assigned To | jghali | ||
Priority | normal | Severity | minor | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Product Version | 1.6.2.svn | ||||
Fixed in Version | 1.6.2.svn | ||||
Summary | 0017113: MarginWidget steps at 1" at a time, too coarse | ||||
Description | Current when creating a new document (when working in inches), stepping the margin/bleed values, happens at 1" per mouseclick, which is much too coarse. This seems to happen because the step is just set to 1 regardless of unitOfMeasure, there it may be 1" 1mm 1pt or whatever, and while it makes sense for millimeter it doesn't for inches. The attached patch, adds a utility function in units.cpp, which centralized this stepping factor per UnitOfMeasure, which is then applied in the NewDoc window. For Inches I've chosen a step size of 0.125" which is perfect for bleed, since this is almost the universally used bleed value for countries using Imperial measurements. And for margins it's a lot better than 1" as well, while still offering steps that align for full round inches. This patch is however only one part of the issue, currently the default margins are set to 40pts, which don't result in a round number for either inches or millimeters: prefsmanager.cpp: appPrefs.docSetupPrefs.margins.set(40, 40, 40, 40); scpage.cpp: Margins(40,40,40,40), scpage.cpp: initialMargins(40,40,40,40), So I'd suggest changing this at least to 54, so it aligns with 0.75"=54pt/72pt, which is evenly divisible by 0.125" (and almost aligns to 19(.05)mm), but more ideally the default should probably be dependent on the unit of measure, or maybe apply some rounding after converting to the local unitOfMeasure? But I wasn't quite sure how to approach this. Though I don't see this as a blocking issue to apply the current patches as they are, since they shouldn't negatively affect any usecase I can think of at least. Tangentially Related Sidenote: double unitGetRatioFromIndex(const int index) // shouldn't this have SCRIBUS_API set, see both ./scribus/units.cpp and ./scribus/units.h | ||||
Steps To Reproduce | File -> New Default Unit: Inches Margins Guides / Bleeds (either), Press the up/down buttons, and see the value change by full inches. | ||||
Tags | No tags attached. | ||||
Patch | Yes | ||||
|
newdoc-unitofmeasure.patch (3,300 bytes)
diff -Nurpd a/scribus/ui/marginwidget.cpp b/scribus/ui/marginwidget.cpp --- a/scribus/ui/marginwidget.cpp 2024-01-07 18:06:55.000000000 +0100 +++ b/scribus/ui/marginwidget.cpp 2024-01-09 18:34:00.141637796 +0100 @@ -143,6 +143,16 @@ MarginWidget::MarginWidget( QWidget* par addTab(bleedPage, tr("Bleeds")); } + topR->setSingleStep(unitGetSingleStepFromIndex(unitIndex)); + bottomR->setSingleStep(unitGetSingleStepFromIndex(unitIndex)); + leftR->setSingleStep(unitGetSingleStepFromIndex(unitIndex)); + rightR->setSingleStep(unitGetSingleStepFromIndex(unitIndex)); + + BleedLeft->setSingleStep(unitGetSingleStepFromIndex(unitIndex)); + BleedRight->setSingleStep(unitGetSingleStepFromIndex(unitIndex)); + BleedTop->setSingleStep(unitGetSingleStepFromIndex(unitIndex)); + BleedBottom->setSingleStep(unitGetSingleStepFromIndex(unitIndex)); + // hints topR->setToolTip( "<qt>" + tr( "Distance between the top margin guide and the edge of the page" ) + "</qt>"); bottomR->setToolTip( "<qt>" + tr( "Distance between the bottom margin guide and the edge of the page" ) + "</qt>"); @@ -354,6 +364,17 @@ void MarginWidget::setNewUnit(int newUni connect(BleedTop, SIGNAL(valueChanged(double)), this, SLOT(changeBleeds())); connect(BleedBottom, SIGNAL(valueChanged(double)), this, SLOT(changeBleeds())); } + + topR->setSingleStep(unitGetSingleStepFromIndex(newUnitIndex)); + bottomR->setSingleStep(unitGetSingleStepFromIndex(newUnitIndex)); + leftR->setSingleStep(unitGetSingleStepFromIndex(newUnitIndex)); + rightR->setSingleStep(unitGetSingleStepFromIndex(newUnitIndex)); + + BleedLeft->setSingleStep(unitGetSingleStepFromIndex(newUnitIndex)); + BleedRight->setSingleStep(unitGetSingleStepFromIndex(newUnitIndex)); + BleedTop->setSingleStep(unitGetSingleStepFromIndex(newUnitIndex)); + BleedBottom->setSingleStep(unitGetSingleStepFromIndex(newUnitIndex)); + connect(topR, SIGNAL(valueChanged(double)), this, SLOT(setTop())); connect(bottomR, SIGNAL(valueChanged(double)), this, SLOT(setBottom())); connect(leftR, SIGNAL(valueChanged(double)), this, SLOT(setLeft())); diff -Nurpd a/scribus/units.cpp b/scribus/units.cpp --- a/scribus/units.cpp 2024-01-07 18:07:07.000000000 +0100 +++ b/scribus/units.cpp 2024-01-09 18:30:58.088950628 +0100 @@ -28,6 +28,20 @@ for which a new license (GPL+exception) #include "units.h" /*! + * @brief Returns the SingleStep for the selected unit of measure. + */ +double SCRIBUS_API unitGetSingleStepFromIndex(const int index) +{ + switch (index) + { + case SC_IN: + return 0.125; + default: + return 1; + } +} + +/*! * @brief Returns the ratio to points for the selected unit of measure. Ratios are for: PT, MM, IN, P, CM, C. DEG and PCT return 1.0 as they will never convert */ double unitGetRatioFromIndex(const int index) diff -Nurpd a/scribus/units.h b/scribus/units.h --- a/scribus/units.h 2024-01-07 18:07:14.000000000 +0100 +++ b/scribus/units.h 2024-01-09 18:27:09.311993576 +0100 @@ -48,6 +48,7 @@ enum scUnit { SC_PCT = 7 }; +double SCRIBUS_API unitGetSingleStepFromIndex(const int index); double SCRIBUS_API unitGetRatioFromIndex(const int index); int SCRIBUS_API unitGetBaseFromIndex(const int index); QString SCRIBUS_API unitGetStrFromIndex(const int index); initialmargins-54.patch (1,260 bytes)
diff -Nurpd a/scribus/prefsmanager.cpp b/scribus/prefsmanager.cpp --- a/scribus/prefsmanager.cpp 2024-01-07 18:07:07.000000000 +0100 +++ b/scribus/prefsmanager.cpp 2024-01-09 19:02:26.136744976 +0100 @@ -313,7 +313,7 @@ void PrefsManager::initDefaults() PageSize defaultPageSize(appPrefs.docSetupPrefs.pageSize); appPrefs.docSetupPrefs.pageWidth = defaultPageSize.width(); appPrefs.docSetupPrefs.pageHeight = defaultPageSize.height(); - appPrefs.docSetupPrefs.margins.set(40, 40, 40, 40); + appPrefs.docSetupPrefs.margins.set(54, 54, 54, 54); appPrefs.docSetupPrefs.marginPreset = 0; appPrefs.docSetupPrefs.bleeds.set(0, 0, 0, 0); appPrefs.hyphPrefs.specialWords.clear(); diff -Nurpd a/scribus/scpage.cpp b/scribus/scpage.cpp --- a/scribus/scpage.cpp 2024-01-07 18:07:07.000000000 +0100 +++ b/scribus/scpage.cpp 2024-01-09 19:04:38.273406876 +0100 @@ -39,8 +39,8 @@ for which a new license (GPL+exception) ScPage::ScPage(const double x, const double y, const double b, const double h) : UndoObject(QObject::tr("Page")), SingleObservable<ScPage>(nullptr), - Margins(40,40,40,40), - initialMargins(40,40,40,40), + Margins(54, 54, 54, 54), + initialMargins(54, 54, 54, 54), undoManager(UndoManager::instance()), m_xOffset(x), m_yOffset(y), |
|
If you hold down shift while scrolling, you will get 0.1 increments instead of 1 |
|
Thanks for the hint, but though that doesn't really solve anything. Users shouldn't need to know some Qt related hotkey to get a useful Spinbox. Steps of 0.125" are preferable for inches over steps of 0.1", as this is how Imperial measuring tapes etc are marked as well. And then there's the practical point about bleed which is usually 0.125" in Imperial measurement using countries. So the point of these two patches, is to improve the default user experience. So I hope you'll considering applying them. Attached: Minor rework of the function in units.cpp newdoc-unitofmeasure-2.patch (3,251 bytes)
diff -Nurpd a/scribus/ui/marginwidget.cpp b/scribus/ui/marginwidget.cpp --- a/scribus/ui/marginwidget.cpp 2024-01-07 18:06:55.000000000 +0100 +++ b/scribus/ui/marginwidget.cpp 2024-01-09 18:34:00.141637796 +0100 @@ -143,6 +143,16 @@ MarginWidget::MarginWidget( QWidget* par addTab(bleedPage, tr("Bleeds")); } + topR->setSingleStep(unitGetSingleStepFromIndex(unitIndex)); + bottomR->setSingleStep(unitGetSingleStepFromIndex(unitIndex)); + leftR->setSingleStep(unitGetSingleStepFromIndex(unitIndex)); + rightR->setSingleStep(unitGetSingleStepFromIndex(unitIndex)); + + BleedLeft->setSingleStep(unitGetSingleStepFromIndex(unitIndex)); + BleedRight->setSingleStep(unitGetSingleStepFromIndex(unitIndex)); + BleedTop->setSingleStep(unitGetSingleStepFromIndex(unitIndex)); + BleedBottom->setSingleStep(unitGetSingleStepFromIndex(unitIndex)); + // hints topR->setToolTip( "<qt>" + tr( "Distance between the top margin guide and the edge of the page" ) + "</qt>"); bottomR->setToolTip( "<qt>" + tr( "Distance between the bottom margin guide and the edge of the page" ) + "</qt>"); @@ -354,6 +364,17 @@ void MarginWidget::setNewUnit(int newUni connect(BleedTop, SIGNAL(valueChanged(double)), this, SLOT(changeBleeds())); connect(BleedBottom, SIGNAL(valueChanged(double)), this, SLOT(changeBleeds())); } + + topR->setSingleStep(unitGetSingleStepFromIndex(newUnitIndex)); + bottomR->setSingleStep(unitGetSingleStepFromIndex(newUnitIndex)); + leftR->setSingleStep(unitGetSingleStepFromIndex(newUnitIndex)); + rightR->setSingleStep(unitGetSingleStepFromIndex(newUnitIndex)); + + BleedLeft->setSingleStep(unitGetSingleStepFromIndex(newUnitIndex)); + BleedRight->setSingleStep(unitGetSingleStepFromIndex(newUnitIndex)); + BleedTop->setSingleStep(unitGetSingleStepFromIndex(newUnitIndex)); + BleedBottom->setSingleStep(unitGetSingleStepFromIndex(newUnitIndex)); + connect(topR, SIGNAL(valueChanged(double)), this, SLOT(setTop())); connect(bottomR, SIGNAL(valueChanged(double)), this, SLOT(setBottom())); connect(leftR, SIGNAL(valueChanged(double)), this, SLOT(setLeft())); diff -Nurpd a/scribus/units.cpp b/scribus/units.cpp --- a/scribus/units.cpp 2024-01-07 18:07:07.000000000 +0100 +++ b/scribus/units.cpp 2024-01-09 18:30:58.088950628 +0100 @@ -28,6 +28,19 @@ for which a new license (GPL+exception) #include "units.h" /*! + * @brief Returns the SingleStep for the selected unit of measure. + */ +double SCRIBUS_API unitGetSingleStepFromIndex(const int index) +{ + switch (index) + { + case SC_IN: + return 0.125; + } + return 1; +} + +/*! * @brief Returns the ratio to points for the selected unit of measure. Ratios are for: PT, MM, IN, P, CM, C. DEG and PCT return 1.0 as they will never convert */ double unitGetRatioFromIndex(const int index) diff -Nurpd a/scribus/units.h b/scribus/units.h --- a/scribus/units.h 2024-01-07 18:07:14.000000000 +0100 +++ b/scribus/units.h 2024-01-09 18:27:09.311993576 +0100 @@ -48,6 +48,7 @@ enum scUnit { SC_PCT = 7 }; +double SCRIBUS_API unitGetSingleStepFromIndex(const int index); double SCRIBUS_API unitGetRatioFromIndex(const int index); int SCRIBUS_API unitGetBaseFromIndex(const int index); QString SCRIBUS_API unitGetStrFromIndex(const int index); |
|
ITs not a Qt function, its a Scribus function. There are lots of things that our spinboxes do.. like allowing maths inside them.. basics like 1+3 (4).. or 1cm+10mm = 2cm or 1in+1cm etc.. different spin increments are a feature we added. These are documented in the help I believe (they were for sure at some point). While we might consider this patch, those functions also need considering.. the shift change would need to also adjust if the unit went from 1 to 0.125. |
|
Ah I see, thanks for pointing that out. I'll work up a new patch tomorrow. |
|
Actually here's work in progress, but it's not quite right... So I'll follow up tomorrow, but at least you can see what direction I'm trying to take this... btw, shouldn't const int index in units.cpp/h actually be const scUnit index ? newdoc-unitofmeasure-3.patch (5,014 bytes)
diff -Nurpd a/scribus/ui/marginwidget.cpp b/scribus/ui/marginwidget.cpp --- a/scribus/ui/marginwidget.cpp 2024-01-07 18:06:55.000000000 +0100 +++ b/scribus/ui/marginwidget.cpp 2024-01-10 21:32:10.800668530 +0100 @@ -143,6 +143,16 @@ MarginWidget::MarginWidget( QWidget* par addTab(bleedPage, tr("Bleeds")); } + topR->setSingleStep(unitGetSingleStepFromIndex(unitIndex, SC_BASE)); + bottomR->setSingleStep(unitGetSingleStepFromIndex(unitIndex, SC_BASE)); + leftR->setSingleStep(unitGetSingleStepFromIndex(unitIndex, SC_BASE)); + rightR->setSingleStep(unitGetSingleStepFromIndex(unitIndex, SC_BASE)); + + BleedLeft->setSingleStep(unitGetSingleStepFromIndex(unitIndex, SC_BASE)); + BleedRight->setSingleStep(unitGetSingleStepFromIndex(unitIndex, SC_BASE)); + BleedTop->setSingleStep(unitGetSingleStepFromIndex(unitIndex, SC_BASE)); + BleedBottom->setSingleStep(unitGetSingleStepFromIndex(unitIndex, SC_BASE)); + // hints topR->setToolTip( "<qt>" + tr( "Distance between the top margin guide and the edge of the page" ) + "</qt>"); bottomR->setToolTip( "<qt>" + tr( "Distance between the bottom margin guide and the edge of the page" ) + "</qt>"); @@ -354,6 +364,17 @@ void MarginWidget::setNewUnit(int newUni connect(BleedTop, SIGNAL(valueChanged(double)), this, SLOT(changeBleeds())); connect(BleedBottom, SIGNAL(valueChanged(double)), this, SLOT(changeBleeds())); } + + topR->setSingleStep(unitGetSingleStepFromIndex(newUnitIndex, SC_BASE)); + bottomR->setSingleStep(unitGetSingleStepFromIndex(newUnitIndex, SC_BASE)); + leftR->setSingleStep(unitGetSingleStepFromIndex(newUnitIndex, SC_BASE)); + rightR->setSingleStep(unitGetSingleStepFromIndex(newUnitIndex, SC_BASE)); + + BleedLeft->setSingleStep(unitGetSingleStepFromIndex(newUnitIndex, SC_BASE)); + BleedRight->setSingleStep(unitGetSingleStepFromIndex(newUnitIndex, SC_BASE)); + BleedTop->setSingleStep(unitGetSingleStepFromIndex(newUnitIndex, SC_BASE)); + BleedBottom->setSingleStep(unitGetSingleStepFromIndex(newUnitIndex, SC_BASE)); + connect(topR, SIGNAL(valueChanged(double)), this, SLOT(setTop())); connect(bottomR, SIGNAL(valueChanged(double)), this, SLOT(setBottom())); connect(leftR, SIGNAL(valueChanged(double)), this, SLOT(setLeft())); diff -Nurpd a/scribus/ui/scrspinbox.cpp b/scribus/ui/scrspinbox.cpp --- a/scribus/ui/scrspinbox.cpp 2024-01-07 18:06:55.000000000 +0100 +++ b/scribus/ui/scrspinbox.cpp 2024-01-10 21:32:10.800668530 +0100 @@ -342,22 +342,22 @@ bool ScrSpinBox::eventFilter(QObject* wa bool altB = wheelEvent->modifiers() & Qt::AltModifier; if (shiftB && !altB) { - setSingleStep(0.1); + setSingleStep(unitGetSingleStepFromIndex(m_unitIndex, SC_SMALL)); retval = QAbstractSpinBox::event(event); } else if (!shiftB && altB) { - setSingleStep(10.0); + setSingleStep(unitGetSingleStepFromIndex(m_unitIndex, SC_BIG)); retval = QAbstractSpinBox::event(event); } else if (shiftB && altB) { - setSingleStep(0.01); + setSingleStep(unitGetSingleStepFromIndex(m_unitIndex, SC_TINY)); retval = QAbstractSpinBox::event(event); } else { - setSingleStep(1.0); + setSingleStep(unitGetSingleStepFromIndex(m_unitIndex, SC_BASE)); retval = QAbstractSpinBox::event(event); } return retval; diff -Nurpd a/scribus/units.cpp b/scribus/units.cpp --- a/scribus/units.cpp 2024-01-07 18:07:07.000000000 +0100 +++ b/scribus/units.cpp 2024-01-10 21:33:23.273031234 +0100 @@ -28,6 +28,37 @@ for which a new license (GPL+exception) #include "units.h" /*! + * @brief Returns the SingleStep for the selected unit of measure. + */ +double SCRIBUS_API unitGetSingleStepFromIndex(const int index, const scMagnitude magnitude) +{ + double ret; + + switch (index) + { + case SC_IN: + ret = 0.125; + switch (magnitude) + { + case SC_TINY: + ret /= 4; + break; + case SC_SMALL: + ret /= 2; + break; + case SC_BIG: + ret *= 8; + break; + } + break; + default: + ret = pow(10, magnitude); + } + + return ret; +} + +/*! * @brief Returns the ratio to points for the selected unit of measure. Ratios are for: PT, MM, IN, P, CM, C. DEG and PCT return 1.0 as they will never convert */ double unitGetRatioFromIndex(const int index) diff -Nurpd a/scribus/units.h b/scribus/units.h --- a/scribus/units.h 2024-01-07 18:07:14.000000000 +0100 +++ b/scribus/units.h 2024-01-10 21:32:10.800668530 +0100 @@ -29,6 +29,14 @@ for which a new license (GPL+exception) #define UNITMIN 0 #define UNITMAX 7 +// powers of ten used as index +enum scMagnitude { + SC_TINY = -2, + SC_SMALL = -1, + SC_BASE = 0, + SC_BIG = 1 +}; + enum scUnit { SC_POINTS = 0, SC_PT = 0, @@ -48,6 +56,7 @@ enum scUnit { SC_PCT = 7 }; +double SCRIBUS_API unitGetSingleStepFromIndex(const int index, const scMagnitude magnitude); double SCRIBUS_API unitGetRatioFromIndex(const int index); int SCRIBUS_API unitGetBaseFromIndex(const int index); QString SCRIBUS_API unitGetStrFromIndex(const int index); |
|
So it's probably working fine, but it seems xfwm is catching Shift/Alt so I actually can't test this properly. What confused me, is that Ctrl also shifts the magnitude by * 10, presumably this really is a Qt thing, which is why I couldn't find that behavior in ScrSpinBox. But in the process for hunting a bug that actually wasn't a bug, I think I found a much better way to implement this, entirely in ScrSpinBox itself. newdoc-unitofmeasure-4.patch (2,082 bytes)
diff -Nurpd a/scribus/ui/scrspinbox.cpp b/scribus/ui/scrspinbox.cpp --- a/scribus/ui/scrspinbox.cpp 2024-01-07 18:06:55.000000000 +0100 +++ b/scribus/ui/scrspinbox.cpp 2024-01-11 17:52:52.928675514 +0100 @@ -43,7 +43,7 @@ void ScrSpinBox::init(int unitIndex) setSuffix(unitGetSuffixFromIndex(m_unitIndex)); setDecimals(unitGetPrecisionFromIndex(m_unitIndex)); setLocale(LocaleManager::instance().userPreferredLocale()); - setSingleStep(1.0); + setSingleStep((m_unitIndex == SC_INCHES) ? 0.125 : 1.0); lineEdit()->setValidator(nullptr); disconnect(this, SIGNAL(valueChanged(const QString &)), this, SLOT(textChanged())); connect(this, SIGNAL(valueChanged(const QString &)), this, SLOT(textChanged())); @@ -52,7 +52,7 @@ void ScrSpinBox::init(int unitIndex) double ScrSpinBox::unitRatio() const { - return unitGetRatioFromIndex(m_unitIndex); + return unitGetRatioFromIndex(m_unitIndex); } void ScrSpinBox::setValue(int val) @@ -113,7 +113,7 @@ void ScrSpinBox::setNewUnit(int unitInde double newUnitRatio = unitGetRatioFromIndex(unitIndex); setMinimum(oldMin * newUnitRatio); setMaximum(oldMax * newUnitRatio); - setSingleStep(1.0); + setSingleStep((m_unitIndex == SC_INCHES) ? 0.125 : 1.0); m_unitIndex = unitIndex; setValue(oldVal * newUnitRatio); } @@ -342,22 +342,22 @@ bool ScrSpinBox::eventFilter(QObject* wa bool altB = wheelEvent->modifiers() & Qt::AltModifier; if (shiftB && !altB) { - setSingleStep(0.1); + setSingleStep((m_unitIndex == SC_INCHES) ? 0.0625 : 0.1); retval = QAbstractSpinBox::event(event); - } + } else if (!shiftB && altB) { - setSingleStep(10.0); + setSingleStep((m_unitIndex == SC_INCHES) ? 1.0 : 10.0); retval = QAbstractSpinBox::event(event); } else if (shiftB && altB) { - setSingleStep(0.01); + setSingleStep((m_unitIndex == SC_INCHES) ? 0.03125 : 0.01); retval = QAbstractSpinBox::event(event); } else { - setSingleStep(1.0); + setSingleStep((m_unitIndex == SC_INCHES) ? 0.125 : 1.0); retval = QAbstractSpinBox::event(event); } return retval; |
|
Nope, *10 is also our work. ScrSpinBox has a lot of functionality we added. |
|
No it's not, at least not as far as I can tell: https://github.com/scribusproject/scribus/blob/master/scribus/ui/scrspinbox.cpp#L342 there is no handler for Ctrl there... Yes you have a *10 handler implemented but that's mapped as (!shiftB && altB) |
|
@pmjdebruijn, I applied your newdoc-unitofmeasure-4 patch to 1.6.2.svn and 1.7.0.svn. Thanks! |
Date Modified | Username | Field | Change |
---|---|---|---|
2024-01-09 18:38 | pmjdebruijn | New Issue | |
2024-01-09 18:38 | pmjdebruijn | File Added: newdoc-unitofmeasure.patch | |
2024-01-09 18:38 | pmjdebruijn | File Added: initialmargins-54.patch | |
2024-01-09 19:59 | cbradney | Note Added: 0050861 | |
2024-01-10 17:40 | pmjdebruijn | Note Added: 0050866 | |
2024-01-10 17:40 | pmjdebruijn | File Added: newdoc-unitofmeasure-2.patch | |
2024-01-10 18:50 | cbradney | Note Added: 0050867 | |
2024-01-10 20:43 | pmjdebruijn | Note Added: 0050870 | |
2024-01-10 20:46 | pmjdebruijn | Note Added: 0050871 | |
2024-01-10 20:46 | pmjdebruijn | File Added: newdoc-unitofmeasure-3.patch | |
2024-01-11 17:06 | pmjdebruijn | Note Added: 0050881 | |
2024-01-11 17:06 | pmjdebruijn | File Added: newdoc-unitofmeasure-4.patch | |
2024-01-11 18:03 | cbradney | Note Added: 0050882 | |
2024-01-12 08:52 | pmjdebruijn | Note Added: 0050883 | |
2024-02-12 21:30 | jghali | Assigned To | => jghali |
2024-02-12 21:30 | jghali | Status | new => resolved |
2024-02-12 21:30 | jghali | Resolution | open => fixed |
2024-02-12 21:30 | jghali | Fixed in Version | => 1.6.2.svn |
2024-02-12 21:30 | jghali | Note Added: 0050982 | |
2024-09-16 20:54 | cbradney | Status | resolved => closed |