Discussion:
[GNC-dev] Register text selection
Robert Fewell
2018-05-21 11:08:05 UTC
Permalink
I have been looking at getting the middle mouse button to work for pasting
selected text and whilst trying to do that started to wonder about the
existing preselected text.

Currently...
If you open a register, the blank transaction date text is preselected.
If you start Gnucash with saved open registers, the last register in the
list to load has the blank date text preselected, this may not be the
current open register.

If you navigate by keyboard, the next field text is preselected and the
cursor set to the end of text.
If you navigate by mouse, the text is not selected and the cursor is the
mouse position.
If you update a transaction in one register and have the other
corresponding register open, the text where the cursor is will get
selected. (I think this is an easy fix).

I am just wondering if we should be doing this preselected text at all ?

Some might say it is a good indication of where the focus is, only with
keyboard navigation, but one could simply add something like this to your
css file which would also work for mouse navigation...

cursor entry {
background-color: pink;
}

So just asking the question.

Regards,
Bob
David Carlson
2018-05-21 13:30:46 UTC
Permalink
As a concerned user, not a developer, I would vote to drop all
preselection. I think it is confusing to users who do not necessarily
consider the differences between the various navigation methods as being
significant.

Further, in the cases where the curser is not visible in the register
window, the only way to find it is to use a trick such as pressing tab to
bring it back into the visible window, assuming it is in a transaction that
has not been hidden by the View > Filter by option, which complicates this
issue, and when the curser is in the blank transaction at the end, if the
register is in single line view it may not be visible.

That is my 2¢ *.*

David C
Post by Robert Fewell
I have been looking at getting the middle mouse button to work for pasting
selected text and whilst trying to do that started to wonder about the
existing preselected text.
Currently...
If you open a register, the blank transaction date text is preselected.
If you start Gnucash with saved open registers, the last register in the
list to load has the blank date text preselected, this may not be the
current open register.
If you navigate by keyboard, the next field text is preselected and the
cursor set to the end of text.
If you navigate by mouse, the text is not selected and the cursor is the
mouse position.
If you update a transaction in one register and have the other
corresponding register open, the text where the cursor is will get
selected. (I think this is an easy fix).
I am just wondering if we should be doing this preselected text at all ?
Some might say it is a good indication of where the focus is, only with
keyboard navigation, but one could simply add something like this to your
css file which would also work for mouse navigation...
cursor entry {
background-color: pink;
}
So just asking the question.
Regards,
Bob
_______________________________________________
gnucash-devel mailing list
https://lists.gnucash.org/mailman/listinfo/gnucash-devel
David T. via gnucash-devel
2018-05-21 17:44:57 UTC
Permalink
Post by Robert Fewell
I have been looking at getting the middle mouse button to work for pasting
selected text and whilst trying to do that started to wonder about the
existing preselected text.
Currently...
If you open a register, the blank transaction date text is preselected.
If you start Gnucash with saved open registers, the last register in the
list to load has the blank date text preselected, this may not be the
current open register.
I would like to point out that I find *this* aspect of the register behavior highly confusing. The “Select a field in a register that is not the current one” problem crops up at other times. I am not certain, but I think it happens when a modal dialog is closed. It is extremely frustrating to be working in a register that is not the bottom-most and then discover that your typing is going into a register that is NOT the one you are currently working in! Moreover, you may not even be aware that you are changing a transaction that is out of sight—and if you choose to leave GnuCash at this juncture, you will get a mysterious dialog asking if you want to save your changes (huh? what changes? I guess I better!). And THEN, you have no idea the next time what happened in that OTHER register.

I am grateful that someone else has seen this behavior and commented on it. I’d like to see it changed.

David T.
David Carlson
2018-05-22 00:39:32 UTC
Permalink
A long time ago I filed a bug report <
https://bugzilla.gnome.org/show_bug.cgi?id=686051> about needing to have an
easy way to navigate to those edited but not committed transactions that
trigger the warnings when closing the file or clicking on Save. I vote to
escalate that bug.

David C

