Commit Graph

191 Commits

Author SHA1 Message Date
Masayuki Nakano
264850b8e4 Bug 1305355 part.3 IMEInputHandler shouldn't append any ranges when composition string is empty r=m_kato
IMEInputHandler shouldn't append any ranges to dispatch empty composition event since empty clause information may make TextComposition confused.  Additionally, it doesn't need to append caret range because CompositionTransaction always sets caret at start of composition when the composition string is empty.

MozReview-Commit-ID: FkLWePXZGJf
2016-09-26 17:19:30 +09:00
Xidorn Quan
a21a965127 Bug 898984 - Part 2: Support surrogate pair in XUL cropped element. r=jfkthame 2013-08-11 03:41:00 +09:00
Michael Layzell
5f0e965456 Bug 1018486 - Part 3: Changes in widget/cocoa/, r=mstange
MozReview-Commit-ID: DhvanRhe9XE
2016-09-07 10:50:38 -04:00
Makoto Kato
2cdeac1b86 Bug 1298562 - Use %u instead of %llu for uint32_t. r=masayuki
MozReview-Commit-ID: EF1G77Y30ws
2016-08-27 16:09:29 +09:00
Masayuki Nakano
96d6d63f18 Bug 1296578 IMEInputHandler should use insertion point relative query content events during composition r=m_kato
Start offset of composition string is fixed when composition string becomes non-empty in focused editor. In other words, until composition string is fixed, composition start offset may be changed from selection start offset at dispatching compositionstart event.  Especially, in e10s mode, pending keyboard events usually change composition start offset.

So, while there is composition, IMEHandler should use query events querying text rect or text content relative to actual start offset of composition string because native IME believes composition string at selection selection start when starting composition in the main process.

MozReview-Commit-ID: 3hinwozl9Ow
2016-08-19 21:51:54 +09:00
Masayuki Nakano
c9ce9b9c4a Bug 1284422 part.4 Fix odd indent of MOZ_LOG() in TextInputHandler.mm r=m_kato
MozReview-Commit-ID: 4ua3yoSgAJv
2016-07-05 18:38:53 +09:00
Masayuki Nakano
5dbefe59ac Bug 1280053 TextInputHandler should initialize WidgetKeyboardEvent without already handled characters r=m_kato
TextInputHandler may dispatch keypress events after InsertText() is called if there was composition and it's committed by "current" keydown event. In that case, [NSEvent characters] may have the committing string.  For example, when Opt+e of US keyboard layout started composition, Cmd+v causes committing the "`" character and pasting the clipboard text. Then, the "v" key's keydown event's |characters| is "`v". So, after InsertText() is called with "`", TextInputHandler shouldn't dispatch keypress event for "`" again. I.e., the KeyboardEvent.key value should be "v" rather than "`v".

For solving this issue, TextInputHandlerBase::AutoInsertStringClearer which is created at every InsertText() call should store the inserted string to TextInputHandlerBase::KeyEventState. However, for making the implemntation simpler, it should recode only when the inserting string is actually a part of [mKeyEvent characters]. Then, TextInputHandlerBase::KeyEventState can compute unhandled insert string at initializing WidgetKeyboardEvent.

So, finally, TextInputHandlerBase::InitKeyEvent() should be called via TextInputHandlerBase::KeyEventState::InitKeyEvent(). This ensures that all key events which may cause InsertText() calls are always initialized with unhandled string.

MozReview-Commit-ID: A9o8o9pV2XV
2016-06-19 01:13:16 +09:00
Masayuki Nakano
91219152e3 Bug 1280355 part.2 TextInputHandler should use LazyLogModule instead of PR_NewLogModule() r=m_kato
For making TextInputHandler MOZ_LOG* environment variables aware, TextInputHandler should use LazyLogModule.

MozReview-Commit-ID: 9La229BFaJ1
2016-06-16 17:14:34 +09:00
Masayuki Nakano
c8856b8adb Bug 1280355 part.1 TISInputSourceWrapper::CurrentInputSource() should create the static instance when it's called r=m_kato
This is preparation. TISInputSourceWrapper is created before starting XPCOM, however, when its first instance is created, TextInputHandler.mm tries to log all keyboard layouts and IMEs which are installed into the system. This would be problem if it uses LazyLogModule because it's initialized at starting XPCOM.

MozReview-Commit-ID: DWz8TylL175
2016-06-16 17:00:38 +09:00
Masayuki Nakano
5416b396a0 Bug 1279170 TextInputHandler::InsertText() should set keypress event's .key value property when it replaces specified range with a character r=m_kato
TextEventDispatcher::MaybeDispatchKeypressEvents() dispatches keypress events with passed event's mKeyNameIndex and mKeyValue values. I.e., setting mCharCode doesn't make sense in this case. Similarly, mKeyCode value is also ignored (overwritten by 0) if it's printable key's key event (mKeyNameIndex == KEY_NAME_INDEX_USE_STRING).

MozReview-Commit-ID: bdBQOlVKTs
2016-06-16 12:11:01 +09:00
Masayuki Nakano
0aa82c0583 Bug 1270985 Hide mouse cursor in native keydown event handler if Command key isn't pressed r=m_kato
Currently, TextInputHandler::DispatchEvent() isn't used for WidgetKeyboardEvent nor WidgetCompositionEvent since TextEventDispatcher directly uses nsIWidget::DispatchEvent().  Therefore, old code hiding mouse cursor at dispatching eKeyPress event is never run in current mozilla-central since TextInputHandler dispatches eKeyPress events via TextEventDispatcher.

Additionally, it's not enough to hide mouse cursor only when widget dispatches eKeyPress events because if IME starts composition, eKeyPress event won't be fired until finishing the composition. So, I think that we should hide mouse cursor at receiving native keydown events.  The event handler receives keydown events before IME handles them.  Additionally, modifier key events which won't cause eKeyPress events are not using native keydown event handler, fortunately.  So, I believe that it's the best place to do it.

MozReview-Commit-ID: 9dnpiVEV2Lx
2016-06-08 14:37:51 +09:00
Masayuki Nakano
e7e6eae87c Bug 1277756 part.7 Rename TextRangeType::NS_TEXTRANGE_SELECTEDCONVERTEDTEXT to TextRangeType::eSelectedClause r=smaug
MozReview-Commit-ID: GyRYWzfeWrm
2016-06-03 19:15:21 +09:00
Masayuki Nakano
6581476c25 Bug 1277756 part.6 Rename TextRangeType::NS_TEXTRANGE_CONVERTEDTEXT to TextRangeType::eConvertedClause r=smaug
MozReview-Commit-ID: 3mexBm278As
2016-06-03 19:05:32 +09:00
Masayuki Nakano
984c5b6b86 Bug 1277756 part.5 Rename TextRangeType::NS_TEXTRANGE_SELECTEDRAWTEXT to TextRangeType::eSelectedRawClause r=smaug
MozReview-Commit-ID: MbG4siLb4Q
2016-06-03 18:57:21 +09:00
Masayuki Nakano
0508cec6ea Bug 1277756 part.4 Rename TextRangeType::NS_TEXTRANGE_RAWINPUT to TextRangeType::eRawClause r=smaug
MozReview-Commit-ID: KLC1VPiYTdz
2016-06-03 18:48:37 +09:00
Masayuki Nakano
ded5f6cd4f Bug 1277756 part.3 Rename TextRangeType::NS_TEXTRANGE_CARETPOSITION to TextRangeType::eCaret r=smaug
MozReview-Commit-ID: CaqmOSxYYU7
2016-06-03 18:40:06 +09:00
Masayuki Nakano
afa7c7379f Bug 1277756 part.1 Make anonymous enum for NS_TEXTRANGE_* to an enum class named "TextRangeType" r=smaug
For making our code clearer by the stronger type check, we should change the anonymous enum for NS_TEXTRANGE_* to enum class whose name is "TextRangeType" and whose type is "RawTextRangeType" which is an alias of uint8_t.

Additionally, this also adds some utility methods for them.

Note that some lines which are changed by this patch become over 80 characters but it will be fixed by the following patches.

MozReview-Commit-ID: 76izA1WqTkp
2016-06-04 09:49:21 +09:00
Makoto Kato
2a1c9f17f2 Bug 1276948 - Remove IMEInputHandler::ConversationIdentifier. r=masayuki
This method is for old NSTextInput API and unused now.

MozReview-Commit-ID: thcbEExH58
2016-05-31 23:18:04 +09:00
Makoto Kato
9f331c065f Bug 1177943 - Part 1. Add LookUpDictionary method to widget. r=masayuki
I would like to add new method to look up dictionary.

MozReview-Commit-ID: Jqk0OelezVF
2016-04-04 17:14:36 +09:00
Makoto Kato
5a36eb144e Bug 1260091 - Move using SendBidiKeyboardNotify to WidgetUtils. r=masayuki
For e10s, we send Bidi keyboard information to content process.  We should add utility method to share it for all platforms.

MozReview-Commit-ID: JJX26OivQvt
2016-05-19 17:47:49 +09:00
Masayuki Nakano
6596e99c43 Bug 1254755 part.5 Rename WidgetKeyboardEvent::isChar to WidgetKeyboardEvent::mIsChar r=smaug
MozReview-Commit-ID: 58mri5IP3dV
2016-05-12 18:31:05 +09:00
Masayuki Nakano
93601f2106 Bug 1254755 part.4 Rename WidgetKeyboardEvent::location to WidgetKeyboardEvent::mLocation r=smaug
MozReview-Commit-ID: CjT7izri6Vq
2016-05-12 18:17:22 +09:00
Masayuki Nakano
ac12e32d97 Bug 1254755 part.3 Rename WidgetKeyboardEvent::alternativeCharCodes to WidgetKeyboardEvent::mAlternativeCharCodes r=smaug
MozReview-Commit-ID: 26K8ZxzavfB
2016-05-12 17:57:21 +09:00
Masayuki Nakano
f75bc688b3 Bug 1254755 part.2 Rename WidgetKeyboardEvent::charCode to WidgetKeyboardEvent::mCharCode r=smaug
And mCharCode shouldn't be compared with NS_VK_*, nsIDOMKeyEvent::DOM_VK_*. Additionally, when it's compared with a character constant, cast isn't necessary.

MozReview-Commit-ID: JMT614copjG
2016-05-13 16:06:18 +09:00
Masayuki Nakano
55b60a37e4 Bug 1254755 part.1 Rename WidgetKeyboardEvent::keyCode to WidgetKeyboardEvent::mKeyCode r=smaug
And also WidgetKeyboardEvent::mKeyCode should be compared with NS_VK_* rather than nsIDOMKeyEvent::DOM_VK_*.

MozReview-Commit-ID: IKjQ1nr8XYe
2016-05-12 17:13:49 +09:00
Jonathan Watt
820350a9a0 Bug 1271867 - Update our usage of NSWindow::convertBaseToScreen/convertScreenToBase to modern ApplicationKit API. r=mstange 2016-05-05 12:27:13 +01:00
Makoto Kato
e541c5c874 Bug 1262363 - Call [NSTextInputContext handleEvent] for mouse support on IME. r=masayuki
Some IME handles mouse event by handleEvent method of NSTextInputcontext.  So we should call it on mouse event for IME

MozReview-Commit-ID: 6lyXCpOJ3yr
2016-04-27 21:14:43 +09:00
Masayuki Nakano
99eab530eb Bug 1259656 part.1 Rename WidgetEvent::refPoint to WidgetEvent::mRefPoint r=smaug
MozReview-Commit-ID: ESWM5ZyBpSR
2016-04-18 23:09:02 +09:00
Masayuki Nakano
4d73a7381d Bug 1259658 Rename WidgetInputEvent::modifiers to WidgetInputEvent::mModifiers r=smaug
MozReview-Commit-ID: 7avEiqKfaHA
2016-03-31 17:03:00 +09:00
Masayuki Nakano
f890eb4af3 Bug 1257760 TextInputHandler should dispatch keypress event even when a plugin has focus r=m_kato
When a plugin has focus, TextInputHandler shouldn't send native keydown event to interpretKeyEvents of NSView.  However, it should dispatch keypress events because shortcut key handlers wait following keypress event.

MozReview-Commit-ID: HpG108s2Rde
2016-03-23 15:31:54 +09:00
Masayuki Nakano
20493032e6 Bug 1154183 part.2 eKeyDown event should have charCode value of following keypress event r=smaug
MozReview-Commit-ID: 9duzKfCFPro
2016-03-19 20:57:11 +09:00
Masayuki Nakano
3582ca47f4 Bug 1249184 Dead key shouldn't cause keypress event on Mac OS X r=smaug+m_kato 2016-03-16 13:50:01 +09:00
Masayuki Nakano
5fe3688488 Bug 1137563 part.5 Set charCode of dead key's keypress event on Mac to the dead char r=m_kato 2016-03-16 13:47:50 +09:00
Masayuki Nakano
0d76420890 Bug 1137563 part.4 Implement IMEInputHandler::WillDispatchKeyboardEvent() r=m_kato 2016-03-16 13:47:50 +09:00
Masayuki Nakano
a3ad9c6f2d Bug 1137563 part.3 TextInputHandler should use TextEventDispatcher r=m_kato 2016-03-16 13:47:50 +09:00
Masayuki Nakano
a97de814b8 Bug 1137563 part.2 IMEInputHandler should use TextEventDispatcher r=m_kato 2016-03-16 13:47:50 +09:00
Masayuki Nakano
2e4eb786ce Bug 1137563 part.1 Implement TextEventDispatcherListener in TextEventInputHandlerBase and IMEInputHandler r=m_kato 2016-03-16 13:47:49 +09:00
Nicholas Nethercote
ce94aae3ae Bug 1225007 (part 1, attempt 3) - Use LayoutDevicePixel more in Cocoa widget code. r=kats. 2015-11-19 14:10:38 +11:00
Phil Ringnalda
040c117af2 Backed out 2 changesets (bug 1225007) for frequent OS X "Shouldn't return empty rect" assertion failures, a=backout
Backed out changeset c5b352c74b35 (bug 1225007)
Backed out changeset 8a513c70ce7c (bug 1225007)
2015-11-19 20:55:26 -08:00
Nicholas Nethercote
5db293bd80 Bug 1225007 (part 1, attempt 2) - Use LayoutDevicePixel more in Cocoa widget code. r=kats. 2015-11-19 14:10:38 +11:00
Nicholas Nethercote
117b39c2e9 Backout 52ba24123046 and 66768d6a50fa (bug 1225007) for causing lots of test assertions on Mac. CLOSED TREE 2015-11-17 17:02:39 -08:00
Nicholas Nethercote
0a8fdd9562 Bug 1225007 (part 1) - Use LayoutDevicePixel more in Cocoa widget code. r=kats. 2015-11-15 21:37:52 -08:00
Botond Ballo
db5d15db66 Bug 1222661 - Replace ToUntyped(obj) calls with obj.ToUnknown*(). r=nical 2015-11-06 22:13:40 -05:00
Josh Aas
d903588365 Bug 1221451: Don't pass nil when an argument is required. r=spohl 2015-11-06 10:24:19 +09:00
Birunthan Mohanathas
ac37dec517 Bug 1219392 - Capitalize mozilla::unused to avoid conflicts. r=froydnj 2015-11-02 07:53:26 +02:00
Nathan Froyd
4e6d8f6705 Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat
The bulk of this commit was generated with a script, executed at the top
level of a typical source code checkout.  The only non-machine-generated
part was modifying MFBT's moz.build to reflect the new naming.

CLOSED TREE makes big refactorings like this a piece of cake.

 # The main substitution.
find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \
    xargs perl -p -i -e '
 s/nsRefPtr\.h/RefPtr\.h/g; # handle includes
 s/nsRefPtr ?</RefPtr</g;   # handle declarations and variables
'

 # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h.
perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h

 # Handle nsRefPtr.h itself, a couple places that define constructors
 # from nsRefPtr, and code generators specially.  We do this here, rather
 # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename
 # things like nsRefPtrHashtable.
perl -p -i -e 's/nsRefPtr/RefPtr/g' \
     mfbt/nsRefPtr.h \
     xpcom/glue/nsCOMPtr.h \
     xpcom/base/OwningNonNull.h \
     ipc/ipdl/ipdl/lower.py \
     ipc/ipdl/ipdl/builtin.py \
     dom/bindings/Codegen.py \
     python/lldbutils/lldbutils/utils.py

 # In our indiscriminate substitution above, we renamed
 # nsRefPtrGetterAddRefs, the class behind getter_AddRefs.  Fix that up.
find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \
    xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g'

if [ -d .git ]; then
    git mv mfbt/nsRefPtr.h mfbt/RefPtr.h
else
    hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h
fi
2015-10-18 01:24:48 -04:00
Masayuki Nakano
360b73b0a8 Bug 1205945 part.6 IMEInputHandler::GetAttributedSubstringFromRange() should return stored composition string if the range is in the composition string r=smichaud 2015-09-19 11:01:57 +09:00
Masayuki Nakano
289c32c551 Bug 1205945 part.5 Emulate mSelectedRange at dispatching compositionchange or compositioncommit event until OnSelectionChange() is called r=smichaud 2015-09-19 11:01:57 +09:00
Masayuki Nakano
2e47c96f1e Bug 1205945 part.4 Move the code of OnEndIMEComposition() into DispatchCompositionCommitEvent() r=smichaud 2015-09-19 11:01:57 +09:00
Masayuki Nakano
c92e880b2f Bug 1205945 part.3 Move the code of OnUpdateIMEComposition() into DispatchCompositionChangeEvent() r=smichaud 2015-09-19 11:01:57 +09:00