New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Symbol list is too small in NVDA Symbol / Punctuation dialog. #6101
Comments
Hi, Confirmed - in my case, "preserve" header isn't displayed (resolution is 1366x768). Thanks. |
Hi, Looks like screen real estate calculation is wrong - assumes a small list when it isn't. Technical: When you define wx.ListCtrl, you can ask it to let you specify how big the control should be. 360 by 350 pixels isn't going to be enough (no wonder ends of some columns were cut off). This was observed in both English and Korean. It seems the likely compromise would be 480 by 350. @nishimotz: Can you give us some advice on this? Thanks. |
Ideally, everything would be proportional, but wxListCtrl doesn't allow you to specify proportional widths for columns. @feerrenrut, could you please take a look at this? |
Firstly, to fix the issue of the symbol list, I propose the following:
Secondly, while here there are a few other issues with this dialog I would like to tidy up:
To fix these I propose:
|
sorry for slow response. This dialog is affected by the contents of dictionary of current system (or voice) language, and Windows UI language, and Windows versions. As far as I understand, @Qchristensen suggests all the list column items is displayed without horizontal scroll, so this fix gives the same width for all columns, rather than specifying the width numbers by pixels.
|
… itself take up the full width of the dialog. Column items should have the same width, rather than specifying the widths by pixels.
Thanks @nishimotz, this dialog is going to get a bit of a makeover while addressing this ticket. I have described the changes currently in progress in the earlier comment. As part of the changes, I am doing what you suggest in #6178. |
Fixes: #6101 This change widens the symbol list, and removes the symbol entry editing option. There are now three buttons; Add, Change, Edit. This has the following advantages: - Able to specify all fields when adding a symbol - Able to modify the entries from the change dialog The spacing around the UI elements has been fixed and made more consistent.
Obviously haven't reviewed your code :), but a few thoughts.
While you can't currently apply individual changes, I'm not sure how useful this is. The proposed change also has the downside that editing lots of symbols is quite a bit slower because you have to go in and out of change dialogs. Right now, you can just find the symbol and use accelerators to jump to the relevant field, rather than having the extra steps of opening the change dialog and closing it once done.
Again regarding applying individual changes, I can't remember for certain, but I believe applying changes is fairly expensive. I think it requires re-computation of much of the data due to inheritance, etc. I haven't looked at that code in a while, though.
Your PR mentions three buttons: Add, Change and Edit. I assume this is actually Add, Change and Remove?
|
Yep, it should be "Add, Change and Remove". I have updated this on the pull request. I don't agree with "quite a bit slower". It is indeed one more step than what it could be. But compared to the previous implementation which required you to leave the dialog for each edit, it is quite a bit faster (if you are editing several entries). Firstly there are two steps less since you no longer have to re-open the symbol pronunciation dialog again after each edit. Secondly, now the entry you are editing is still highlighted, so you haven't lost your place in the list. In terms of performance, I would argue that unless there is some serious user noticeable lag or slowdown its not a concern. This would be a one time performance hit, and not an ongoing degradation. Also I don't believe I have changed the code in any way that should make the performance worse, do you have a particular use-case that I should be thinking about? |
Have just had a play with this again. It seems like my understanding is based on having used the mouse to move focus. When using the keyboard to move between the symbol list and the replacement text control, the fields update correctly, and the dialog does not need to be exited. However if the mouse is used, these fields do not update correctly. If you are unhappy with the proposed ux, perhaps we could do the following to resolve your concerns:
I think the advantages of this are
|
I'm a little confused here. You don't need to enter and exit the dialog
to change individual symbols. The list and change fields should sync
whenever a new item is selected in the list or focus leaves a change
field. If that isn't happening with the mouse, that's definitely a bug.
Similarly, you can change the fields for a new symbol as soon as you add
it. Adding the symbol just adds a new entry into the list. You can then
configure it just as you would for an existing symbol.
The proposed UX still isn't quite as efficient because one of the most
common use cases is to change the level for a symbol, possibly for
several symbols in one sitting. Right now, you can just move to a symbol
and press alt+l (or click Level).
I'm interested in the concerns regarding intuitive UX. Having to
click/press to pop open a modal dialog every time you want to make a
tiny change to a symbol seems clunky to me; there's lots of "back and
forth". My understanding was that a lot of things were moving away from
lots of little modal dialogs. Indeed, one of the biggest complaints
about NVDA's UI right now is that we have lots of little settings
dialogs instead of a single dialog with tab sheets. The UX I was trying
to go for here is two "panels": one where you select a symbol to change,
the other where you change the symbol. Of course, it's entirely possible
this isn't how it appears visually, but that was the intention. I've
seen this paradigm in quite a few other places; the Firefox bookmarks
manager is one example that comes to mind.
Regarding the one time perf hit, if you want to apply every change as
soon as you hit OK in the change dialog, that requires you to invalidate
(and thus rebuild) the symbol data. That means one invalidation for
every symbol you change. It might be possible to add code so this isn't
necessary, but not without some substantial refactor.
|
I have taken a look at the Firefox bookmarks, I think we can work something out. There seems to be a misunderstanding about the performance issue. I am not altering how the changes are applied. In my pull request changes are only applied once the symbol pronunciation dialog Ok button is pushed. When referring to "apply", I was trying to say that the list view is updated with the changes, and the list would be committed/applied/permanently saved when the symbol pronunciation dialog Ok button was pushed. I'll put this issue on hold until we can discuss it more easily. |
After discussing some of the issues around updating this dialog, we have decided to fix the other concerns raised here, separately from this issue. As such PR #6189 has been closed. |
For PR #6287 - Various padding and alignment issues have been resolved. (#6317, #5548, #6342, #6343, #6349) For PR #6402 - The document formatting dialog has been adjusted so that the contents scrolls. (#6348) For PR #6339 - Adjusted the layout of the symbols pronunciation dialog so the full width of the dialog is used for the symbols list. (#6101)
Running Windows 10, NVDA 2016.2.1, latest next or back to 2015.4 (earliest build I have handy) all work the same.
On the Symbol / Punctuation dialog the symbol list takes up about 60% of the width of the dialog yet only displays the "symbol" and "replacement" fields. The "level" field is partially displayed, but the "Preserve" field is not displayed at all. Neither the symbol or preserve field are wide enough as it is to display their contents visually.
Proposed solution:
Put the "Symbol" label above the list and have the list itself take up the full width (minus a small margin) of the dialog.
The text was updated successfully, but these errors were encountered: