mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-01-20 05:38:03 +01:00
dea4daffd7
This implementation supports both GPU compositing and software compositing (used when GPU is not supported or when passing `--disable-gpu --disable-gpu-compositing` command-line flags). GPU-accelerated features (WebGL and 3D CSS) that did not work with the previous off-screen rendering implementation do work with this implementation when GPU support is available. Rendering now operates on a per-frame basis. The frame rate is configurable via CefBrowserSettings.windowless_frame_rate up to a maximum of 60fps (potentially limited by how fast the system can generate new frames). CEF generates a bitmap from the compositor backing and passes it to CefRenderHandler::OnPaint. The previous CefRenderHandler/CefBrowserHost API for off-screen rendering has been restored mostly as-is with some minor changes: - CefBrowserHost::Invalidate no longer accepts a CefRect region argument. Instead of invalidating a specific region it now triggers generation of a new frame. - The |dirtyRects| argument to CefRenderHandler::OnPaint will now always be a single CefRect representing the whole view (frame) size. Previously, invalidated regions were listed separately. - Linux: CefBrowserHost::SendKeyEvent now expects X11 event information instead of GTK event information. See cefclient for an example of converting GTK events to the necessary format. - Sizes passed to the CefRenderHandler OnPaint and OnPopupSize methods are now already DPI scaled. Previously, the client had to perform DPI scaling. - Includes drag&drop implementation from issue #1032. - Includes unit test fixes from issue #1245. git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@1751 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
90 lines
2.9 KiB
Objective-C
90 lines
2.9 KiB
Objective-C
// Copyright (c) 2013 The Chromium Embedded Framework Authors. All rights
|
|
// reserved. Use of this source code is governed by a BSD-style license that
|
|
// can be found in the LICENSE file.
|
|
|
|
#ifndef CEF_LIBCEF_BROWSER_TEXT_INPUT_CLIENT_OSR_MAC_H_
|
|
#define CEF_LIBCEF_BROWSER_TEXT_INPUT_CLIENT_OSR_MAC_H_
|
|
#pragma once
|
|
|
|
#import <Cocoa/Cocoa.h>
|
|
#include <vector>
|
|
|
|
#include "libcef/browser/render_widget_host_view_osr.h"
|
|
|
|
#include "base/mac/scoped_nsobject.h"
|
|
#include "base/strings/string16.h"
|
|
#include "content/browser/renderer_host/render_widget_host_impl.h"
|
|
#include "content/common/edit_command.h"
|
|
#include "third_party/WebKit/public/web/WebCompositionUnderline.h"
|
|
|
|
// Implementation for the NSTextInputClient protocol used for enabling IME on
|
|
// mac when window rendering is disabled.
|
|
|
|
@interface CefTextInputClientOSRMac : NSObject<NSTextInputClient> {
|
|
|
|
@public
|
|
// The range of current marked text inside the whole content of the DOM node
|
|
// being edited.
|
|
NSRange markedRange_;
|
|
|
|
// The current composition character range and its bounds.
|
|
gfx::Range composition_range_;
|
|
std::vector<gfx::Rect> composition_bounds_;
|
|
|
|
// The current caret bounds.
|
|
gfx::Rect caret_rect_;
|
|
|
|
@private
|
|
// Represents the input-method attributes supported by this object.
|
|
base::scoped_nsobject<NSArray> validAttributesForMarkedText_;
|
|
|
|
// Indicates if we are currently handling a key down event.
|
|
BOOL handlingKeyDown_;
|
|
|
|
// Indicates if there is any marked text.
|
|
BOOL hasMarkedText_;
|
|
|
|
// Indicates whether there was any marked text prior to handling
|
|
// the current key event.
|
|
BOOL oldHasMarkedText_;
|
|
|
|
// Indicates if unmarkText is called or not when handling a keyboard
|
|
// event.
|
|
BOOL unmarkTextCalled_;
|
|
|
|
// The selected range, cached from a message sent by the renderer.
|
|
NSRange selectedRange_;
|
|
|
|
// Text to be inserted which was generated by handling a key down event.
|
|
base::string16 textToBeInserted_;
|
|
|
|
// Marked text which was generated by handling a key down event.
|
|
base::string16 markedText_;
|
|
|
|
// Underline information of the |markedText_|.
|
|
std::vector<blink::WebCompositionUnderline> underlines_;
|
|
|
|
// Indicates if doCommandBySelector method receives any edit command when
|
|
// handling a key down event.
|
|
BOOL hasEditCommands_;
|
|
|
|
// Contains edit commands received by the -doCommandBySelector: method when
|
|
// handling a key down event, not including inserting commands, eg. insertTab,
|
|
// etc.
|
|
content::EditCommands editCommands_;
|
|
|
|
CefRenderWidgetHostViewOSR* renderWidgetHostView_;
|
|
}
|
|
|
|
@property(nonatomic, readonly) NSRange selectedRange;
|
|
@property(nonatomic) BOOL handlingKeyDown;
|
|
|
|
- (id)initWithRenderWidgetHostViewOSR:(CefRenderWidgetHostViewOSR*) rwhv;
|
|
- (void)HandleKeyEventBeforeTextInputClient:(NSEvent*)keyEvent;
|
|
- (void)HandleKeyEventAfterTextInputClient:(NSEvent*)keyEvent;
|
|
- (void)cancelComposition;
|
|
|
|
@end
|
|
|
|
#endif // CEF_LIBCEF_BROWSER_TEXT_INPUT_CLIENT_OSR_MAC_H_
|