зеркало из https://github.com/mozilla/pjs.git
Bug 385437 - event object for EVENT_TEXT_CARET_MOVED, r=aaronlev
This commit is contained in:
Родитель
6cd6d5099a
Коммит
4aff016557
|
@ -541,3 +541,12 @@ interface nsIAccessibleTextChangeEvent : nsIAccessibleEvent
|
|||
boolean isInserted();
|
||||
};
|
||||
|
||||
[scriptable, uuid(b9076dce-4cd3-4e3d-a7f6-7f33a7f40c31)]
|
||||
interface nsIAccessibleCaretMoveEvent: nsIAccessibleEvent
|
||||
{
|
||||
/**
|
||||
* Return caret offset.
|
||||
*/
|
||||
readonly attribute long caretOffset;
|
||||
};
|
||||
|
||||
|
|
|
@ -1159,17 +1159,23 @@ nsAccessibleWrap::FireAccessibleEvent(nsIAccessibleEvent *aEvent)
|
|||
break;
|
||||
|
||||
case nsIAccessibleEvent::EVENT_TEXT_CARET_MOVED:
|
||||
{
|
||||
MAI_LOG_DEBUG(("\n\nReceived: EVENT_TEXT_CARET_MOVED\n"));
|
||||
NS_ASSERTION(eventData, "Event needs event data");
|
||||
if (!eventData)
|
||||
|
||||
nsCOMPtr<nsIAccessibleCaretMoveEvent> caretMoveEvent(do_QueryInterface(aEvent));
|
||||
NS_ASSERTION(caretMoveEvent, "Event needs event data");
|
||||
if (!caretMoveEvent)
|
||||
break;
|
||||
|
||||
MAI_LOG_DEBUG(("\n\nCaret postion: %d", *(gint *)eventData ));
|
||||
PRInt32 caretOffset = -1;
|
||||
caretMoveEvent->GetCaretOffset(&caretOffset);
|
||||
|
||||
MAI_LOG_DEBUG(("\n\nCaret postion: %d", *(gint *)caretOffset));
|
||||
g_signal_emit_by_name(atkObj,
|
||||
"text_caret_moved",
|
||||
// Curent caret position
|
||||
*(gint *)eventData);
|
||||
break;
|
||||
*(gint *)caretOffset);
|
||||
} break;
|
||||
|
||||
case nsIAccessibleEvent::EVENT_TABLE_MODEL_CHANGED:
|
||||
MAI_LOG_DEBUG(("\n\nReceived: EVENT_TABLE_MODEL_CHANGED\n"));
|
||||
|
|
|
@ -225,3 +225,26 @@ nsAccTextChangeEvent::IsInserted(PRBool *aIsInserted)
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
nsAccCaretMoveEvent::
|
||||
nsAccCaretMoveEvent(nsIAccessible *aAccessible, PRInt32 aCaretOffset) :
|
||||
nsAccEvent(::nsIAccessibleEvent::EVENT_TEXT_CARET_MOVED, aAccessible, nsnull),
|
||||
mCaretOffset(aCaretOffset)
|
||||
{
|
||||
}
|
||||
|
||||
nsAccCaretMoveEvent::
|
||||
nsAccCaretMoveEvent(nsIDOMNode *aNode) :
|
||||
nsAccEvent(::nsIAccessibleEvent::EVENT_TEXT_CARET_MOVED, aNode, nsnull),
|
||||
mCaretOffset(-1)
|
||||
{
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAccCaretMoveEvent::GetCaretOffset(PRInt32* aCaretOffset)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aCaretOffset);
|
||||
|
||||
*aCaretOffset = mCaretOffset;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
|
|
@ -113,6 +113,21 @@ private:
|
|||
PRBool mIsInserted;
|
||||
};
|
||||
|
||||
class nsAccCaretMoveEvent: public nsAccEvent,
|
||||
public nsIAccessibleCaretMoveEvent
|
||||
{
|
||||
public:
|
||||
nsAccCaretMoveEvent(nsIAccessible *aAccessible, PRInt32 aCaretOffset);
|
||||
nsAccCaretMoveEvent(nsIDOMNode *aNode);
|
||||
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
NS_FORWARD_NSIACCESSIBLEEVENT(nsAccEvent::)
|
||||
NS_DECL_NSIACCESSIBLECARETMOVEEVENT
|
||||
|
||||
private:
|
||||
PRInt32 mCaretOffset;
|
||||
};
|
||||
|
||||
// XXX todo: We might want to use XPCOM interfaces instead of structs
|
||||
// e.g., nsAccessibleTextChangeEvent: public nsIAccessibleTextChangeEvent
|
||||
|
||||
|
|
|
@ -217,8 +217,11 @@ NS_IMETHODIMP nsCaretAccessible::NotifySelectionChanged(nsIDOMDocument *aDoc, ns
|
|||
mLastCaretOffset = caretOffset;
|
||||
mLastTextAccessible = textAcc;
|
||||
|
||||
return mRootAccessible->FireDelayedToolkitEvent(nsIAccessibleEvent::EVENT_TEXT_CARET_MOVED,
|
||||
focusNode, nsnull, PR_FALSE);
|
||||
nsCOMPtr<nsIAccessibleCaretMoveEvent> event =
|
||||
new nsAccCaretMoveEvent(focusNode);
|
||||
NS_ENSURE_TRUE(event, NS_ERROR_OUT_OF_MEMORY);
|
||||
|
||||
return mRootAccessible->FireDelayedAccessibleEvent(event, PR_FALSE);
|
||||
}
|
||||
|
||||
nsRect
|
||||
|
|
|
@ -1262,8 +1262,12 @@ NS_IMETHODIMP nsDocAccessible::FlushPendingEvents()
|
|||
nsCOMPtr<nsIAccessibleText> accessibleText = do_QueryInterface(accessible);
|
||||
PRInt32 caretOffset;
|
||||
if (accessibleText && NS_SUCCEEDED(accessibleText->GetCaretOffset(&caretOffset))) {
|
||||
FireToolkitEvent(nsIAccessibleEvent::EVENT_TEXT_CARET_MOVED,
|
||||
accessible, &caretOffset);
|
||||
nsCOMPtr<nsIAccessibleCaretMoveEvent> caretMoveEvent =
|
||||
new nsAccCaretMoveEvent(accessible, caretOffset);
|
||||
NS_ENSURE_TRUE(caretMoveEvent, NS_ERROR_OUT_OF_MEMORY);
|
||||
|
||||
FireAccessibleEvent(caretMoveEvent);
|
||||
|
||||
PRInt32 selectionCount;
|
||||
accessibleText->GetSelectionCount(&selectionCount);
|
||||
if (selectionCount) { // There's a selection so fire selection change as well
|
||||
|
|
Загрузка…
Ссылка в новой задаче