Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
489 changes: 489 additions & 0 deletions BUGS-TO-REPORT.md

Large diffs are not rendered by default.

8 changes: 8 additions & 0 deletions WIP.Harness.md
Original file line number Diff line number Diff line change
Expand Up @@ -1189,6 +1189,14 @@ Eight rules:
anything else. When the IDE is still revealing lines 10 s later, `openFile`, `setCursor` and
`select` throw, naming the file and the place, rather than go on while the cursor can still
move; `afterReveal` itself returns `false`. The IDE's side of it is in BUGS-TO-REPORT.md.
- **A breakpoint set straight after an edit is lost.** The compiler's answer to an edit goes to
`parseDocumentDecorations` too, which redraws every breakpoint glyph from the answer's own
list. An F9 pressed in the 20--60 ms before the answer arrives loses its glyph, though the
compiler keeps the breakpoint. The next F9 in that file sends a list without it, and it is
gone. So a script that edits and then sets a breakpoint calls `waitForEditAnswer` first, as
`shoot_docs.mjs`'s `breakpointOn` and the `debugging` lane do. It waits until the file is no
longer `pendingChangeConfirmation`. A person rarely presses F9 that fast, and the defect is
not queued (owner, 2026-10-12).
- **A click checks where its press lands** (the `assert` lane of
`ide-test.bat` shows it). The page can change between the call that aims and the press, a few
milliseconds to a hundred later on a busy page. In an editor the debugger has just
Expand Down
3 changes: 2 additions & 1 deletion WIP.IDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,8 @@ From the survey of BETA 1005. Each chapter's fact sheet confirms the items in it
Export…), the object view, search, and the empty headings for each Add item.
- **Packages:** the Available Packages tab, Import from file, the link and overwrite prompts, and
the "package needed" prompts for WinNativeForms and CustomControls.
- **Status bar:** the error, warning, hint and info counters, and the memory figure.
- **Status bar:** the memory figure, Ln/Col, LLVM progress and the Personal edition badge. The
error, warning, hint and info counters are in the DIAGNOSTICS panel's header, not here.
- **Themes:** custom `.theme` files in a `themes` folder.
- **Webpage:** mobile mode, and back, forward and reload.
- **Troubleshooting:** the DevTools command (`tbIdeDevTools_Show`, which has no menu item).
Expand Down
57 changes: 56 additions & 1 deletion WIP.Screenshots.md
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ Exit codes: 0 every picture written or unchanged, 1 a picture failed, 2 the tool
restarted on an empty licence key in the page) and `splash` (the demo, for the splash
alone), `programs`, `codelens`, `memory`, `package` and `fusion` (pictures of a running program),
`package-server`, `settings-linked` and `package-check`, `import`, `webpage` and `web` (a
Chrome, not an IDE), `featuremap`, `code-chapter`, `debugging`, `customcontrols`, `code` and `sample9` (all described
Chrome, not an IDE), `featuremap`, `code-chapter`, `debugging`, `forms-chapter`, `customcontrols`, `code` and `sample9` (all described
below). A setup is `{name, start, prepare}`.
Every add-in a setup loads has its `SaveSetting` key snapshotted, emptied and restored
(`tbDocsHelp`, `GlobalSearchAddIn`).
Expand Down Expand Up @@ -294,6 +294,61 @@ plus `Menu_Debug` (paused, the code focused) and `Menu_Run` (WaitAWhile running)
- A line for the console is put in its input row whole and entered (`consoleRun`): a space typed
while the row's completion list is open accepts the list's first entry.

## The "Designing forms and reports" chapter

