QCAD Bugtracker

QCAD - 2D CAD System.

Click here for a documentation of the DokuWiki formatting syntax that can be used in reports

Please search for existing tasks (also closed ones) before opening a new task.

Please make sure that you are using the latest Version of QCAD before posting a bug (menu Help > Check for Updates)

IDCategoryTask TypeSeveritySummary  descStatusProgress
 1328 QCAD (main)ReleaseLow Windows 64bit install dir Closed
100%
Task Description

I only noticed today (perhaps they were available earlier?) that there are 64 bit binaries for windows; I suppose these are true 64 bit.

Yet, the installer prompts me to put them into “Programs (x86)”, where all the 32bit software lives, I guess - this seems to be a pure convention though, the application runs just fine.

Maybe the reason is, that the 32bit version was installed before; Maybe it should change? Maybe it should stay, so that there are not two?

 124 QCAD (main)Feature RequestLow White lines in SVG Closed
100%
Task Description

In DXF world, as far as I know, colour 7 - white - is magic, in that it shows white in model space on a black background, possibly also black on a light background, and commonly black in paper space irrespectively of background colour. In my opinion, SVG should be considered paper space.

I propose, that white entities get rendered black in SVG files exported from QCAD. What do you think?

 117 QCAD (main)Bug ReportLow Use APPID when handling extended entity data to prevent ...Closed
100%
Task Description

Rationale:

Let QCAD handle extended entity data, that is used in the industry to instruct postprocessing applications, e.g. the tooling of a mill or robot.

When I say group code or specs below, I refer to this document http://www.autodesk.com/techpubs/autocad/acad2000/dxf/extended_data_dxf_ab.htm

Current:

In the property editor I can add key value pairs to drawing entities. As in this script:

entity.setProperty(new RPropertyTypeId("MY_KEY"), "MY_VAL");
entity.setProperty(new RPropertyTypeId("MY_REAL"), 123);

In DXF this results in a group code “QCAD” followed by alternating keys and values as strings and typed positions respectively:

[…]
  0
LINE
[…]
1001
QCAD
1000
MY_KEY
1000
MY_VAL
1000
MY_REAL
1040
123.0
[…]

Expected:

From reading the specs, this looks perfectly valid. I’d say though, that QCAD is not right to expect any extended data to follow this pattern. The extended entity data, that I want to recreate eg, looks like this:

[…]
  0
LINE
[…]
1001
MY_DATA
1000
MY_FOO: some text
1000
MY_BAR: 1.250000
[…]

That is: a group code, followed by some string values. Notice that the (limited) typing facilities mentioned in the spec are not used, but the application relies on its own peculiar parsing. The same group code appears in the head of the document as an APPID:

[…]
  0
APPID
  2
MY_DATA
 70
     0
  0
[…]

Proposed:

I suggest, that QCAD uses APPIDs to group extended data. Otherwise data loss may occur. In order to not have to maintain a table of known APPIDs, that tells how to parse their extended data, I further suggest that QCAD not expect extended data to follow a “key value” pattern but an “APPID entries” pattern. Here too data would be lost, if there was an odd number of entries in the extended table and QCAD insisted on its own approach.

Within the specs, deep trees could be constructed with the use of the control string (code 1002, { and }), and the propertyEditor would become a nightmare;) So I propose, that QCAD might parse only extended data with its own APPID in key value pairs, and data with other APPIDs as just an ordered list of entries. (In ECMAscript an array will have to be used, as object properties do not keep sequence.)

 1295 QCAD (main)Feature RequestLow Un*x Manual Page Closed
100%
Task Description

Dear Andrew, this might seem an obsolete feature, though I recently tried to look it up, the man-page ;) So attached a quick shot; please use if you like and do not frown the additional maintenance. (quick test: man -l /tmp/qcad.1)

 299 QCAD (main)Bug ReportLow Text of rotated dimensions in SVG PG export Closed
100%
Task Description

Sometimes the text of a dimension (that is in a block - just a suspicion of mine) will not get rotated. I do not know why this.text.getAngle() sometimes returns a wrong value, but there is a simple workaround: always rotate the text with the dimension:

--- SvgExporterPG-orig.js	2011-09-15 23:11:40.000000000 +0200
+++ SvgExporterPG.js	2011-10-07 13:07:03.715374911 +0200

