Repository: nvaccess/nvda

Issue:
Symbol replacement edit not visible in punctuation / symbol pronunciation dialog
<!--
Please thoroughly read NVDA's wiki article on how to fill in this template, including how to provide the required files.
Issues may be closed if the required information is not present.
https://github.com/nvaccess/nvda/wiki/Github-issue-template-explanation-and-examples
-->

### Steps to reproduce:

Open NVDA's symbol pronunciation dialog.
Look (visually) for "replacement" edit.

### Actual behavior:

Replacement edit is not visible.
Note that behaviour of the dialog works as expected (can tab to edit or press alt+r, it's just not visible).

Image of dialog from old (2019.1.1 and earlier) version of NVDA:
![oldsymboldialog](https://user-images.githubusercontent.com/15902216/64915695-62019e80-d7b0-11e9-8c75-756b53eed0ac.jpg)

Image of dialog from NVDA 2019.2:
![newsymboldialog](https://user-images.githubusercontent.com/15902216/64915694-61690800-d7b0-11e9-8bb3-c06a43b70e89.jpg)

### Expected behavior:

The edit box should be visible.

### System configuration
#### NVDA installed/portable/running from source:

#### NVDA version:
Installed 2019.2

#### Windows version:
10

#### Name and version of other software in use when reproducing the issue:

#### Other information about your system:

### Other questions
#### Does the issue still occur after restarting your PC?
Yes
#### Have you tried any other versions of NVDA? If so, please report their behaviors.
2019.1.1 and several earlier versions.  In all of which the edit box was visible.



Discussion:
@feerrenrut 
@Qchristensen Have you tried with recent Alpha version? Also cc @JulienCochuyt given his/her recent work on visual aspects of some dialogs.
@Qchristensen, on my side, the field is visible, probably a difference in our scaling settings.
Nevertheless, I confirm that between 2019.1.1 and 2019.2, the field has visually moved but remained at the same tab index.

@leonardder, the change was introduced by #8790. Can you please confirm moving the field was unintentional?

I'm preparing PRs both for beta and master to fix this.
Looks like you've already got pull requests on the move for this, but yes, I can confirm it is the same in the latest alpha (nvda_snapshot_alpha-18633,65a2c3c2) and that if I drop my scaling from 225% to 125%, the field becomes visible (I have a 32" monitor and Windows 10 offers 225% as the largest non-custom setting).

Interestingly, with moving the replacement edit, its heading "replacement" now appears directly above the add & remove buttons, so it didn't look odd.
@feerrenrut, thanks for merging #10217.
Could you please also consider merging its #10218 backport into beta?
Future 2019.2.1 is expected to live quite some time before we can safely advise corporate environments to migrate to post threshold versions, 
Did this fix ever get merged into a release?  The associated PR was merged aiming for 2019.3, but the dialog appears exactly the same as my original screenshot in 2019.3, 2020.1 and 2020.2 beta2.
@Qchristensen wrote:
> Did this fix ever get merged into a release? The associated PR was merged aiming for 2019.3, but the dialog appears exactly the same as my original screenshot in 2019.3, 2020.1 and 2020.2 beta2.

The fix is indeed merged as of 2019.2.1 onward.
Still, it looks not effective at higher scaling settings.
Good point, I thought I noted that in the original issue but evidently not:
- At DPI up to and including 175%, the edit is visible.
- At DPI of 200% or higher, the edit disappears.

I have a 32" monitor which Windows offers settings up to 225% without needing to go into the advanced scaling settings (which allow up to 500%).

I generally have it set to 225%.

Resolving patch:
diff --git a/source/gui/settingsDialogs.py b/source/gui/settingsDialogs.py
--- a/source/gui/settingsDialogs.py
+++ b/source/gui/settingsDialogs.py
@@ -3706,7 +3706,7 @@ def makeSettings(self, settingsSizer):
 		self.filterEdit = sHelper.addLabeledControl(
 			labelText = filterText,
 			wxCtrlClass=wx.TextCtrl,
-			size=self.scaleSize((310, -1)),
+			size=(self.scaleSize(310), -1),
 		)
 		self.filterEdit.Bind(wx.EVT_TEXT, self.onFilterEditTextChange)
 
@@ -3758,7 +3758,7 @@ def wrapWithEventSkip(event):
 		self.replacementEdit = changeSymbolHelper.addLabeledControl(
 			labelText=replacementText,
 			wxCtrlClass=wx.TextCtrl,
-			size=self.scaleSize((300, -1)),
+			size=(self.scaleSize(300), -1),
 		)
 		self.replacementEdit.Bind(wx.EVT_TEXT, skipEventAndCall(self.onSymbolEdited))
 


Test patch: