mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1090008 Dispatch SelectionStateChanged event for blur, r=roc r=smaug
This commit is contained in:
parent
61b6f51e1b
commit
b81e773ad6
@ -1612,7 +1612,7 @@ nsFocusManager::Blur(nsPIDOMWindow* aWindowToClear,
|
||||
|
||||
nsRefPtr<SelectionCarets> selectionCarets = presShell->GetSelectionCarets();
|
||||
if (selectionCarets) {
|
||||
selectionCarets->SetVisibility(false);
|
||||
selectionCarets->NotifyBlur();
|
||||
}
|
||||
|
||||
bool clearFirstBlurEvent = false;
|
||||
|
@ -595,9 +595,6 @@ BrowserElementChild.prototype = {
|
||||
_selectionStateChangedHandler: function(e) {
|
||||
e.stopPropagation();
|
||||
let boundingClientRect = e.boundingClientRect;
|
||||
if (!boundingClientRect) {
|
||||
return;
|
||||
}
|
||||
|
||||
let isCollapsed = (e.selectedText.length == 0);
|
||||
let isMouseUp = (e.states.indexOf('mouseup') == 0);
|
||||
@ -644,12 +641,12 @@ BrowserElementChild.prototype = {
|
||||
|
||||
let detail = {
|
||||
rect: {
|
||||
width: boundingClientRect.width,
|
||||
height: boundingClientRect.height,
|
||||
top: boundingClientRect.top,
|
||||
bottom: boundingClientRect.bottom,
|
||||
left: boundingClientRect.left,
|
||||
right: boundingClientRect.right,
|
||||
width: boundingClientRect ? boundingClientRect.width : 0,
|
||||
height: boundingClientRect ? boundingClientRect.height : 0,
|
||||
top: boundingClientRect ? boundingClientRect.top : 0,
|
||||
bottom: boundingClientRect ? boundingClientRect.bottom : 0,
|
||||
left: boundingClientRect ? boundingClientRect.left : 0,
|
||||
right: boundingClientRect ? boundingClientRect.right : 0,
|
||||
},
|
||||
commands: {
|
||||
canSelectAll: this._isCommandEnabled("selectall"),
|
||||
|
@ -11,7 +11,8 @@ enum SelectionState {
|
||||
"keypress",
|
||||
"selectall",
|
||||
"collapsetostart",
|
||||
"collapsetoend"
|
||||
"collapsetoend",
|
||||
"blur"
|
||||
};
|
||||
|
||||
dictionary SelectionStateChangedEventInit : EventInit {
|
||||
|
@ -1029,6 +1029,16 @@ DispatchSelectionStateChangedEvent(nsIPresShell* aPresShell,
|
||||
doc->DispatchEvent(event, &ret);
|
||||
}
|
||||
|
||||
void
|
||||
SelectionCarets::NotifyBlur()
|
||||
{
|
||||
SetVisibility(false);
|
||||
|
||||
dom::Sequence<SelectionState> state;
|
||||
state.AppendElement(dom::SelectionState::Blur);
|
||||
DispatchSelectionStateChangedEvent(mPresShell, nullptr, state);
|
||||
}
|
||||
|
||||
nsresult
|
||||
SelectionCarets::NotifySelectionChanged(nsIDOMDocument* aDoc,
|
||||
nsISelection* aSel,
|
||||
|
@ -75,6 +75,9 @@ public:
|
||||
NS_DECL_NSIREFLOWOBSERVER
|
||||
NS_DECL_NSISELECTIONLISTENER
|
||||
|
||||
// Notify selection carets about the blur event to hidden itself
|
||||
void NotifyBlur();
|
||||
|
||||
// nsIScrollObserver
|
||||
virtual void ScrollPositionChanged() MOZ_OVERRIDE;
|
||||
|
||||
@ -87,11 +90,6 @@ public:
|
||||
|
||||
nsEventStatus HandleEvent(WidgetEvent* aEvent);
|
||||
|
||||
/**
|
||||
* Set visibility for selection caret.
|
||||
*/
|
||||
void SetVisibility(bool aVisible);
|
||||
|
||||
bool GetVisibility() const
|
||||
{
|
||||
return mVisible;
|
||||
@ -111,6 +109,11 @@ private:
|
||||
|
||||
SelectionCarets() MOZ_DELETE;
|
||||
|
||||
/**
|
||||
* Set visibility for selection caret.
|
||||
*/
|
||||
void SetVisibility(bool aVisible);
|
||||
|
||||
/**
|
||||
* Update selection caret position base on current selection range.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user