@@ -428,9 +427,7 @@
         // dimension entity: export text:
         this.writeEntityComment(entity);
         this.text = entity.getTextData();
-//        var angle = this.text.getAngle();
-//        var offset = RVector.createPolar(this.text.getHeight()/2, angle + Math.PI/2);
-//        this.text.move(offset);
+        this.text.setAngle(entity.getAngle());
         this.textColor = entity.getColor();
         this.exportText();
         this.text = undefined;
 318 QCAD (main)Bug ReportLow Text of dimensions label in SVG PG export  Closed
100%
Task Description

The labels of dimensions in PG exporter are moved half text-height. Thats a bit much, and actually, no such movement looks more true to the display of same in QCAD itself.

--- SvgExporterPG.js.orig	2011-10-15 18:57:29.994666881 +0200
+++ SvgExporterPG.js	2011-10-15 18:57:39.284666834 +0200
@@ -434,7 +434,7 @@
         //debugger;
         var angle = this.text.getAngle();
         //this.text.setAngle(entity.getAngle());
-        var offset = RVector.createPolar(this.text.getHeight()/2, angle + Math.PI/2);
+        var offset = RVector.createPolar(0, angle + Math.PI/2);
         this.text.move(offset);
         this.textColor = entity.getColor();
         this.exportText();
 247 QCAD (main)Feature RequestLow tab names sometimes shortened too much Closed
100%
Task Description

When many tabs are open, the name of contained drawing is not fully shown. One way that some mdi applications do, is to append the name of the active tab to the top window title, which is also useful in other ways. At least a tool tip with the full name of the file on the tab top was nice.

 191 QCAD (main)Bug ReportLow SVG PG export text vertical and horizontal alignment Closed
100%
Task Description

QCAD offers horizontal and vertical alignment choices for text. This is not carried over to PG exported SVGs. Currently QCAD sets the “dy” attribute on text nodes in a way, such that any text in SVG will look like the QCAD vertical alignment was set to “Top” and the horizontal one to “Left”.

Naively one can just omit the “dy” attribute and in SVG this will look like the QCAD vertical alignment was set to “bottom”. At least for single line texts that should be good.

The horizontal alignments can be recreated in SVG with the “text-anchor” attribute for text nodes. The values “start”, “middle” and “end” correspond to the QCAD “left”, “center” and “right” choices.

 192 QCAD (main)Bug ReportLow SVG PG export stroke width should not scale Closed
100%
Task Description

When PG exporting to SVG, stroke-widths are scaled with the drawing, while they should not.

 730 QCAD (main)Bug ReportLow Svg PG export splines broken Closed
100%
Task Description

With the 3.0.3 point release (latest available for Linux systems), SVG PG exporter fails to export splines:

Uncaught exception at /opt/qcad-3.0.3-prof-linux-x86/scripts/ImportExport/SvgExporter/SvgExporterPG.js:72: TypeError: Result of expression ‘splineSeg.getDegree’ [undefined] is not a function.
72 var degree = splineSeg.getDegree();

The objects returned from getBezierSegments() do not provide the methods of RSpline.

 194 QCAD (main)Bug ReportLow SVG PG export scale text Closed
100%
Task Description

Text scaling in PG SVG exporter is missing just two small additions: These attributes are not taken care of by now:

font-size, dy

Just use the current value times scale: eg 2.5 * 0.1 to have a scale of 1:10. Looks good here.

 195 QCAD (main)Bug ReportLow SVG PG export scale points Closed
100%
Task Description

Points are not scaled when PG exported to SVG:

Points as crosses are created eg. like this:

d=m 2.5,3 1,0 M 3,2.5 l 0,1

and in SVG look fine like that (scale 1/10):

d=m 2.95,3 0.1,0 M 3,2.95 3,3.05

stroke-width should be left unchanged.

 193 QCAD (main)Bug ReportLow SVG PG export scale hatches Closed
100%
Task Description

The SVG PG exporter does not scale hatches.

 315 QCAD (main)Feature RequestLow SVG PG export polylines Closed
100%
Task Description

Polylines may consist of lines and arcs. The SVG PG exporter writes them as all straight lines. A better mapping than polyline then was path, as is done with arcs now.

 204 QCAD (main)Bug ReportLow SVG PG export font styles Closed
100%
Task Description