Setup `forms-chapter`: the fixture `test/shots/forms/`, FormsDemo, which refers to VB, the App
global object and WinNativeCommonCtls (for the Toolbox's COMMON CONTROLS group). `frmMain` (380 by
270, multi-coloured grabbers on) has a File menu (Open, a separator, Exit), Text1, Label1,
Command1, Check1, Frame1 holding Text2, and the control array Command2(0) and (1); `MyReport`
has a Label in Report Header and a Line and a Label in Report Detail. Its pictures are under
`docs/IDE/Forms/Images/` and `docs/IDE/Reports/Images/`, plus `Menu_Format_HorizontalSpacing`,
now taken with Command1, Check1 and Command2(0) selected (the page's own example of **Left** 10,
140 and 250), so that Make Equal is live. `Designer_PackageNeeded` is taken in setup `settings`,
whose project does not refer to the VB package.

- **Each picture starts from nothing** (`formsReset`: no menu or dialog, every tab closed with its
changes discarded, the default layout), then opens its designer (`formsDesigner`) and selects
with real clicks (`selectNamed`: a click, then Shift+clicks; `Command2(1)` names an array
member).
- **The striped ground round a designer is not steady**: it differs by a few dozen pixels from
one capture to the next, so a picture with much of it never gets two equal captures.
`groundUnsteady(c, clip, over)` gives `capture` the editor area under the tab row as
`unsteady`, less the form's boxes, the tabs and `over` (a menu, a list, the panel and, in an
annotated picture, each label and arrow of the overlay from `layerBoxes`; the overlay's own
box is too big for it). The form, its menu bar and its readouts are compared only 2 pixels in
from their edges, a readout only between its rounded ends: the ground shows through their
edges and shadows, and a 2-pixel band there failed Designer_Locked now and then. A cut-out
(`keep`) avoids the ground altogether.
- **The container's red outline is an animation** (`borderBlink`, the outline red half the
time), which the quiet style sheet stops where the outline is transparent. Controls_Container
holds it at its middle with a style of its own (`tbShotBlink`, `animation ... -0.25s paused`),
removed afterwards.
- **The TabIndex circles show while Ctrl is held**: a `rawKeyDown` of Control, settled by the
designer's class `designerShowTabIndex`, and the key released after the capture. The pointer
stays on the form where it clicked, and the shot waits for its readout: moved away, the
readout shows or not by the moment the pointer left, and the picture changed between runs. A circle is
drawn only on a control whose **TabStop** is True (the designer sets `data-tabindex` only for
those), so Label1 and Frame1 have none.
- **The designer reverses a menu's children from the file**: the fixture lists Exit, `-`, Open
so that the drop-down shows Open, the separator, Exit.
- **The zoom box is set by a `change` event on `#zoomSelect`**, never by the arrow keys, which
also move the selected controls. Designer_Zoom shows the box and its list only, four rows of
it: the Light theme's list has a smaller font, and the whole list makes the light picture 100
pixels shorter than the dark one. The form at 50 % is not in it: its scaled dots differ in
every capture, even with the ground left out.
- **The Toolbox is scrolled with the mouse wheel**: a capture never holds more than the real
window's height, so a taller page does not show more of it. Show Control Names is set from the
panel's `...` menu and put back afterwards (saved nowhere). The search of Toolbox_Search is
ended (the box focused, Escape) after the capture, or every later picture's Toolbox lacks
tools.
- **A report's PAGE WIDTH, LEFT MARGIN and RIGHT MARGIN bars show only under the pointer**
(opacity 0, 1 on hover): Report_Controls rests the pointer on PAGE WIDTH.
- **Preview_Window** is a running program's window, taken once with `captureWindow` from the
IDE's desktop. The File menu is not open in it: a native menu is a window
of its own (`#32768`), which the tool cannot yet capture and lay over the form's window.
- PROPERTIES shows no description line: in BETA 1005 its text is set in a footer of the
designer's own properties box, which is 0 pixels wide, so nothing is drawn.

## Special IDE states

