Hi,
Yesterday i tried to navigate with keyboard (my mouse didn't work) in RC. It was less than a success since i couldn't get into my mails. The sender column is a link, so i could write new messages to people, but it wasn't really what i wanted. Therefor this feature request.
Is it possible to make the subject as a link, this way keyboard navigation would be possible.
Maybe it could be solution to the discussion about singe and double click to open new messages. If the entire row except subject and sender text would act on double click.
Any thoughts?
Regards,
Airconditioners and computers have one thing in common: Once you open windows everything fails. -- Firefox - Safer, Faster, Better http://www.mozilla.org/products/firefox/
It's either that or implement tab navigation in javascript. I'm working
on, and pretty far along in development of getting arrow keys to work in
navigating the message list, *however* I've encountered a hurdle. I can
navigate the message list with arrows, however when I navigate to below
what is visible on the screen the message list scrollbar doesn't move.
The messages are still being selected, but obviously that doesn't do you
a whole lot of good if you can't see what's being selected.
On the whole, if this hurdle can be overcome, I'd prefer this
implementation rather than creating a link out of the subject header.
By the way, gmail does not provide header linking or messagelist tabbing
functionality either, however they do allow you to turn on keyboard
shortcuts:
http://mail.google.com/support/bin/answer.py?ctx=%67mail&hl=en&answe....
I guess what I'm advocating is the same approach that gmail took - but
with more standard keyboard shortcuts.
By the way, a progress report on my arrow navigation feature (which would be easy to integrate tab into)
the last click you made was in the message list. It's just a flag that gets set when you click on any row and gets reset when you click on anything else. It still needs a little work. Right now the flag gets reset if you click on the messagelist scollbar which I'd like to not have happen.
that are not on the visible part of the list. If anyone has any suggestions, I'd love to hear them.
-Charles
Dennis Duggen wrote:
Hi,
Yesterday i tried to navigate with keyboard (my mouse didn't work) in RC. It was less than a success since i couldn't get into my mails. The sender column is a link, so i could write new messages to people, but it wasn't really what i wanted. Therefor this feature request.
Is it possible to make the subject as a link, this way keyboard navigation would be possible.
Maybe it could be solution to the discussion about singe and double click to open new messages. If the entire row except subject and sender text would act on double click.
Any thoughts?
Regards,
Dennis
- I'm pretty stymied by the scrollbar problem with selecting messages
that are not on the visible part of the list. If anyone has any suggestions, I'd love to hear them.
Yes, interesting problem, one would think the window would move with the selection as expected. Is there a way to detect when this happens? Or will it be something like the variable for the number of emails per page set elsewhere. Can you do a page down once that happens? It seems like you're trying to control the outside layer while being inside... hmmm That almost implies you have to control the inside from the outside so they know about each other and can scroll as needed. Another problem is then the number of displayed messages has to be cached differently since you have the possibility to scroll through any number of pages, holding down the down arrow key. I'm not sure things work that way here. It's more pagination. So stop selecting down after that last message on the first page, until a new page is loaded at which point the selection should be +1.
-- Robi
Robi wrote:
- I'm pretty stymied by the scrollbar problem with selecting messages
that are not on the visible part of the list. If anyone has any suggestions, I'd love to hear them.
Yes, interesting problem, one would think the window would move with the selection as expected. Is there a way to detect when this happens? Or will it be something like the variable for the number of emails per page set elsewhere.
-- Robi
For now I'm only worrying about one page at a time. I figure that users can paginate themselves - it would be pretty unexpected behavior for a tab or page down to load a new window and would open up a whole new can of worms.
I don't think any form of moving the scroll bar based on the number of messages would work. The length of the messagelist is going to have to do a lot with font size and that sort of thing. I was thinking that assigning focus to some invisible element might do the trick, that's what I'm going to try next (probably this afternoon - boss is on vacation today which means today is an RC day! :)
-Charles
On 20 Jan 2006, at 17:30, Charles McNulty wrote:
Robi wrote:
- I'm pretty stymied by the scrollbar problem with selecting
messages that are not on the visible part of the list. If anyone has any suggestions, I'd love to hear them.
Yes, interesting problem, one would think the window would move with the selection as expected. Is there a way to detect when this happens? Or will it be something like the variable for the number of emails per page set elsewhere.
-- Robi
For now I'm only worrying about one page at a time. I figure that
users can paginate themselves - it would be pretty unexpected
behavior for a tab or page down to load a new window and would open
up a whole new can of worms.I don't think any form of moving the scroll bar based on the number
of messages would work. The length of the messagelist is going to
have to do a lot with font size and that sort of thing. I was
thinking that assigning focus to some invisible element might do
the trick, that's what I'm going to try next (probably this
afternoon - boss is on vacation today which means today is an RC
day! :)
Could it be as simple as checking the (scrolled) position of the
lower border of the highlighted row against the height of the
enclosing div, and scrolling the div contents if it's not visible?
You'd only have to do it on first highlighting a row: if it scrolls
out of view later that's ok.
I've not explored the insides of roundcube very much - RC was the
thing that finally persuaded me to install php, but that was only
this week :) - but I'd be very happy to implement this if you like.
It would be a useful way to get acquainted.
best,
will
William Ross wrote:
Could it be as simple as checking the (scrolled) position of the lower border of the highlighted row against the height of the enclosing div, and scrolling the div contents if it's not visible? You'd only have to do it on first highlighting a row: if it scrolls out of view later that's ok.
I've not explored the insides of roundcube very much - RC was the thing that finally persuaded me to install php, but that was only this week :) - but I'd be very happy to implement this if you like. It would be a useful way to get acquainted.
best,
will
Sounds like a promising idea. I'll try to implement that this weekend and if I can't figure it out by the end of the weekend, I'd be happy to pass on to you what I've done so far and you can take a crack at it. If you haven't yet, take a look at the bug list and feature request list on sourceforge. Both lists are quite large and there's little reason for more than two people to be working on the same thing! On the other hand, I didn't ask if anyone had done any previous work on the things that I've coded so far, so I'm not one to talk. I'm not telling you not to work on it, just that I've got a big head start, and I work fast! :-)
-Charles
Charles McNulty wrote:
[snip]
- I'm pretty stymied by the scrollbar problem with selecting messages
that are not on the visible part of the list. If anyone has any suggestions, I'd love to hear them.
I guess you have to compare the absolute position of the selected row within the table with the clipped height of the container div and its scroll offset:
var diff = this.list_rows[n].obj.offsetTop - (this.gui_objects.messagelist.parentNode.offsetHeight + this.gui_objects.messagelist.parentNode.scrollTop);
if (diff > 0) this.gui_objects.messagelist.parentNode.scrollTop += this.list_rows[n].obj.offsetHeight;
This is just a thought and not tested.
Regards, Thomas
-Charles
Dennis Duggen wrote:
Hi,
Yesterday i tried to navigate with keyboard (my mouse didn't work) in RC. It was less than a success since i couldn't get into my mails. The sender column is a link, so i could write new messages to people, but it wasn't really what i wanted. Therefor this feature request.
Is it possible to make the subject as a link, this way keyboard navigation would be possible.
Maybe it could be solution to the discussion about singe and double click to open new messages. If the entire row except subject and sender text would act on double click.
Any thoughts?
Regards,
Dennis
Yup, this is just about exactly what I did and it works like a charm.
Patch should be forthcoming tonight hopefully.
-Charles
Thomas Bruederli wrote:
Charles McNulty wrote:
[snip]
- I'm pretty stymied by the scrollbar problem with selecting messages
that are not on the visible part of the list. If anyone has any suggestions, I'd love to hear them.
I guess you have to compare the absolute position of the selected row within the table with the clipped height of the container div and its scroll offset:
var diff = this.list_rows[n].obj.offsetTop - (this.gui_objects.messagelist.parentNode.offsetHeight + this.gui_objects.messagelist.parentNode.scrollTop);
if (diff > 0) this.gui_objects.messagelist.parentNode.scrollTop += this.list_rows[n].obj.offsetHeight;
This is just a thought and not tested.
Regards, Thomas
-Charles
Dennis Duggen wrote:
Hi,
Yesterday i tried to navigate with keyboard (my mouse didn't work) in RC. It was less than a success since i couldn't get into my mails. The sender column is a link, so i could write new messages to people, but it wasn't really what i wanted. Therefor this feature request.
Is it possible to make the subject as a link, this way keyboard navigation would be possible.
Maybe it could be solution to the discussion about singe and double click to open new messages. If the entire row except subject and sender text would act on double click.
Any thoughts?
Regards,
Dennis
William Ross wrote:
On 20 Jan 2006, at 17:30, Charles McNulty wrote:
Robi wrote:
- I'm pretty stymied by the scrollbar problem with selecting messages
that are not on the visible part of the list. If anyone has any suggestions, I'd love to hear them.
Yes, interesting problem, one would think the window would move with the selection as expected. Is there a way to detect when this happens? Or will it be something like the variable for the number of emails per page set elsewhere.
-- Robi
For now I'm only worrying about one page at a time. I figure that users can paginate themselves - it would be pretty unexpected behavior for a tab or page down to load a new window and would open up a whole new can of worms.
I don't think any form of moving the scroll bar based on the number of messages would work. The length of the messagelist is going to have to do a lot with font size and that sort of thing. I was thinking that assigning focus to some invisible element might do the trick, that's what I'm going to try next (probably this afternoon - boss is on vacation today which means today is an RC day! :)
Could it be as simple as checking the (scrolled) position of the lower border of the highlighted row against the height of the enclosing div, and scrolling the div contents if it's not visible? You'd only have to do it on first highlighting a row: if it scrolls out of view later that's ok.
I've not explored the insides of roundcube very much - RC was the thing that finally persuaded me to install php, but that was only this week :) - but I'd be very happy to implement this if you like. It would be a useful way to get acquainted.
best,
will
Just checked in changes to the CVS to allow navigating with arrow keys, including holding down the shift key or the control-shift key. I did not implement using the arrow keys while holding down only the control key, as all it should do in such a situation is change the focus of the selection without actually highlighting the row. In order for that to be practical we would need another class in the css file to indicate the row that has the focus. Technically that class/style should be written anyway to indicate where the focus is. It's a pretty small detail.
The next step could be to add more keyboard shortcuts like delete key.
I'm going to take a little break from that portion of the code for the
time being but others are welcome to it. The important thing is this peice:
this.use_arrow_keys = function(e, msg_list_frame) { if (this.in_message_list != true) return true;
The in_message_list is set to true whenever one clicks anywhere on the message list (inside the div that contains the table - so that includes the scrollbar) and it's set to false whenever anyone clicks anywhere else. Basically we don't want to change the behavior of keys all the time, only when they are selecting messages.
-Charles