Patch to PG export font styles “bold” and “italic” to SVG. (This only works when a file with the right style is loaded into QCAD, as QCAD will yank such style information upon saving.)

 202 QCAD (main)Bug ReportLow SVG PG export font colors Closed
100%
Task Description

White text gets exported as white text, while it should be exported as black text. Just like it is with lines. Attached patch makes text rendering use the conversion function that is already in the code base.

 198 QCAD (main)Bug ReportLow SVG PG export dimensions Closed
100%
Task Description

SVG PG exporter, scaled or unscaled, currently only exports the labels of dimensions. Missing are

ticks, arrows, and lines of the dimension.

It will not be as simple as inkscape does it, wrap it all in a <def>.

 190 QCAD (main)Bug ReportLow SVG PG export dimension labels alignment Closed
100%
Task Description

Dimension labels in QCAD are (always?) centered on the dimension line, while in exported SVGs the text starts from the center and extends into the writing direction. This can trivially be fixed by adding the attribute “text-anchor:middle” to the respective SVG “text” nodes.

 122 QCAD (main)Bug ReportLow SVG of hatch with "hole" Closed
100%
Task Description

A hatch my have “holes”, if it eg. is made of two forms, an inner form, and and outer form, where the outer form is filled while the inner form appears like a window inside of the fill, that lets the background be seen.

QCAD exports such hatches as two SVG paths in one single entity. But the “hole” is lost in the process. I know of two workarounds, that preserve the original intention of the QCAD drawing, both get the same result most of the time, the second one looking more robust and easier to implement:

# draw the outer form clockwise, draw the inner form counterclockwise
# set the “fill-rule:evenodd” attribute on the fill definition of the entity

Drawing a star like in the SVG spec in QCAD actually produces the same picture – so that should be the way to go.

http://www.w3.org/TR/SVG/painting.html#FillRuleProperty

 603 QCAD (main)Bug ReportLow SVG import straight path segments Closed
100%
Task Description

I noticed, that paths are not fully imported into QCAD. I rewrote case “m” of “SvgImporter” like below, that way also straight line segments are drawn correctly. Case “M” should be similar:

      case 'm':
          x = ox = coords[0];
          y = oy = coords[1];
          x0 = x;
          y0 = y;
          for (k=2; k<coords.length; k+=2) {
              x += coords[k+0];
              y += coords[k+1];
              this.importLine(ox, oy, x, y);
              ox = x;
              oy = y;
          }
          break;
1242QCAD (main)Bug ReportLowSVG import DPI box should use localized decimal separat...Assigned
0%
1 Task Description

I wanted to make it so, that SVG units translate 1:1 into CAD units; I use the German localized QCAD and entered 25,4 into the box with the wrong result, i.e. the same as 25; Entering 25.4 got me what I wanted: The question box needs the point and ignores the comma. Would be nice if it could use the localized separator.

 818 QCAD (main)Bug ReportLow SVG Exporter crashes on polyline Closed
100%
Task Description

Attached sample drawing, that kills QCAD 3.1 beta when exporting to SVG.

The crash happens in line 38 of SvgExporterPG in function SvgExporterPG.prototype.exportPolyline

var pp = new RPainterPath(polyline.toPainterPath());
 916 QCAD (main)Feature RequestLow SVG export: make zero line width behaviour configurable Closed
100%
Task Description

Somewhere in the 3.1 series the SVG exporter (both precise and PG) started to make lines that are zero (0) width in CAD 0.01 (@scale 1:1) points wide in exported files (0.1 @scale 1:10). I use such lines to constrain exported files to a common size and rather not have them show. In my view, this is a regression, as there is no reason for changing line weight, isnt it? If I wanted the lines to have weight, I’d draw them with a weight.

 137 QCAD (main)RefactoringLow SVG Export precision Closed
100%
Task Description

In files exported with the (even PG) exporter I sometimes see values like these: 334.99999999999994 or 570.0000000000001 and very often 12 digits of precision.

To safe on file size, I suggest, that QCAD rounds values on SVG export to eg. three places. When viewed in an ordinary web browser, that will result in a precision of 1 inch / 96dpi / 1000 = 0.00026mm, not? Ends should still meet.

 217 QCAD (main)Bug ReportLow SVG export ignores exportPoints setting Closed
100%
Task Description

Both SvgExporters ignore the exportPoints setting. Attached patch takes care of that. To be applied from within the “scripts” directory.