- **`Services_Unavailable`**: the badge in the `no-project` setup. With no project the badge's
Expand Down
8 changes: 8 additions & 0 deletions bugs/add-form-bad-name/repro.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"mode": "lane",
"lane": "ide:forms",
"tests": [
"Add Windows Form accepts the name 1bad, which is not an identifier, and writes Class 1bad, which does not compile"
],
"steps": "1. In Project Explorer, choose Add > Add Windows Form.\n2. Type 1bad over the name offered and press Enter.\n3. 1bad.tbform and 1bad.twin are created with no message; 1bad.twin holds Class 1bad, and DIAGNOSTICS lists TB5174 Invalid number format at it.\nControl: the name My Form gives Class [My Form]."
}
8 changes: 8 additions & 0 deletions bugs/customcontrols-properties-twips/repro.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"mode": "lane",
"lane": "ide:forms",
"tests": [
"on a CustomControls form, PROPERTIES shows a control's Left in twips but takes a typed value in pixels"
],
"steps": "1. Open a CustomControls form whose control MyButton1 is at Left 20 (pixels, in the .tbform file).\n2. Select MyButton1. PROPERTIES shows Left 300.\n3. Type 40 in Left and press Enter. The control moves to Left 40 pixels, and the box then shows 600.\nControl: on a form of the VB package, Command1 at 10 pixels shows Left 150, and typing 450 moves it to 30 pixels."
}
9 changes: 9 additions & 0 deletions bugs/form-align-center-edge/repro.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"mode": "lane",
"lane": "ide:forms",
"tests": [
"Align > Center (Horizontal) centres every selected control on the leftmost left edge",
"Align > Center (Vertical) centres every selected control on the topmost top edge"
],
"steps": "1. Open a form with Command1 at 10,50, Check1 at 140,55 and Command2 at 250,110, each 100 wide.\n2. Select the three and choose Format > Align > Center (Horizontal). Each is at Left -40: centred on 10, the leftmost left edge, not on 180, the selection's centre.\n3. From the same start, Center (Vertical) centres each on Top 50, the topmost top edge, not on 95.\nControl: Align > Left puts all three at Left 10."
}
8 changes: 8 additions & 0 deletions bugs/form-alt-arrow-menu/repro.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"mode": "lane",
"lane": "ide:forms",
"tests": [
"Alt+Left in the designer also opens the IDE's menu bar"
],
"steps": "1. Open a form and select two controls.\n2. Press Alt+Left. The controls' left edges are aligned, and the IDE's menu bar opens its first menu.\nControl: the alignment itself."
}
8 changes: 8 additions & 0 deletions bugs/form-array-question-twice/repro.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"mode": "lane",
"lane": "ide:forms",
"tests": [
"renaming Label1 to Check1 asks the control-array question twice: the first YES makes Check1 an array, the second renames Label1"
],
"steps": "1. Open a form with Label1 and Check1, neither in an array.\n2. Select Label1, type Check1 in its Name box in PROPERTIES and press Enter. The box asks: A control already exists with the name 'Check1'. Do you want to create a control array?\n3. Click YES. Check1 becomes Check1(0), Label1 keeps its name, and the same question comes again.\n4. Click YES. Label1 becomes Check1(1).\nControl: answering NO to the question asks nothing more and keeps the old name."
}
8 changes: 8 additions & 0 deletions bugs/form-bad-json-empty-designer/repro.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"mode": "lane",
"lane": "ide:forms",
"tests": [
"a form file with bad JSON opens an empty designer that adds no control, and Save leaves the file as it was"
],
"steps": "1. A project with a form whose .tbform file has a JSON syntax error, such as \"Height\": 300,, (DIAGNOSTICS lists TB5246 bad JSON syntax).\n2. Open the .tbform. The notification reads ERROR: bad JSON encountered when parsing tbform, and the designer tab opens with no control and an empty PROPERTIES.\n3. Double-click the CommandButton tool: nothing is added, and the tab stays unchanged. Ctrl+S leaves the file as it was."
}
8 changes: 8 additions & 0 deletions bugs/form-center-in-container-zoom/repro.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"mode": "lane",
"lane": "ide:forms",
"tests": [
"at 50 %, Center In Container puts a control in a Frame off centre"
],
"steps": "1. Open a form with a Frame 200 x 130 holding a TextBox 120 x 24 at 20,30.\n2. Choose View > Zoom Out twice, to 50 %.\n3. Select the TextBox and choose Format > Center In Container (Horizontally), then (Vertically). It goes to -9.98,20.52, not to 40,53.\nControl: at 100 % the same commands put it at 40,53."
}
9 changes: 9 additions & 0 deletions bugs/form-escape-marks-changed/repro.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"mode": "lane",
"lane": "ide:forms",
"tests": [
"Escape, which selects the form, and then a pointer move over it mark the form changed with no control moved",
"the change that Escape and a pointer move make is an undo step that changes nothing"
],
"steps": "1. Open a form that has not been changed and click a control.\n2. Press Escape: the form is selected.\n3. Move the pointer over the form, with no button pressed. The tab is marked changed, and closing asks to save; no control has moved.\n4. After an arrow key on a control and steps 2 and 3, the first Ctrl+Z changes nothing; the next undoes the arrow key.\nControl: a click on one control and then on another leaves the tab unchanged."
}
8 changes: 8 additions & 0 deletions bugs/form-lock-not-saved/repro.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"mode": "lane",
"lane": "ide:forms",
"tests": [
"Lock Controls on its own does not mark the form changed: closing asks nothing, and the lock is gone when the form is opened again"
],
"steps": "1. Open a form and click a control.\n2. Choose Format > Lock Controls. The control shows the lock icon; the tab is not marked changed.\n3. Close the designer: nothing is asked. Open it again: the control is not locked.\nControl: Lock Controls followed by an arrow key on another control and Ctrl+S keeps the lock."
}
8 changes: 8 additions & 0 deletions bugs/form-same-size-not-saved/repro.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"mode": "lane",
"lane": "ide:forms",
"tests": [
"Make Same Size > Height (Shortest) marks the form changed, but the form's state keeps the old heights, and Save writes them"
],
"steps": "1. Open a form with Command1 and Command2 30 high and Check1 24 high.\n2. Select the three and choose Format > Make Same Size > Height (Shortest). All three are 24 high, and the tab is marked changed.\n3. Press Ctrl+S, close the designer and open it again. Command1 and Command2 are 30 high.\nControl: the same followed by an arrow key on another control, then Ctrl+S, keeps the 24."
}
9 changes: 9 additions & 0 deletions bugs/form-spacing-not-recorded/repro.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"mode": "lane",
"lane": "ide:forms",
"tests": [
"Horizontal Spacing > Remove moves the controls but sends no change, makes no undo step and leaves the form's state and the tab as they were",
"after Vertical Spacing > Remove, closing the designer asks nothing, and the form opens again with the old positions"
],
"steps": "1. Open a form with three controls side by side, such as Command1 at Left 10, Check1 at 140 and Command2 at 250, each 100 wide.\n2. Select the three and choose Format > Horizontal Spacing > Remove. Check1 moves to 110 and Command2 to 210.\n3. The tab is not marked changed, Ctrl+Z does nothing, and closing the designer asks nothing. Opened again, the controls are at 140 and 250.\nThe same with Vertical Spacing > Remove, Make Equal and Increase.\nControl: Format > Align > Left marks the form changed, is undone by Ctrl+Z and is kept."
}
8 changes: 8 additions & 0 deletions bugs/form-switch-twin-folder/repro.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"mode": "lane",
"lane": "ide:forms",
"tests": [
"Shift+F7 in the code of a form in the folder v1.twin.forms says the document is not part of a form"
],
"steps": "1. A project with a form frmDeep in the folder Sources/v1.twin.forms.\n2. Open frmDeep.twin and press Shift+F7. The notification reads Unable to switch form design mode: this document is not part of a form, and the designer does not open.\nControl: Shift+F7 in frmMain.twin, in Sources, opens its designer, and the switch from frmDeep's designer opens frmDeep.twin."
}
8 changes: 8 additions & 0 deletions bugs/form-zoom-box-arrows-move/repro.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"mode": "lane",
"lane": "ide:forms",
"tests": [
"Up Arrow in the zoom box zooms out and also moves the selected control up, as a change to the form"
],
"steps": "1. Open a form and click a control, such as Command1 at Top 50.\n2. Put the focus in the toolbar's zoom box (100 %) and press Up Arrow twice.\n3. The zoom goes to 75 % and then 50 %, and Command1 moves up one device pixel at each press (Top 48.67 at 150 % display scaling). The tab is marked changed, and each press is an undo step."
}
8 changes: 8 additions & 0 deletions bugs/form-zoom-out-floor/repro.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"mode": "lane",
"lane": "ide:forms",
"tests": [
"View > Zoom Out goes 100 %, 75 %, 50 % and then stays at 50 %, though the zoom box offers 25 %"
],
"steps": "1. Open a form and click it, so that the designer has the focus.\n2. Choose View > Zoom Out four times. The zoom box reads 75 %, 50 %, 50 %, 50 %; it offers 25 %, which it can choose itself.\nControl: View > Zoom In from 50 % goes to 75 %."
}
8 changes: 8 additions & 0 deletions bugs/history-form-line-undefined/repro.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"mode": "lane",
"lane": "ide:forms",
"tests": [
"the History entry for a change in a designer reads [line: undefined] in its tooltip"
],
"steps": "1. Open a form, click a control and press Right Arrow.\n2. Show the HISTORY panel and hold the pointer over the entry for the form. The tooltip reads /<Project>/Sources/frmMain.tbform [line: undefined] and the date.\nControl: an edit inside a procedure of a code file gives an entry whose tooltip reads [line: 5]."
}
8 changes: 8 additions & 0 deletions bugs/properties-ctrl-a/repro.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"mode": "lane",
"lane": "ide:forms",
"tests": [
"Ctrl+A in a PROPERTIES box selects nothing"
],
"steps": "1. Open a form and click Command1.\n2. Click in the Caption box of PROPERTIES and press End, then Ctrl+A.\n3. Nothing is selected in the box (the caret stays at 8), and the designer's selection is unchanged. Typing then adds to the caption.\nControl: Ctrl+A with the designer focused selects every control."
}
8 changes: 8 additions & 0 deletions bugs/readonly-designer-empty-tab/repro.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"mode": "lane",
"lane": "ide:forms",
"tests": [
"a package's read-only designer file opens an empty tab of its name besides the notice that it cannot be opened"
],
"steps": "1. In a project that references the VB package, open Packages/VB/Sources/DESIGNERS/tbObjectDesigner_PROPERTYPAGE.tbppage from Project Explorer.\n2. The notification reads Can't open designer for a read-only document., and a tab of that name is added and selected, empty, with no close icon. A middle click closes it."
}
8 changes: 8 additions & 0 deletions bugs/report-floating-toolbox/repro.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"mode": "lane",
"lane": "ide:forms",
"tests": [
"with a report open, a floating Toolbox lists every tool of a form"
],
"steps": "1. Add a report with Add Windows Report. The docked Toolbox lists Pointer, Label, Shape, Line, Image, CheckMark and QRCode.\n2. Hide the Toolbox and show it again, so that it floats. It lists the 24 tools of a form, TextBox, CommandButton and Timer among them, and More components.\nControl: the docked Toolbox's seven."
}
4 changes: 2 additions & 2 deletions builder/page-baseline.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"src": "docs",
"pages": 1243,
"staticFiles": 933
"pages": 1248,
"staticFiles": 1009
}
Loading
Loading