On Mon, May 21, 2018 at 12:44 PM, David T. via gnucash-devel <
Post by Robert Fewell
Post by Robert Fewell
I have been looking at getting the middle mouse button to work for
pasting
Post by Robert Fewell
selected text and whilst trying to do that started to wonder about the
existing preselected text.
Currently...
If you open a register, the blank transaction date text is preselected.
If you start Gnucash with saved open registers, the last register in the
list to load has the blank date text preselected, this may not be the
current open register.
I would like to point out that I find *this* aspect of the register
behavior highly confusing. The “Select a field in a register that is not
the current one” problem crops up at other times. I am not certain, but I
think it happens when a modal dialog is closed. It is extremely frustrating
to be working in a register that is not the bottom-most and then discover
that your typing is going into a register that is NOT the one you are
currently working in! Moreover, you may not even be aware that you are
changing a transaction that is out of sight—and if you choose to leave
GnuCash at this juncture, you will get a mysterious dialog asking if you
want to save your changes (huh? what changes? I guess I better!). And THEN,
you have no idea the next time what happened in that OTHER register.
I am grateful that someone else has seen this behavior and commented on
it. I’d like to see it changed.
David T.
_______________________________________________
gnucash-devel mailing list
https://lists.gnucash.org/mailman/listinfo/gnucash-devel
Geert Janssens
2018-05-22 08:22:53 UTC
Permalink
Post by David T. via gnucash-devel
wrote:>
Post by Robert Fewell
I have been looking at getting the middle mouse button to work for pasting
selected text and whilst trying to do that started to wonder about the
existing preselected text.
Currently...
If you open a register, the blank transaction date text is preselected.
If you start Gnucash with saved open registers, the last register in the
list to load has the blank date text preselected, this may not be the
current open register.
I would like to point out that I find *this* aspect of the register behavior
highly confusing.
I had to re-read the description to get what you guys mean. I have *never* seen this precise
behavior as described by Bob.

When I open gnucash the any keypresses I type before using my mouse will always go to the
currently active tab. If that's a register tab it will alter the data field as that's the field selected
by default.

The only variation I can think of would be if you have configured gnucash to open each tab in a
separate window. I don't do that and haven't tested how it behaves in that case.
Post by David T. via gnucash-devel
The “Select a field in a register that is not the current
one” problem crops up at other times. I am not certain, but I think it
happens when a modal dialog is closed. It is extremely frustrating to be
working in a register that is not the bottom-most and then discover that
your typing is going into a register that is NOT the one you are currently
working in!
That also sounds like you are opening registers in multiple windows ?
Post by David T. via gnucash-devel
Moreover, you may not even be aware that you are changing a
transaction that is out of sight—and if you choose to leave GnuCash at this
juncture, you will get a mysterious dialog asking if you want to save your
changes (huh? what changes? I guess I better!). And THEN, you have no idea
the next time what happened in that OTHER register.
I have seen this "mysterious dialog" pop up at times so I agree there's room for improvement.

I know closing a modal dialog is not the only way to get it. It can be triggered by an action as
simple as starting a change in one register and forgetting to complete it before moving to
another making other changes.

For example I frequently hit this when I am clearing (not reconciling) splits. That's done by
clicking in the "n" in the reconcile state column of a register. The click changes the "n" to "c" but
the state change is only complete when I *leave* the transaction. Something I frequently forget
to do for the last transaction I'm changing.

Geert
David T. via gnucash-devel
2018-05-22 14:20:39 UTC
Permalink
Geert,
Post by David T. via gnucash-devel
wrote:>
Post by Robert Fewell
I have been looking at getting the middle mouse button to work for pasting
selected text and whilst trying to do that started to wonder about the
existing preselected text.
Currently...
If you open a register, the blank transaction date text is preselected.
If you start Gnucash with saved open registers, the last register in the
list to load has the blank date text preselected, this may not be the
current open register.
I would like to point out that I find *this* aspect of the register behavior
highly confusing.
I had to re-read the description to get what you guys mean. I have *never* seen this precise behavior as described by Bob.
When I open gnucash the any keypresses I type before using my mouse will always go to the currently active tab. If that's a register tab it will alter the data field as that's the field selected by default.
The only variation I can think of would be if you have configured gnucash to open each tab in a separate window. I don't do that and haven't tested how it behaves in that case.
I am talking about multiple tabs open in one main window.

Here is the way I can demonstrate the problem.

Open GnuCash and close all tabs except the main Chart of Accounts.

Now, in sequence, open:
1) Your Checking account
2) Your Cash account

This will result in your GnuCash having the following tabs, in order: Accounts, Checking, Cash.

Next, click on the Checking account tab.
Click Reconcile, and OK in the Reconcile Information Window. Next, in the Reconcile window, immediately click Cancel.

Now, the status bar at the bottom will show the date. Press Tab. Enter a number (like 12345). The status bar will show the number you are entering, ***but the register on screen will NOT show any change.*** This is because the data is going into the Cash tab at the bottom.

I am attaching a screen shot of my GnuCash at this particular juncture, which shows:

* the Checking account register (as indicated in the title bar at the top)
* the status bar with my “12345” entry indicated
* the register itself, which shows NO 12345.

If I access the Cash tab, the information is there. Interestingly, if one clicks the Cancel button while still viewing the Checking register, there is no effect on the (hidden) transaction that is being edited. You can only cancel the transaction when it is in the current view.

David T.
David T. via gnucash-devel
2018-05-22 14:40:28 UTC
Permalink
Dang. The list doesn't like how Mac Mail handles attachments!
Let's see if this will work...



From: David T. via gnucash-devel <gnucash-***@gnucash.org>
To: Geert Janssens <***@kobaltwit.be>
Cc: gnucash-***@gnucash.org
Sent: Tuesday, May 22, 2018 7:21 PM
Subject: Re: [GNC-dev] Register text selection

Geert,
Post by David T. via gnucash-devel
wrote:>
Post by Robert Fewell
I have been looking at getting the middle mouse button to work for pasting
selected text and whilst trying to do that started to wonder about the
existing preselected text.
Currently...
If you open a register, the blank transaction date text is preselected.
If you start Gnucash with saved open registers, the last register in the
list to load has the blank date text preselected, this may not be the
current open register.
I would like to point out that I find *this* aspect of the register behavior
highly confusing.
 
I had to re-read the description to get what you guys mean. I have *never* seen this precise behavior as described by Bob.
 
When I open gnucash the any keypresses I type before using my mouse will always go to the currently active tab. If that's a register tab it will alter the data field as that's the field selected by default.
 
The only variation I can think of would be if you have configured gnucash to open each tab in a separate window. I don't do that and haven't tested how it behaves in that case.
I am talking about multiple tabs open in one main window.

Here is the way I can demonstrate the problem.

Open GnuCash and close all tabs except the main Chart of Accounts.

Now, in sequence, open:
1) Your Checking account
2) Your Cash account

This will result in your GnuCash having the following tabs, in order: Accounts, Checking, Cash.

Next, click on the Checking account tab.
Click Reconcile, and OK in the Reconcile Information Window. Next, in the Reconcile window, immediately click Cancel.

Now, the status bar at the bottom will show the date. Press Tab. Enter a number (like 12345). The status bar will show the number you are entering, ***but the register on screen will NOT show any change.*** This is because the data is going into the Cash tab at the bottom.

I am attaching a screen shot of my GnuCash at this particular juncture, which shows:

* the Checking account register (as indicated in the title bar at the top)
* the status bar with my “12345” entry indicated
* the register itself, which shows NO 12345.

If I access the Cash tab, the information is there. Interestingly, if one clicks the Cancel button while still viewing the Checking register, there is no effect on the (hidden) transaction that is being edited. You can only cancel the transaction when it is in the current view.

David T.
Adrien Monteleone
2018-05-22 17:35:43 UTC
Permalink
David,

I just repeated your steps verbatim and I don’t get the same result.

Note, I’m using 3.1-2 on High Sierra. (Your screenshot looks like 2.6x)

When I start typing ‘12345', the field in focus is the NUM field in the first blank transaction in the Checking register and it reflects my typing. (as does the status bar.)

Though I don’t understand why you are hitting TAB after cancelling the Reconcile Window.

If I don’t hit tab, the focus (and active editing as expected) is on the date field in that same transaction. TAB only advances me to the NUM field.

Also, before sending this I remembered I still had 2.6.21 installed. So I tested your steps there and sure enough, I get the same result as you.

So, this is fixed in 3.1-2. (or earlier)

Regards,
Adrien
Post by David T. via gnucash-devel
Dang. The list doesn't like how Mac Mail handles attachments!
Let's see if this will work...
Sent: Tuesday, May 22, 2018 7:21 PM
Subject: Re: [GNC-dev] Register text selection
Geert,
Post by David T. via gnucash-devel
wrote:>
Post by Robert Fewell
I have been looking at getting the middle mouse button to work for pasting
selected text and whilst trying to do that started to wonder about the
existing preselected text.
Currently...
If you open a register, the blank transaction date text is preselected.
If you start Gnucash with saved open registers, the last register in the
list to load has the blank date text preselected, this may not be the
current open register.
I would like to point out that I find *this* aspect of the register behavior
highly confusing.
I had to re-read the description to get what you guys mean. I have *never* seen this precise behavior as described by Bob.
When I open gnucash the any keypresses I type before using my mouse will always go to the currently active tab. If that's a register tab it will alter the data field as that's the field selected by default.
The only variation I can think of would be if you have configured gnucash to open each tab in a separate window. I don't do that and haven't tested how it behaves in that case.
I am talking about multiple tabs open in one main window.
Here is the way I can demonstrate the problem.
Open GnuCash and close all tabs except the main Chart of Accounts.
1) Your Checking account
2) Your Cash account
This will result in your GnuCash having the following tabs, in order: Accounts, Checking, Cash.
Next, click on the Checking account tab.
Click Reconcile, and OK in the Reconcile Information Window. Next, in the Reconcile window, immediately click Cancel.
Now, the status bar at the bottom will show the date. Press Tab. Enter a number (like 12345). The status bar will show the number you are entering, ***but the register on screen will NOT show any change.*** This is because the data is going into the Cash tab at the bottom.
* the Checking account register (as indicated in the title bar at the top)
* the status bar with my “12345” entry indicated
* the register itself, which shows NO 12345.
If I access the Cash tab, the information is there. Interestingly, if one clicks the Cancel button while still viewing the Checking register, there is no effect on the (hidden) transaction that is being edited. You can only cancel the transaction when it is in the current view.
David T.
_______________________________________________
gnucash-devel mailing list
https://lists.gnucash.org/mailman/listinfo/gnucash-devel
<Screen Shot 2018-05-22 at 6.38.17 PM.png>_______________________________________________
gnucash-devel mailing list
https://lists.gnucash.org/mailman/listinfo/gnucash-devel
Robert Fewell
2018-05-21 15:33:25 UTC
Permalink
Sorry I did not explain the third option very well, have a transaction
between say "Checking Account" and "Cash in Wallet" with both registers
open.
Position the cursor on a transaction somewhere in the "Checking Account",
go back to the "Cash in Wallet" and edit a transaction between the two and
commit it.
If you go back to the "Checking Account" you will find the text highlighted
where the cursor was.

I had a look at the "Edit Account Dialog" and the "Edit Customer Dialog",
both do not preselect the first entry when opened and the cursor is at the
beginning of that entry. When you tab to the next entry it is preselected
but with the cursor hidden. If you type a letter, the cursor becomes
visible as usual or if you left arrow it shows at the start or right arrow
it shows at the end of the text.

I think I will close my PR and start again if required after you have made
your changes.

Bob
Post by Robert Fewell
Post by Robert Fewell
I have been looking at getting the middle mouse button to work for
pasting
Post by Robert Fewell
selected text and whilst trying to do that started to wonder about the
existing preselected text.
Currently...
If you open a register, the blank transaction date text is preselected.
If you start Gnucash with saved open registers, the last register in the
list to load has the blank date text preselected, this may not be the
current open register.
If you navigate by keyboard, the next field text is preselected and the
cursor set to the end of text.
If you navigate by mouse, the text is not selected and the cursor is the
mouse position.
If you update a transaction in one register and have the other
corresponding register open, the text where the cursor is will get
selected. (I think this is an easy fix).
I am just wondering if we should be doing this preselected text at all ?
As far as I can tell the first two (text navigation hightlights the full
text,
mouse navigation sets the text cursor) are at least common behavior, if
not
default. Find any dialog with more than one text field and try what
happens if
you tab from one field to the next or click in random fields. I would find
it
disturbing if the register would behave differently.
I don't understand exactly what you mean with the third behavior.
Post by Robert Fewell
Some might say it is a good indication of where the focus is, only with
keyboard navigation, but one could simply add something like this to your
css file which would also work for mouse navigation...
cursor entry {
background-color: pink;
}
So just asking the question.
It's not just a matter of visual indication. It's also about ergonomics.
Text
and mouse navigation have different dynamics and this is reflected in the
way
text is selected or not when entering a text field.
For your information I plan to work in this area of the code soon to fix
input
methods. I intend to drop all code related to text manipulation from the
sheet
and make the gtk entry responsible for it instead. Perhaps it's best you
hold
off other changes related to text entry until that's done to avoid doing
double work.
Geert
Geert Janssens
2018-05-22 09:41:04 UTC
Permalink
Post by Robert Fewell
Sorry I did not explain the third option very well, have a transaction
between say "Checking Account" and "Cash in Wallet" with both registers
open.
Position the cursor on a transaction somewhere in the "Checking Account",
go back to the "Cash in Wallet" and edit a transaction between the two and
commit it.
If you go back to the "Checking Account" you will find the text highlighted
where the cursor was.
I don't know if I see the same as you do:
I have opened my checking account and a credit card account side by side.
I click in the description field of the same transaction in both windows. So
the text cursor (the vertical "caret") is visible in both.
I now choose either window to make a change to the description field (one
character or complete text makes no difference). After committing the change
the description in the other window updates as well and the text caret ends up
at the end of the new description.

So far this looks like expected behavior to me.

On the other hand while digging deeper into something I've hit some kind of a
race condition: starting from the setup above
- I change the description field text in one window, but don't commit yet
- Then I change the description field text in the other window (to something
different from the first window) and commit.
=> The description field in the first window remains as I set it in the first
step while the field in the second window gets updated.
- then I commit the change in the first window
=> The description field in both windows now updates to the value I set in the
first window.

This has been duly reported by David Carlson in the past:
https://bugzilla.gnome.org/show_bug.cgi?id=686052

While in itself this is correct behavior it can be very confusing if one of
the changes happened accidentally. I don't know how hard it would be to catch
such a situation and warn the user about it. I thought it worth pointing out
though.
Post by Robert Fewell
I had a look at the "Edit Account Dialog" and the "Edit Customer Dialog",
both do not preselect the first entry when opened and the cursor is at the
beginning of that entry. When you tab to the next entry it is preselected
but with the cursor hidden. If you type a letter, the cursor becomes
visible as usual or if you left arrow it shows at the start or right arrow
it shows at the end of the text.
I see what you mean. And apparently I didn't fully grasp your original
question. My replies were based on navigation in general, not what the initial
state should be when opening a register.

I still believe we should have the selected field highlighted completely when
first opening. The reasoning behind this is the register is our main data
entry element so it should be optimized for efficient data entry.

Compare this for example with libreoffice calc. When you open a sheet you can
start typing immediately. There is an active cell and whatever was in there
will be replaced. The experience doesn't match 100% with the gnucash register
because calc uses a dedicated field on top of the page for cell entry in
addition to direct cell editing and they don't highlight the active cell when
tabbing into it. I think that's less clear though and I see many new users of
a spreadsheet getting confused on that. But the point I'm trying to make is
that in both cases typing your first key will replace the full contents of the
selected cell. This model is different when using mouse navigation.

While we're on this subject anyway I came across a request not so long ago to
also save our register cursor when closing gnucash in addition to the tabs and
windows that are open. I can't find it immediately but I think that's also a
valid improvement.
Post by Robert Fewell
I think I will close my PR and start again if required after you have made
your changes.
Ok.

