Index: chrome/browser/renderer_host/render_widget_host_view_mac.h |
diff --git a/chrome/browser/renderer_host/render_widget_host_view_mac.h b/chrome/browser/renderer_host/render_widget_host_view_mac.h |
index 5fa2d6829bfde56227ba9ab3f4633d5439de1feb..d79b0f16e80aecbd5149b36cc8c7ce5e75c954c5 100644 |
--- a/chrome/browser/renderer_host/render_widget_host_view_mac.h |
+++ b/chrome/browser/renderer_host/render_widget_host_view_mac.h |
@@ -45,21 +45,62 @@ class RWHVMEditCommandHelper; |
NSTrackingRectTag lastToolTipTag_; |
scoped_nsobject<NSString> toolTip_; |
- // Set to YES if insertText: or insertNewline: get called. |
- BOOL textInserted_; |
- |
// Is YES if there was a mouse-down as yet unbalanced with a mouse-up. |
BOOL hasOpenMouseDown_; |
- // Keep current key event when keyEvent: gets called. It's used in |
- // insertText: and insertNewline: to synthesize the corresponding Char event. |
- scoped_nsobject<NSEvent> currentKeyEvent_; |
NSWindow* lastWindow_; // weak |
// The Core Animation layer, if any, hosting the accelerated plugins' output. |
scoped_nsobject<CALayer> acceleratedPluginLayer_; |
+ |
+ // Variables used by our implementaion of the NSTextInput protocol. |
+ // An input method of Mac calls the methods of this protocol not only to |
+ // notify an application of its status, but also to retrieve the status of |
+ // the application. That is, an application cannot control an input method |
+ // directly. |
+ // This object keeps the status of a composition of the renderer and returns |
+ // it when an input method asks for it. |
+ // We need to implement Objective-C methods for the NSTextInput protocol. On |
+ // the other hand, we need to implement a C++ method for an IPC-message |
+ // handler which receives input-method events from the renderer. |
+ |
+ // Represents the input-method attributes supported by this object. |
+ scoped_nsobject<NSArray> validAttributesForMarkedText_; |
+ |
+ // Represents the cursor position in this view coordinate. |
+ // The renderer sends the cursor position through an IPC message. |
+ // We save the latest cursor position here and return it when an input |
+ // methods needs it. |
+ NSRect caretRect_; |
+ |
+ // Indicates if we are currently handling a key down event. |
+ BOOL handlingKeyDown_; |
+ |
+ // Indicates if there is any marked text. |
+ BOOL hasMarkedText_; |
+ |
+ // The range of current marked text inside the whole content of the DOM node |
+ // being edited. |
+ // TODO(suzhe): This is currently a fake value, as we do not support accessing |
+ // the whole content yet. |
+ NSRange markedRange_; |
+ |
+ // The selected range inside current marked text. |
+ // TODO(suzhe): Currently it's only valid when there is any marked text. |
+ // In the future, we may need to support accessing the whole content of the |
+ // DOM node being edited, then this should be the selected range inside the |
+ // DOM node. |
+ NSRange selectedRange_; |
+ |
+ // Text to be inserted which was generated by handling a key down event. |
+ string16 textToBeInserted_; |
+ |
+ // New marked text which was generated by handling a key down event. |
+ string16 newMarkedText_; |
} |
+@property(assign, nonatomic) NSRect caretRect; |
+ |
- (void)setCanBeKeyView:(BOOL)can; |
- (void)setCloseOnDeactivate:(BOOL)b; |
- (void)setToolTipAtMousePoint:(NSString *)string; |
@@ -76,6 +117,8 @@ class RWHVMEditCommandHelper; |
// Notify the RenderWidgetHost that the frame was updated so it can resize |
// its contents. |
- (void)renderWidgetHostWasResized; |
+// Cancel ongoing composition (abandon the marked text). |
+- (void)cancelComposition; |
@end |
@@ -169,11 +212,6 @@ class RenderWidgetHostViewMac : public RenderWidgetHostView { |
void set_parent_view(BaseView* parent_view) { parent_view_ = parent_view; } |
- // Cancels the ongoing composition and cleans up all input-method resources. |
- // This function dispatches a cancelation request from a renderer to |
- // NSInputManager to synchronize the input-method status with it. |
- void IMECleanupComposition(); |
- |
// These member variables should be private, but the associated ObjC class |
// needs access to them and can't be made a friend. |
@@ -203,48 +241,6 @@ class RenderWidgetHostViewMac : public RenderWidgetHostView { |
// The time it took after this view was selected for it to be fully painted. |
base::TimeTicks tab_switch_paint_time_; |
- // Variables used by our implementaion of the NSTextInput protocol. |
- // An input method of Mac calls the methods of this protocol not only to |
- // notify an application of its status, but also to retrieve the status of |
- // the application. That is, an application cannot control an input method |
- // directly. |
- // This object keeps the status of a composition of the renderer and returns |
- // it when an input method asks for it. |
- // We need to implement Objective-C methods for the NSTextInput protocol. On |
- // the other hand, we need to implement a C++ method for an IPC-message |
- // handler which receives input-method events from the renderer. |
- // To avoid fragmentation of variables used by our input-method |
- // implementation, we define all variables as public member variables of |
- // this C++ class so both the C++ methods and the Objective-C methods can |
- // access them. |
- |
- // Represents the input-method attributes supported by this object. |
- NSArray* im_attributes_; |
- |
- // Represents whether or not an input method is composing a text. |
- bool im_composing_; |
- |
- // Represents the composition string (i.e. a text being composed by an input |
- // method), its range, and the range of the selected text in the composition |
- // string. |
- string16 im_text_; |
- NSRange im_marked_range_; |
- NSRange im_selected_range_; |
- |
- // Represents the state of modifier keys. |
- // An input method doesn't notify the state of modifier keys. On the other |
- // hand, the state of modifier keys are required by Char events because they |
- // are dispatched to onkeypress() event handlers of JavaScript. |
- // To create a Char event in NSTextInput methods, we save the latest state |
- // of modifier keys when we receive it. |
- int im_modifiers_; |
- |
- // Represents the cursor position in this view coordinate. |
- // The renderer sends the cursor position through an IPC message. |
- // We save the latest cursor position here and return it when an input |
- // methods needs it. |
- NSRect im_caret_rect_; |
- |
private: |
// Updates the display cursor to the current cursor if the cursor is over this |
// render view. |