Nitpicking in File/SvgExport/SvgExport.js, var properties is meant to be a plain Object instead of an Array, isn’t it?

 138 QCAD (main)RefactoringLow SVG Export entity properties "By Layer" and "By Block" Closed
100%
Task Description

If I understand correctly, SVG export uses svg groups to keep QCAD block entities. This in itself is very useful. There is no way to correctly keep layer information, as QCAD blocks can contain elements on different layers, while SVG only knows about groups. That is a deficiency of SVG.

To save on file size, there was some potential to get rid of ever repeating same attributes on entities, eg: style=”stroke:#000000;stroke-width:0.25;stroke-dasharray:2.16,1.08”

To optimize “By Block” is easy: just set the attribute on the SVG group, and omit on below entities styled “By Block”.

To optimize “By Layer” is a little more involved, but might be solved by using css:
- Create a class by the name of the Layer
- add the class attribute to elements styled “By Layer”

Then only individually styled entities would get a style attribute, and filesize of SVG could be halved in most cases.

This just an idea :) Having written this, I now realize, that QCAD can style weight, pattern, color each extra, so the optimazition could only be applied to entities, where everything is “By Layer” or “By Block”. But that should be the case most of the time.

 324 ECMAScriptFeature RequestLow SVG export depends on GUI Closed
100%
Task Description

SvgExporter.js uses PrintPreview to parse the scale string, and therefore depends on the qt GUI part. That should not make maintenance harder to call RMath directly there? Results seem to match from a first look.

--- SvgExporter.js~	2011-10-20 14:11:45.527589416 +0200
+++ SvgExporter.js	2011-10-20 14:12:46.277502814 +0200
@@ -1,6 +1,5 @@
 include("scripts/library.js");
 include("scripts/date.js");
