Clean up null values

• Oct 15, 2014 - 01:52
Type
Ergonomical (UX)
Severity
S5 - Suggestion
Status
active
Regression
No
Workaround
No
Project

This report follows the discussion on http://musescore.org/en/node/36516.

In the "Edit Style" dialog, null values (for example 0.00sp or 0%) don't always produce the expected result (or a desirable one). For example, by default, a volta line has a width of 0.10sp:

volta-by-default-0.10sp.png

If we set the width to 0.00sp, the line is still drawn:

volta-0.00sp.png

It seems that Qt draws lines even if the width is null. I will refer below to this "feature" by using the expression "Qt design choice". The line at 0.00sp is even more visible than when we set the width to 0.01sp:

volta-0.01sp.png

Sometimes, setting a value to 0.00sp works as expected, in that the element doesn't appear. I suppose that in these cases, MuseScore doesn't "ask" Qt at all to draw the element. For example, by default, the stem thickness is 0.13sp:

stem-by-default-0.13sp.png

In the "Edit Style" dialog, if we set the stem thickness to 0.00sp, the element disappears:

stem-0.00sp.png

There's a big problem: the element is no longer selectable. It's not desirable, especially as we can easily hide stems by toggling visibility.

Also, these two examples show that settings are not consistent: sometimes a width of 0.00sp works, sometimes, it doesn't.

In some cases, we should prevent elements to have a width of 0.00sp (a minimum value of 0.01sp should be set for the relevant fields) to make sure that the Qt design choice will not confuse users and no elements will disappear (and be unselectable).

Below are tests I've done and my propositions to improve the situation. I can send a pull request. Let me know if there are propositions that you don't find appropriate.

Point 1

  • System: System bracket width: the value 0.00sp doesn't work. Anyway, we can toggle visibility.

    Proposition: min 0.01sp. The element is selectable with this value.

  • System: Brace width: the value 0.00sp works; the element disappears and can't be selected. It's not desirable. It can already toggle visibility.

    Proposition: min 0.01sp

Point 2

  • Measure: Staff line thickness: the value 0 doesn't work.

    Proposition: min 0.01sp

Point 3

  • Barlines: Barline thickness: the value 0 works for normal barlines; they disappear and can't be selected. It's not desirable; we can easily select all barlines and toggle visibility.

    Proposition: min 0.01sp

  • Barlines: End barline thickness: the value 0 doesn't work.

    Proposition: min 0.01sp

  • Barlines: Double barline thickness: the value 0 doesn't work.

    Proposition: min 0.01sp

Point 4

  • Notes: Stem thickness: the value 0 works; the element disappears and can't be selected. It's not desirable. We can already toggle visibility.

    Proposition: min 0.01sp

  • Notes: Ledger line thickness: the value 0 works; lines disappear. Since these lines can't be selected anyway even when we see them in the screen, I think there's no problem to let the possibility to set the width to 0 (even if it's not very useful).

    Proposition: no changes.

  • Notes: Ledger line length: the value 0 doesn't work. Actually, it seems that even with a length of 0, lines are always drawn with a minimum length corresponding approximately to the "width" of the note. Example with the value 0:

    ledger-lines-0.00sp.png

    So it seems that Ledger line length is for additional length.

    Proposition: rename this property. Instead of Ledger line length, something like Ledger line extra length.

Point 5

  • Arpeggios: Hook length: the value 0 works. I don't see any problems.

    Proposition: no changes.

  • Arpeggios: Line thickness: the value 0 works if the hook length is also 0. In this case, the element disappears and can't be selected. It's not desirable; we can already toggle visibility.

    Proposition: min 0.01sp

Point 6

  • Beams: Beam thickness: the value 0 works; the element disappears, but can still be selected. It's not desirable, especially as we can already toggle visibility.

    Proposition: min 0.01sp

  • Beams: Broken beam minimum length: the value 0 works; the broken beam disappears, so it can't be used to select the beam. I don't see any problems because the "main" beam can be selected. Also, there's no setting in the Inspector to make specifically the broken beam invisible, so setting its length to 0 is kind of a workaround (maybe not very useful, but anyway it doesn't cause any problems).

    Proposition: no changes.

Point 7

  • Slurs/Ties: Line thickness at end: the value 0 doesn't work.

    Proposition: min 0.01sp

  • Slurs/Ties: Line thickness middle: the value 0 doesn't work.

    Proposition: min 0.01sp

  • Slurs/Ties: Dotted line thickness: the value 0 doesn't work.

    Proposition: min 0.01sp

Point 8

  • Hairpins, Volta, Ottava: Hairpins > Line thickness: the value 0 doesn't work.

    Proposition: min 0.01sp

  • Hairpins, Volta, Ottava: Hairpins > Height: the value 0 works, but there's no problem since we can still see the hairpin (it still has a width).

    Proposition: no changes

  • Hairpins, Volta, Ottava: Hairpins > Line break height: the value 0 works (no problem, see above).

    Proposition: no changes

Point 9

  • Hairpins, Volta, Ottava: Volta > Hook height: the value 0 doesn't really work. The hook has almost disappeared, but the value 0.00sp creates end points (to the left and to the right of the volta line) bigger than the value 0.01sp (probably thanks to the Qt design choice). With 0.00sp:

    volta-hook-0.00sp.png

    With 0.01sp:

    volta-hook-0.01sp.png

    Since we can right click on a volta, select "Line Properties..." and uncheck hooks, it's not necessary that the value 0.00sp works.

    Proposition: min 0.01sp

  • Hairpins, Volta, Ottava: Volta > Line thickness: the value 0 doesn't work.

    Proposition: min 0.01sp

Point 10

  • Hairpins, Volta, Ottava: Ottava > Hook height: same as the volta hook height.

    Proposition: min 0.01sp

  • Hairpins, Volta, Ottava: Ottava > Line thickness: currently, the value 0 doesn't work, but it will work with the pull request https://github.com/musescore/MuseScore/pull/1376, so no need to change anything.

    Proposition: no changes

Point 11

  • Pedal, Trill: Pedal > Line thickness: same as the ottava line thickness, so no need to change anything.

    Proposition: no changes

Point 12

  • Chord Symbols, Fretboard Diagrams: Fretboard Diagrams > Fret offset number font size: any value below 20% is displayed as if it was 100%. I guess it's because it would be too small to be drawn properly.

    By default, it's 200%:

    fd-200.png

    If we put any value from 0% and 19%, it will always be drawn at 100%:

    fd-0-19.png

    At 20%, it's drawn very small. it seems to be the smallest size that is actually drawn:

    fd-20.png

    Proposition: min 20%

Point 13

  • Articulations, Ornaments: Articulation size: 0% works; the element disappears and can't be selected. It's not desirable; we can already toggle visibility. By default, the size is 100%. Example at zoom 1600%:

    articulation-100-zoom-1600.png

    The minimum size should be way more than 1%, because at this value, it's like 1 pixel on the screen even at zoom 1600%:

    articulation-1-zoom-1600.png

    I propose at least 20% as minimum. Example at zoom 1600%:

    articulation-20-zoom-1600.png

    It's still very small. See at zoom 100%:

    articulation-20-zoom-100.png

    Proposition: min 20%


Comments