Geert
D via gnucash-devel
2018-05-22 02:02:16 UTC
Permalink
Rather than change the message (which is still a good idea), I think we should in this case fix the messenger--in other words, stop highlighting off screen data elements and stop allowing users to change things they cannot see.

David T.

On May 22, 2018, at 5:39 AM, David Carlson <***@gmail.com> wrote:

A long time ago I filed a bug report <https://bugzilla.gnome.org/show_bug.cgi?id=686051> about needing to have an easy way to navigate to those edited but not committed transactions that trigger the warnings when closing the file or clicking on Save.  I vote to escalate that bug.


David C
Post by Robert Fewell
I have been looking at getting the middle mouse button to work for pasting
selected text and whilst trying to do that started to wonder about the
existing preselected text.
Currently...
If you open a register, the blank transaction date text is preselected.
If you start Gnucash with saved open registers, the last register in the
list to load has the blank date text preselected, this may not be the
current open register.
I would like to point out that I find *this* aspect of the register behavior highly confusing. The “Select a field in a register that is not the current one” problem crops up at other times. I am not certain, but I think it happens when a modal dialog is closed. It is extremely frustrating to be working in a register that is not the bottom-most and then discover that your typing is going into a register that is NOT the one you are currently working in! Moreover, you may not even be aware that you are changing a transaction that is out of sight—and if you choose to leave GnuCash at this juncture, you will get a mysterious dialog asking if you want to save your changes (huh? what changes? I guess I better!). And THEN, you have no idea the next time what happened in that OTHER register.

I am grateful that someone else has seen this behavior and commented on it. I’d like to see it changed.

David T.




_______________________________________________
gnucash-devel mailing list
gnucash-***@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel
Geert Janssens
2018-05-22 08:49:38 UTC
Permalink
Post by D via gnucash-devel
Rather than change the message (which is still a good idea), I think we
should in this case fix the messenger--in other words, stop highlighting
off screen data elements and stop allowing users to change things they
cannot see.
David T.
I agree on this part. The text entry focus should always be in the top most
visible window. And if it's scrolled out of sight the first keystroke should
scroll the edit field into view. I think this should be filed as a separate
bug though.

But as explained in my previous mail this is only half of the story. A user
can create pending edits regardless. And for me this is the essence of
https://bugzilla.gnome.org/show_bug.cgi?id=686051
I have thought a bit about this and I think preventing pending edits in non-
active tabs or windows is pretty difficult (and may have unwanted side-
effects) so improving the message and guiding the user to the pending edit is
probably more realistic.

Geert
Post by D via gnucash-devel
A long time ago I filed a bug report
<https://bugzilla.gnome.org/show_bug.cgi?id=686051> about needing to have
an easy way to navigate to those edited but not committed transactions that
trigger the warnings when closing the file or clicking on Save. I vote to
escalate that bug.
David C
On Mon, May 21, 2018 at 12:44 PM, David T. via gnucash-devel <gnucash-
wrote:>
Post by Robert Fewell
I have been looking at getting the middle mouse button to work for pasting
selected text and whilst trying to do that started to wonder about the
existing preselected text.
Currently...
If you open a register, the blank transaction date text is preselected.
If you start Gnucash with saved open registers, the last register in the
list to load has the blank date text preselected, this may not be the
current open register.
I would like to point out that I find *this* aspect of the register behavior
highly confusing. The “Select a field in a register that is not the current
one” problem crops up at other times. I am not certain, but I think it
happens when a modal dialog is closed. It is extremely frustrating to be
working in a register that is not the bottom-most and then discover that
your typing is going into a register that is NOT the one you are currently
working in! Moreover, you may not even be aware that you are changing a
transaction that is out of sight—and if you choose to leave GnuCash at this
juncture, you will get a mysterious dialog asking if you want to save your
changes (huh? what changes? I guess I better!). And THEN, you have no idea
the next time what happened in that OTHER register.
I am grateful that someone else has seen this behavior and commented on it.
I’d like to see it changed.
David T.
_______________________________________________
gnucash-devel mailing list
https://lists.gnucash.org/mailman/listinfo/gnucash-devel
Loading...