-include("scripts/File/PrintPreview/Print.js");
 
 /**
  * File exporter implementation for the SVG format.
@@ -116,7 +115,7 @@
     this.svgUnitAbbr = ret[1];
 
     // scale
-    this.scale = Print.parseScale(this.scaleStr);
+    this.scale = RMath.parseScale(this.scaleStr);
 
     var bb = this.doc.getBoundingBox();
     var size = bb.getSize();
 476 QCAD (main)Bug ReportLow Stretching dimension Closed
100%
Task Description

Draw a horizontal dimension. Stretch (S S) it. The label remains in place. It should instead go to the new center. (Unless it was manually positioned perhaps...)

Workaround: Pick one extension and drop it to where it was, label gets centered.

 244 QCAD (main)Performance IssueLow snap auto Closed
100%
Task Description

Snap defaults to auto. Auto snap gets slow in areas where there are many places it can snap to.

 245 QCAD (main)Bug ReportLow select contour with no line brings up debugger Closed
100%
Task Description

Select → Contour (T, C) and click into empty space, will cause an exception, REntityPointer being a null pointer (0×0) and not false, undefined or something like that.

 1178 ECMAScriptBug ReportLow scripting definition point and vertical DIMs Closed
100%
Task Description

A regression? In my script I draw stacked dims (depth d):

    var c = RVector.getAverage(a, b); // Zentrum der Messung
    var dim = new RDimRotatedData();
    dim.setExtensionPoint1(a);
    dim.setExtensionPoint2(b);
    c.x = a.x + d * 50 + ( d > 0 ? 50 : -50 );
    dim.setDefinitionPoint(c);
    dim.setRotation(Math.PI / 2);

Curiosly, this would work in 3.7.5 but fail in 3.7.7: the DefinitionPoint would be ignored then, but only in vertical ones, not in horizontal ones!

More curiously still: The DIM gets drawn right as soon as I move the setRotation call before the setDefinitionPoint call!

PS: the debugger proved very helpful again :)

 92 QCAD (main)Bug ReportLow Scaled printing and line-widths Closed
100%
Task Description

When printing with a scale, eg. 1:10, line-widths are scaled too. They should not. 1) they become very faint in the printout, 2) line-width in CAD carries extra information (Andrew told me:)

 203 QCAD (main)Bug ReportLow Save font styles bold and italic Closed
100%
Task Description

Font styles “bold” and “italic” are not saved to file.

According to http://docs.autodesk.com/ACD/2011/DEU/filesDXF/WS1a9193826455f5ff18cb41610ec0a2e719-7a4d.htm it is saved in dxf as group code 1071 and according to http://www.autodesk.com/techpubs/autocad/dxf/dxf2002.pdf page 20 its type is “Extended data 32-bit signed long”.

 103 ECMAScriptFeature RequestLow Runtime reload script Closed
100%
Task Description

As of TP1, a script once loaded into the runtime, does reflect changes to the file it was loaded from only after a restart of the whole of QCAD. This adds a considerable time overhead to developing scripts. Therefore I want to suggest a reload mechanism, that works kind of like the one known from a web browser.

As there is no clear separation between users custom scripts and ribbonsoft supplied scripts, checking the modification time for every access to any script might prove a performance hit.

Possibly a user script can be written, to invalidate another certain script and have the runtime reload it from file? I could add that to my menu.

Or as some magic, that can be written to “MyAction.init()”?

 483 QCAD (main)Bug ReportLow Return value of autostart applications Closed
100%
Task Description

Whe qcad runs a script from the autostart command line argument, then, if this script ends with an error, the qcad main function should not return 0, but something different, because the return value of 0 is conventionally used to indicate successful operation.

I enter this as a bug, rather than a feature request, because this convention is so entrained (at least in *NIX land), that it breaks fundamental expecations on application behaviour.

 1072 QCAD (main)Feature RequestLow Resolve Relative paths on command line Closed
100%
Task Description

I have aliased qcad to run it from terminal. There is a small glitch when opening a file from a different location using relative path names:

$ alias qcad
alias qcad='/opt/qcad-3.6.0-pro-linux-x86_64/qcad'

$ cd /a
$ qcad some.dwg &
$ cd /b
$ qcad other.dwg

Import Error is shown:
> Can't open file
> /a/other.dwg.
> File is empty.

$ qcad /b/other.dwg # absolute path works

$ readlink /proc/pid-of-qcad/cwd
/opt/qcad-3.6.0-pro-linux-x86_64

Qcad somewhere stores the path, from where it is first launched. The next “launch” will not use the next location but refer to the first one when constructing the full path name of the file name in the argument.

Maybe that can be easily improved (the message is wrong too).

 362 QCAD (main)Bug ReportLow Regression in SvgExporterPG.prototype.exportEntity Closed
100%
Task Description

In RC1 text in PG SVG will be in the wrong location. The position passed from native code to the SvgExporterPG.prototype.exportEntity is wrong:

Instead of the actual place of the text it gets the position of the surrounding block entity, or, for text that is not in a block, “0,0,0”.

Dimension labels are not affected by this. Also HAlign and VAlign are not passed correctly for text in the model-view block.

 1516 QCAD (main)SuggestionLow QT style on Linux Closed
100%
Task Description

The startup script still forces a QT-style; Getting bored of that one, qcad runs fine with the system default style - probably that was a qt4 thing, that can be removed, so it blends better with the DE?

18c18 /opt/qcad/qcad
< LD_LIBRARY_PATH=”$DIR” “$binary” -style plastique “$@” —

LD_LIBRARY_PATH=”$DIR” “$binary” “$@”
 1320 QCAD (main)Bug ReportLow QFileDialog slow on network drives Closed
100%
Task Description

QFileDialog should use the DontUseCustomDirectoryIcons flag; not much may be lost, performance should increase orders of magnitude for most – https://codereview.qt-project.org/#/c/54983/

 1327 WebsiteBug ReportLow qcad.org vs. ribbonsoft.com Closed
100%
Task Description

In the head of the new task form there is a “search for existing…” link to ribbonsoft.com even though I am browsing flyspray on qcad.org; maybe this can be made a relative link?

 127 WebsiteFeature RequestLow QCAD scripts development Closed
100%
Task Description

The QCAD scripts, that contain a great deal of functionality in the QCAD framework, are so to say open source, in the limited, still powerful, sense that they can be read, inspected and single-handedly adapted to local needs. Wouldn’t it make sense to store these in a public source code repository?

So to allow closer tracking of development, eg. Of course, all of the scripts would then have to know which release of the /kernel/ they require as a support. But that should be a good thing anyways, as soon as a community of framework users arises, wasn’t it?

 448 QCAD (main)Feature RequestLow Put the asterisk in tab title of modied files in front  ...Closed
100%
Task Description

Put the asterisk in tab title of modified files in front of the name, so it can be seen, when there are so many tabs, that the names will be truncated.

 199 QCAD (main)Bug ReportMedium Print preview scaling distorts model view Closed
100%
Task Description

- Draw a rectangle, say 100 x 100 (I use mm unit, but does it matter?)
1
- Turn on print preview
- Turn off print preview
- OK
2
- Turn on print preview
- Set scale 1/10
- Lines are thicker now, this is good
- Turn off print previw
- Lines stay thick in model view, should that be so?
3
- Set layer 0 to use dash as line-style
- Turn on print preview
- Looks OK
- Set scale 1/10
- Dashes hardly visible, looks almost like a continuous line

In the end of 2,3 a way to reset line width display in model view is to cancel scaling in print preview, ie. turn on print preview, set scale 1:1. I suppose this is a regression since TP1: model view always is unscaled.

The line-width scaling is quite accurate now: Draw two lines 10 mm apart. Set line-width 0.5mm. Set scale 1:20 and the lines exactly touch.

1288QCAD (main)Feature RequestLowPrint Preview Scaled RulersAssigned
0%
1 Task Description

Would be nice, if in print preview QCAD rulers would switch to paper dimensions. Chat here http://www.qcad.org/rsforum/viewtopic.php?f=89&t=3793

After all, print preview is not just the drawing on white, isn’t it? Everything else should stay in drawing units. Just the rulers, maybe a preference?

 314 QCAD (main)Bug ReportLow Polyline from segments puts result in layer 0 Closed
100%
Task Description

A polyline or polygon created from segments always ends up in layer 0, shouldn’t it stay in the same layer as the segments have been?

 93 QCAD (main)Feature RequestVery Low Per drawing Quick SVG Export settings Closed
100%
Task Description

A single drawing has an array of options regarding dimension font-size, printout-scale etc. It would be nice to also save Quick SVG Export settings, as can be specified in the Advanced Export Dialogue or in the Application Preferences Dialogue, with each drawing.

 200 QCAD (main)Bug ReportLow Patterned lines uncorrectly scaled in print preview Closed
100%
Task Description

In print preview lines are correctly scaled to stay the same width when printed, ie 0.25 or so mm thick. Print preview shows that very good.

But the round line-caps mess up the display, as in small scale the line-caps start to meet and make the line look like a continous one.

Print preview should not only correct line weight but also line patterns, so that the distance between dashes increase by scale.

 210 QCAD (main)Bug ReportLow Pasting a block form the library browser changes drawin ...Closed
100%
Task Description

I noticed like this:

in a block pasted from the library, text would be under differently coloured lines, although it should be above them, and this does not look nice.

Drawing order inside of a block should not be changed by a paste operation, not?

 421 QCAD (main)Bug ReportLow Multiline Text in SVG Exporter PG Closed
100%
Task Description

Multiline text is in the wrong place. Please see patch below:

— SvgExporterPG.js~ 2011-11-04 22:08:57.000000000 +0100
+++ SvgExporterPG.js 2011-12-07 13:01:43.811533803 +0100
@@ -248,7 +248,8 @@

   this.writeStartElement("flowRoot"); // <flowRoot>
   this.writeFontAttributes();
   var bb = this.text.getBoundingBox();

- var pos = this.text.getPosition();
+ var pos = this.text.getPosition(); always (0,0) ?
+ var pos = bb.getCenter(); // still not right, but closer

   var x = this.convert(pos.x);
   var y = this.convert(pos.y);
   var a = 360 - RMath.rad2deg(this.text.getAngle());
512QCAD (main)Feature RequestLowModify stretch and Restrict orthoAssigned
0%
1 Task Description

The modify stretch tool wants first and second corner, start and end point, then starts afresh. When I turn on restrict horizontally eg to align two points between start and end, the restriction sticks and I have to call restrict none, to be able to perform the next iteration, set the first corner then.

So, in the quest for a comfortable user interface, it was nice, if the modify stretch first/second corners parameter setting was not affected by current restrict/ortho etc. settings. Actually, that does not make any sense at all anyways, does it, a rectangle is defined by two degrees of freedom, isnt it?

Showing tasks 1 - 50 of 68 Page 1 of 21 - 2 -

Available keyboard shortcuts

Tasklist

Task Details

Task Editing