| Age | Commit message (Collapse) | Author |
|
This uses the chrome.webRequest API to detect changes to page URL which
*do not* cause the content script to refresh.
|
|
|
|
|
|
If the element does not have an HREF, then we shouldn't be offering to
copy it's link.
|
|
Note: We probably shouldn't be offering these links at all.
|
|
|
|
|
|
|
|
Conflicts:
content_scripts/vimium_frontend.coffee
|
|
|
|
|
|
Return to the original viewport (when no find matches)
|
|
|
|
|
|
When there is no find-mode match, return to the original viewport. This
is a better UX in visual mode, because the text the user is searching
for is often on within the viewport.
(This is also more vim like. We could consider *always* working this
way.)
|
|
Previously, we removed the selection on exiting visual mode. This
collapses the selection instead.
My own experience with visual mode suggests that this is better. In
particular, if we remove the selection, then when the user re-enters
visual mode, they're dropped into caret mode. It is unlikely that the
default caret position selected by caret mode is better than the last
text selected by the user in either caret mode or visual mode.
|
|
|
|
|
|
|
|
|
|
|
|
If an exclusion rule depends on the hash/anchor, then we're not picking
it up. Here's a concrete example of this:
- https?://ca*.computing.dcu.ie/[0-9]*-*#*
(which matches slides prepared via "slidy"). The initial URL does not
include the anchor/hash, so we miss the exclusion rule. The page is
bounced immediately to an anchor/hash for which the rule should apply,
and we miss it.
(There may be other ways in which the URL can change (WebNavigation?),
we need to look into this.)
|
|
|
|
Conflicts:
content_scripts/vimium_frontend.coffee
|
|
|
|
Setting the page icon is now driven from the corrently-active frame.
- Eliminates a race condition.
- Icon matches actual frame state (not tab URL state).
- Exclusion-rule changes propagate to all frames.
|
|
When the active tab changes, we call updateActiveState to update the
icon and propagate any changed exclusion-rule state to the tab. All
frames received the request. However, only one response is received by
the background page. Therefore, new exclusion rules are only propagated
to one frame.
Here's what can go wrong...
On gmail, open the hangouts frame. Add an exclusion rule sepcific to
the hangouts frame. Save it. The update is propagated only to the main
frame. The new exclusion rule is not in effect in the hangouts frame.
That's wierd and obviously wrong.
In this commit, every frame receiving the getActiveState request also
calls checkIfEnabledForUrl to ensure that any new exclusion-rule state
is propagated. This is overkill, to some extent. We should really move
settings to chrome.storage and have each frame check locally for changes
affecting it.
|
|
Previously, we have been populating the suggested exclusion URL in the
page popup with the tab's URL. This uses the active frame's URL
instead:
- because this is the URL which will affect the current frame (without
this, a user can naively add an exclusion rule and it has no effect),
and
- because, without this, the user has no reasonable way to add exclusion
rules for frames such as the hangouts frame on gmail (for which, the
URL is not displayed in the address bar).
|
|
In b05276ed8264e5a71f20a7068690ba2a414ee6d8, I inadvertently moved the
focus handler from window to document. As a consequence, detectFocus
(now registerFocus) wasn't being called when expected.
|
|
In b05276ed8264e5a71f20a7068690ba2a414ee6d8, I inadvertently moved the
focus handler from window to document. As a consequence, detectFocus
(now registerFocus) wasn't being called when expected.
|
|
Move scroller initialisation so that its key handlers are above insert
mode in the handler stack. This ensures that the scroller sees keyup
events if we enter insert mode while continuous scrolling.
Fixes #1526.
|
|
The page (or another extension) sees keydown events (such as shift)
before entering link-hint mode. So we need to also pass the
corresponding keyup events.
Fixes #1522.
|
|
This is @mrmr1993's work from #1041.
Reload content scripts when vimium is installed or updates.
(@mrmr1993: The automatic merge was really messy (or, at least, I
couldn't figure out what was going on). Since the bulk of #1041 was
actually quite compact, I took the liberty of just copying it in. Hope
you don't mind.)
|
|
|
|
|
|
This delivers a "hidden" massage to the vomnibar after the vomnibar has
been hiddent in the host page. The vomnibar only performs whatever
action is required when it receives this "hidden" message.
|
|
Fix oversight from #1517.
|
|
|
|
|
|
Fixes #1506.
This takes the opposite approach to #1511. Instead of hiding the
vomnibar when it blurs, we hide it when it's host frame is focused.
|
|
This only effects link hints with "Use the link's name and numbers for
link-hint filtering" enabled.
We have been matching the *entire text content* of each link-hint
element.
With two (or more) hints, and with one of the elements a descendent of
the other, we have been using the entire text content of the outer node
(which includes the text content of the inner node). This leads to odd
situations where the inner element cannot be selected just by typing its
text, because its text is a substring of the outer element's text.
For example, on Google calendar, the "Today" button shows up as two
hints, one inside the other. Typing "today" never disambiguates the
hint. You always have to hit enter.
There's another nasty example on feedly, where an outer container is
clickable, but its text contains all of the (many) texts of the (many)
contained links. So the hint always has to be selected manually.
Here, when generating the text for an element, we exclude the texts from
any descendent node which has already been considered.
|
|
This adds another handler which is delivered to the options page, but
for which there is no handler. This was causing an exception on the
background page (console).
|
|
The intention here is that, under visual mode, a find query with no
matches leaves us at some aribtrary place in the page. Whereas the user
was probably looking at the text they're interested in in the viewport
to begin with. This PR returns to the original viewport in such cases.
(In this commit, return-to-viewport is enabled for *all* finds, not just
under visual mode. I want to try it out like this to see what it feels
like. This is probably not the right UX. It is not what Chrome does.)
|
|
.. and don't forget to actually use the incognitomode flag in the front
end.
|
|
See #1495.
|
|
|
|
Rationale. There are really two insert modes: the one we activate with
"i" and the one that's activated when a focusable element receives the
focus. This makes that distinction clearer. And, in particular, it
means that, when the latter type of insert mode is active, we *know*
that gloabl insert mode is *not* active.
|
|
|
|
Doh! I didn't know this existed.
|
|
The lack of a callback here was causing errors when loading (at least)
the options page.
|