Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(166)

Unified Diff: ui/views/win/hwnd_message_handler.h

Issue 851853002: It is time. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Trying to reup because the last upload failed. Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/views/win/fullscreen_handler.cc ('k') | ui/views/win/hwnd_message_handler.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/views/win/hwnd_message_handler.h
diff --git a/ui/views/win/hwnd_message_handler.h b/ui/views/win/hwnd_message_handler.h
deleted file mode 100644
index 86d3d526cda53e108c1b2c418f042da28732cbb8..0000000000000000000000000000000000000000
--- a/ui/views/win/hwnd_message_handler.h
+++ /dev/null
@@ -1,636 +0,0 @@
-// Copyright (c) 2012 The Chromium 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 UI_VIEWS_WIN_HWND_MESSAGE_HANDLER_H_
-#define UI_VIEWS_WIN_HWND_MESSAGE_HANDLER_H_
-
-#include <windows.h>
-
-#include <set>
-#include <vector>
-
-#include "base/basictypes.h"
-#include "base/compiler_specific.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/memory/weak_ptr.h"
-#include "base/strings/string16.h"
-#include "base/win/scoped_gdi_object.h"
-#include "base/win/win_util.h"
-#include "ui/accessibility/ax_enums.h"
-#include "ui/base/ui_base_types.h"
-#include "ui/base/win/window_event_target.h"
-#include "ui/events/event.h"
-#include "ui/gfx/rect.h"
-#include "ui/gfx/sequential_id_generator.h"
-#include "ui/gfx/win/window_impl.h"
-#include "ui/views/ime/input_method_delegate.h"
-#include "ui/views/views_export.h"
-
-namespace gfx {
-class Canvas;
-class ImageSkia;
-class Insets;
-}
-
-namespace ui {
-class ViewProp;
-}
-
-namespace views {
-
-class FullscreenHandler;
-class HWNDMessageHandlerDelegate;
-class InputMethod;
-
-// These two messages aren't defined in winuser.h, but they are sent to windows
-// with captions. They appear to paint the window caption and frame.
-// Unfortunately if you override the standard non-client rendering as we do
-// with CustomFrameWindow, sometimes Windows (not deterministically
-// reproducibly but definitely frequently) will send these messages to the
-// window and paint the standard caption/title over the top of the custom one.
-// So we need to handle these messages in CustomFrameWindow to prevent this
-// from happening.
-const int WM_NCUAHDRAWCAPTION = 0xAE;
-const int WM_NCUAHDRAWFRAME = 0xAF;
-
-// IsMsgHandled() and BEGIN_SAFE_MSG_MAP_EX are a modified version of
-// BEGIN_MSG_MAP_EX. The main difference is it adds a WeakPtrFactory member
-// (|weak_factory_|) that is used in _ProcessWindowMessage() and changing
-// IsMsgHandled() from a member function to a define that checks if the weak
-// factory is still valid in addition to the member. Together these allow for
-// |this| to be deleted during dispatch.
-#define IsMsgHandled() !ref.get() || msg_handled_
-
-#define BEGIN_SAFE_MSG_MAP_EX(the_class) \
- private: \
- base::WeakPtrFactory<the_class> weak_factory_; \
- BOOL msg_handled_; \
-\
- public: \
- /* "handled" management for cracked handlers */ \
- void SetMsgHandled(BOOL handled) { \
- msg_handled_ = handled; \
- } \
- BOOL ProcessWindowMessage(HWND hwnd, \
- UINT msg, \
- WPARAM w_param, \
- LPARAM l_param, \
- LRESULT& l_result, \
- DWORD msg_map_id = 0) { \
- base::WeakPtr<HWNDMessageHandler> ref(weak_factory_.GetWeakPtr()); \
- BOOL old_msg_handled = msg_handled_; \
- BOOL ret = _ProcessWindowMessage(hwnd, msg, w_param, l_param, l_result, \
- msg_map_id); \
- if (ref.get()) \
- msg_handled_ = old_msg_handled; \
- return ret; \
- } \
- BOOL _ProcessWindowMessage(HWND hWnd, \
- UINT uMsg, \
- WPARAM wParam, \
- LPARAM lParam, \
- LRESULT& lResult, \
- DWORD dwMsgMapID) { \
- base::WeakPtr<HWNDMessageHandler> ref(weak_factory_.GetWeakPtr()); \
- BOOL bHandled = TRUE; \
- hWnd; \
- uMsg; \
- wParam; \
- lParam; \
- lResult; \
- bHandled; \
- switch(dwMsgMapID) { \
- case 0:
-
-// An object that handles messages for a HWND that implements the views
-// "Custom Frame" look. The purpose of this class is to isolate the windows-
-// specific message handling from the code that wraps it. It is intended to be
-// used by both a views::NativeWidget and an aura::WindowTreeHost
-// implementation.
-// TODO(beng): This object should eventually *become* the WindowImpl.
-class VIEWS_EXPORT HWNDMessageHandler :
- public gfx::WindowImpl,
- public internal::InputMethodDelegate,
- public ui::WindowEventTarget {
- public:
- explicit HWNDMessageHandler(HWNDMessageHandlerDelegate* delegate);
- ~HWNDMessageHandler();
-
- void Init(HWND parent, const gfx::Rect& bounds);
- void InitModalType(ui::ModalType modal_type);
-
- void Close();
- void CloseNow();
-
- gfx::Rect GetWindowBoundsInScreen() const;
- gfx::Rect GetClientAreaBoundsInScreen() const;
- gfx::Rect GetRestoredBounds() const;
- // This accounts for the case where the widget size is the client size.
- gfx::Rect GetClientAreaBounds() const;
-
- void GetWindowPlacement(gfx::Rect* bounds,
- ui::WindowShowState* show_state) const;
-
- // Sets the bounds of the HWND to |bounds_in_pixels|. If the HWND size is not
- // changed, |force_size_changed| determines if we should pretend it is.
- void SetBounds(const gfx::Rect& bounds_in_pixels, bool force_size_changed);
-
- void SetSize(const gfx::Size& size);
- void CenterWindow(const gfx::Size& size);
-
- void SetRegion(HRGN rgn);
-
- void StackAbove(HWND other_hwnd);
- void StackAtTop();
-
- void Show();
- void ShowWindowWithState(ui::WindowShowState show_state);
- void ShowMaximizedWithBounds(const gfx::Rect& bounds);
- void Hide();
-
- void Maximize();
- void Minimize();
- void Restore();
-
- void Activate();
- void Deactivate();
-
- void SetAlwaysOnTop(bool on_top);
-
- bool IsVisible() const;
- bool IsActive() const;
- bool IsMinimized() const;
- bool IsMaximized() const;
- bool IsAlwaysOnTop() const;
-
- bool RunMoveLoop(const gfx::Vector2d& drag_offset, bool hide_on_escape);
- void EndMoveLoop();
-
- // Tells the HWND its client area has changed.
- void SendFrameChanged();
-
- void FlashFrame(bool flash);
-
- void ClearNativeFocus();
-
- void SetCapture();
- void ReleaseCapture();
- bool HasCapture() const;
-
- FullscreenHandler* fullscreen_handler() { return fullscreen_handler_.get(); }
-
- void SetVisibilityChangedAnimationsEnabled(bool enabled);
-
- // Returns true if the title changed.
- bool SetTitle(const base::string16& title);
-
- void SetCursor(HCURSOR cursor);
-
- void FrameTypeChanged();
-
- void SchedulePaintInRect(const gfx::Rect& rect);
- void SetOpacity(BYTE opacity);
-
- void SetWindowIcons(const gfx::ImageSkia& window_icon,
- const gfx::ImageSkia& app_icon);
-
- void set_remove_standard_frame(bool remove_standard_frame) {
- remove_standard_frame_ = remove_standard_frame;
- }
-
- void set_use_system_default_icon(bool use_system_default_icon) {
- use_system_default_icon_ = use_system_default_icon;
- }
-
- void SetFullscreen(bool fullscreen);
-
- // Updates the window style to reflect whether it can be resized or maximized.
- void SizeConstraintsChanged();
-
- private:
- typedef std::set<DWORD> TouchIDs;
-
- // Overridden from internal::InputMethodDelegate:
- virtual void DispatchKeyEventPostIME(const ui::KeyEvent& key) override;
-
- // Overridden from WindowImpl:
- virtual HICON GetDefaultWindowIcon() const override;
- virtual LRESULT OnWndProc(UINT message,
- WPARAM w_param,
- LPARAM l_param) override;
-
- // Overridden from WindowEventTarget
- virtual LRESULT HandleMouseMessage(unsigned int message,
- WPARAM w_param,
- LPARAM l_param,
- bool* handled) override;
- virtual LRESULT HandleKeyboardMessage(unsigned int message,
- WPARAM w_param,
- LPARAM l_param,
- bool* handled) override;
- virtual LRESULT HandleTouchMessage(unsigned int message,
- WPARAM w_param,
- LPARAM l_param,
- bool* handled) override;
-
- virtual LRESULT HandleScrollMessage(unsigned int message,
- WPARAM w_param,
- LPARAM l_param,
- bool* handled) override;
-
- virtual LRESULT HandleNcHitTestMessage(unsigned int message,
- WPARAM w_param,
- LPARAM l_param,
- bool* handled) override;
-
- // Returns the auto-hide edges of the appbar. See
- // ViewsDelegate::GetAppbarAutohideEdges() for details. If the edges change,
- // OnAppbarAutohideEdgesChanged() is called.
- int GetAppbarAutohideEdges(HMONITOR monitor);
-
- // Callback if the autohide edges have changed. See
- // ViewsDelegate::GetAppbarAutohideEdges() for details.
- void OnAppbarAutohideEdgesChanged();
-
- // Can be called after the delegate has had the opportunity to set focus and
- // did not do so.
- void SetInitialFocus();
-
- // Called after the WM_ACTIVATE message has been processed by the default
- // windows procedure.
- void PostProcessActivateMessage(int activation_state, bool minimized);
-
- // Enables disabled owner windows that may have been disabled due to this
- // window's modality.
- void RestoreEnabledIfNecessary();
-
- // Executes the specified SC_command.
- void ExecuteSystemMenuCommand(int command);
-
- // Start tracking all mouse events so that this window gets sent mouse leave
- // messages too.
- void TrackMouseEvents(DWORD mouse_tracking_flags);
-
- // Responds to the client area changing size, either at window creation time
- // or subsequently.
- void ClientAreaSizeChanged();
-
- // Returns the insets of the client area relative to the non-client area of
- // the window.
- bool GetClientAreaInsets(gfx::Insets* insets) const;
-
- // Resets the window region for the current widget bounds if necessary.
- // If |force| is true, the window region is reset to NULL even for native
- // frame windows.
- void ResetWindowRegion(bool force, bool redraw);
-
- // Enables or disables rendering of the non-client (glass) area by DWM,
- // under Vista and above, depending on whether the caller has requested a
- // custom frame.
- void UpdateDwmNcRenderingPolicy();
-
- // Calls DefWindowProc, safely wrapping the call in a ScopedRedrawLock to
- // prevent frame flicker. DefWindowProc handling can otherwise render the
- // classic-look window title bar directly.
- LRESULT DefWindowProcWithRedrawLock(UINT message,
- WPARAM w_param,
- LPARAM l_param);
-
- // Lock or unlock the window from being able to redraw itself in response to
- // updates to its invalid region.
- class ScopedRedrawLock;
- void LockUpdates(bool force);
- void UnlockUpdates(bool force);
-
- // Stops ignoring SetWindowPos() requests (see below).
- void StopIgnoringPosChanges() { ignore_window_pos_changes_ = false; }
-
- // Synchronously updates the invalid contents of the Widget. Valid for
- // layered windows only.
- void RedrawLayeredWindowContents();
-
- // Attempts to force the window to be redrawn, ensuring that it gets
- // onscreen.
- void ForceRedrawWindow(int attempts);
-
- // Message Handlers ----------------------------------------------------------
-
- BEGIN_SAFE_MSG_MAP_EX(HWNDMessageHandler)
- // Range handlers must go first!
- CR_MESSAGE_RANGE_HANDLER_EX(WM_MOUSEFIRST, WM_MOUSELAST, OnMouseRange)
- CR_MESSAGE_RANGE_HANDLER_EX(WM_NCMOUSEMOVE,
- WM_NCXBUTTONDBLCLK,
- OnMouseRange)
-
- // CustomFrameWindow hacks
- CR_MESSAGE_HANDLER_EX(WM_NCUAHDRAWCAPTION, OnNCUAHDrawCaption)
- CR_MESSAGE_HANDLER_EX(WM_NCUAHDRAWFRAME, OnNCUAHDrawFrame)
-
- // Vista and newer
- CR_MESSAGE_HANDLER_EX(WM_DWMCOMPOSITIONCHANGED, OnDwmCompositionChanged)
-
- // Non-atlcrack.h handlers
- CR_MESSAGE_HANDLER_EX(WM_GETOBJECT, OnGetObject)
-
- // Mouse events.
- CR_MESSAGE_HANDLER_EX(WM_MOUSEACTIVATE, OnMouseActivate)
- CR_MESSAGE_HANDLER_EX(WM_MOUSELEAVE, OnMouseRange)
- CR_MESSAGE_HANDLER_EX(WM_NCMOUSELEAVE, OnMouseRange)
- CR_MESSAGE_HANDLER_EX(WM_SETCURSOR, OnSetCursor);
-
- // Key events.
- CR_MESSAGE_HANDLER_EX(WM_KEYDOWN, OnKeyEvent)
- CR_MESSAGE_HANDLER_EX(WM_KEYUP, OnKeyEvent)
- CR_MESSAGE_HANDLER_EX(WM_SYSKEYDOWN, OnKeyEvent)
- CR_MESSAGE_HANDLER_EX(WM_SYSKEYUP, OnKeyEvent)
-
- // IME Events.
- CR_MESSAGE_HANDLER_EX(WM_IME_SETCONTEXT, OnImeMessages)
- CR_MESSAGE_HANDLER_EX(WM_IME_STARTCOMPOSITION, OnImeMessages)
- CR_MESSAGE_HANDLER_EX(WM_IME_COMPOSITION, OnImeMessages)
- CR_MESSAGE_HANDLER_EX(WM_IME_ENDCOMPOSITION, OnImeMessages)
- CR_MESSAGE_HANDLER_EX(WM_IME_REQUEST, OnImeMessages)
- CR_MESSAGE_HANDLER_EX(WM_IME_NOTIFY, OnImeMessages)
- CR_MESSAGE_HANDLER_EX(WM_CHAR, OnImeMessages)
- CR_MESSAGE_HANDLER_EX(WM_SYSCHAR, OnImeMessages)
-
- // Scroll events
- CR_MESSAGE_HANDLER_EX(WM_VSCROLL, OnScrollMessage)
- CR_MESSAGE_HANDLER_EX(WM_HSCROLL, OnScrollMessage)
-
- // Touch Events.
- CR_MESSAGE_HANDLER_EX(WM_TOUCH, OnTouchEvent)
-
- // Uses the general handler macro since the specific handler macro
- // MSG_WM_NCACTIVATE would convert WPARAM type to BOOL type. The high
- // word of WPARAM could be set when the window is minimized or restored.
- CR_MESSAGE_HANDLER_EX(WM_NCACTIVATE, OnNCActivate)
-
- // This list is in _ALPHABETICAL_ order! OR I WILL HURT YOU.
- CR_MSG_WM_ACTIVATEAPP(OnActivateApp)
- CR_MSG_WM_APPCOMMAND(OnAppCommand)
- CR_MSG_WM_CANCELMODE(OnCancelMode)
- CR_MSG_WM_CAPTURECHANGED(OnCaptureChanged)
- CR_MSG_WM_CLOSE(OnClose)
- CR_MSG_WM_COMMAND(OnCommand)
- CR_MSG_WM_CREATE(OnCreate)
- CR_MSG_WM_DESTROY(OnDestroy)
- CR_MSG_WM_DISPLAYCHANGE(OnDisplayChange)
- CR_MSG_WM_ENTERMENULOOP(OnEnterMenuLoop)
- CR_MSG_WM_EXITMENULOOP(OnExitMenuLoop)
- CR_MSG_WM_ENTERSIZEMOVE(OnEnterSizeMove)
- CR_MSG_WM_ERASEBKGND(OnEraseBkgnd)
- CR_MSG_WM_EXITSIZEMOVE(OnExitSizeMove)
- CR_MSG_WM_GETMINMAXINFO(OnGetMinMaxInfo)
- CR_MSG_WM_INITMENU(OnInitMenu)
- CR_MSG_WM_INPUTLANGCHANGE(OnInputLangChange)
- CR_MSG_WM_KILLFOCUS(OnKillFocus)
- CR_MSG_WM_MOVE(OnMove)
- CR_MSG_WM_MOVING(OnMoving)
- CR_MSG_WM_NCCALCSIZE(OnNCCalcSize)
- CR_MSG_WM_NCHITTEST(OnNCHitTest)
- CR_MSG_WM_NCPAINT(OnNCPaint)
- CR_MSG_WM_NOTIFY(OnNotify)
- CR_MSG_WM_PAINT(OnPaint)
- CR_MSG_WM_SETFOCUS(OnSetFocus)
- CR_MSG_WM_SETICON(OnSetIcon)
- CR_MSG_WM_SETTEXT(OnSetText)
- CR_MSG_WM_SETTINGCHANGE(OnSettingChange)
- CR_MSG_WM_SIZE(OnSize)
- CR_MSG_WM_SYSCOMMAND(OnSysCommand)
- CR_MSG_WM_THEMECHANGED(OnThemeChanged)
- CR_MSG_WM_WINDOWPOSCHANGED(OnWindowPosChanged)
- CR_MSG_WM_WINDOWPOSCHANGING(OnWindowPosChanging)
- CR_MSG_WM_WTSSESSION_CHANGE(OnSessionChange)
- CR_END_MSG_MAP()
-
- // Message Handlers.
- // This list is in _ALPHABETICAL_ order!
- // TODO(beng): Once this object becomes the WindowImpl, these methods can
- // be made private.
- void OnActivateApp(BOOL active, DWORD thread_id);
- // TODO(beng): return BOOL is temporary until this object becomes a
- // WindowImpl.
- BOOL OnAppCommand(HWND window, short command, WORD device, int keystate);
- void OnCancelMode();
- void OnCaptureChanged(HWND window);
- void OnClose();
- void OnCommand(UINT notification_code, int command, HWND window);
- LRESULT OnCreate(CREATESTRUCT* create_struct);
- void OnDestroy();
- void OnDisplayChange(UINT bits_per_pixel, const gfx::Size& screen_size);
- LRESULT OnDwmCompositionChanged(UINT msg, WPARAM w_param, LPARAM l_param);
- void OnEnterMenuLoop(BOOL from_track_popup_menu);
- void OnEnterSizeMove();
- LRESULT OnEraseBkgnd(HDC dc);
- void OnExitMenuLoop(BOOL is_shortcut_menu);
- void OnExitSizeMove();
- void OnGetMinMaxInfo(MINMAXINFO* minmax_info);
- LRESULT OnGetObject(UINT message, WPARAM w_param, LPARAM l_param);
- LRESULT OnImeMessages(UINT message, WPARAM w_param, LPARAM l_param);
- void OnInitMenu(HMENU menu);
- void OnInputLangChange(DWORD character_set, HKL input_language_id);
- LRESULT OnKeyEvent(UINT message, WPARAM w_param, LPARAM l_param);
- void OnKillFocus(HWND focused_window);
- LRESULT OnMouseActivate(UINT message, WPARAM w_param, LPARAM l_param);
- LRESULT OnMouseRange(UINT message, WPARAM w_param, LPARAM l_param);
- void OnMove(const gfx::Point& point);
- void OnMoving(UINT param, const RECT* new_bounds);
- LRESULT OnNCActivate(UINT message, WPARAM w_param, LPARAM l_param);
- LRESULT OnNCCalcSize(BOOL mode, LPARAM l_param);
- LRESULT OnNCHitTest(const gfx::Point& point);
- void OnNCPaint(HRGN rgn);
- LRESULT OnNCUAHDrawCaption(UINT message, WPARAM w_param, LPARAM l_param);
- LRESULT OnNCUAHDrawFrame(UINT message, WPARAM w_param, LPARAM l_param);
- LRESULT OnNotify(int w_param, NMHDR* l_param);
- void OnPaint(HDC dc);
- LRESULT OnReflectedMessage(UINT message, WPARAM w_param, LPARAM l_param);
- LRESULT OnScrollMessage(UINT message, WPARAM w_param, LPARAM l_param);
- void OnSessionChange(WPARAM status_code, PWTSSESSION_NOTIFICATION session_id);
- LRESULT OnSetCursor(UINT message, WPARAM w_param, LPARAM l_param);
- void OnSetFocus(HWND last_focused_window);
- LRESULT OnSetIcon(UINT size_type, HICON new_icon);
- LRESULT OnSetText(const wchar_t* text);
- void OnSettingChange(UINT flags, const wchar_t* section);
- void OnSize(UINT param, const gfx::Size& size);
- void OnSysCommand(UINT notification_code, const gfx::Point& point);
- void OnThemeChanged();
- LRESULT OnTouchEvent(UINT message, WPARAM w_param, LPARAM l_param);
- void OnWindowPosChanging(WINDOWPOS* window_pos);
- void OnWindowPosChanged(WINDOWPOS* window_pos);
-
- typedef std::vector<ui::TouchEvent> TouchEvents;
- // Helper to handle the list of touch events passed in. We need this because
- // touch events on windows don't fire if we enter a modal loop in the context
- // of a touch event.
- void HandleTouchEvents(const TouchEvents& touch_events);
-
- // Resets the flag which indicates that we are in the context of a touch down
- // event.
- void ResetTouchDownContext();
-
- // Helper to handle mouse events.
- // The |message|, |w_param|, |l_param| parameters identify the Windows mouse
- // message and its parameters respectively.
- // The |track_mouse| parameter indicates if we should track the mouse.
- LRESULT HandleMouseEventInternal(UINT message,
- WPARAM w_param,
- LPARAM l_param,
- bool track_mouse);
-
- // Returns true if the mouse message passed in is an OS synthesized mouse
- // message.
- // |message| identifies the mouse message.
- // |message_time| is the time when the message occurred.
- // |l_param| indicates the location of the mouse message.
- bool IsSynthesizedMouseMessage(unsigned int message,
- int message_time,
- LPARAM l_param);
-
- // Provides functionality to transition a frame to DWM.
- void PerformDwmTransition();
-
- HWNDMessageHandlerDelegate* delegate_;
-
- scoped_ptr<FullscreenHandler> fullscreen_handler_;
-
- // Set to true in Close() and false is CloseNow().
- bool waiting_for_close_now_;
-
- bool remove_standard_frame_;
-
- bool use_system_default_icon_;
-
- // Whether all ancestors have been enabled. This is only used if is_modal_ is
- // true.
- bool restored_enabled_;
-
- // The current cursor.
- HCURSOR current_cursor_;
-
- // The last cursor that was active before the current one was selected. Saved
- // so that we can restore it.
- HCURSOR previous_cursor_;
-
- // Event handling ------------------------------------------------------------
-
- // The flags currently being used with TrackMouseEvent to track mouse
- // messages. 0 if there is no active tracking. The value of this member is
- // used when tracking is canceled.
- DWORD active_mouse_tracking_flags_;
-
- // Set to true when the user presses the right mouse button on the caption
- // area. We need this so we can correctly show the context menu on mouse-up.
- bool is_right_mouse_pressed_on_caption_;
-
- // The set of touch devices currently down.
- TouchIDs touch_ids_;
-
- // ScopedRedrawLock ----------------------------------------------------------
-
- // Represents the number of ScopedRedrawLocks active against this widget.
- // If this is greater than zero, the widget should be locked against updates.
- int lock_updates_count_;
-
- // Window resizing -----------------------------------------------------------
-
- // When true, this flag makes us discard incoming SetWindowPos() requests that
- // only change our position/size. (We still allow changes to Z-order,
- // activation, etc.)
- bool ignore_window_pos_changes_;
-
- // The last-seen monitor containing us, and its rect and work area. These are
- // used to catch updates to the rect and work area and react accordingly.
- HMONITOR last_monitor_;
- gfx::Rect last_monitor_rect_, last_work_area_;
-
- // Layered windows -----------------------------------------------------------
-
- // Should we keep an off-screen buffer? This is false by default, set to true
- // when WS_EX_LAYERED is specified before the native window is created.
- //
- // NOTE: this is intended to be used with a layered window (a window with an
- // extended window style of WS_EX_LAYERED). If you are using a layered window
- // and NOT changing the layered alpha or anything else, then leave this value
- // alone. OTOH if you are invoking SetLayeredWindowAttributes then you'll
- // most likely want to set this to false, or after changing the alpha toggle
- // the extended style bit to false than back to true. See MSDN for more
- // details.
- bool use_layered_buffer_;
-
- // The default alpha to be applied to the layered window.
- BYTE layered_alpha_;
-
- // A canvas that contains the window contents in the case of a layered
- // window.
- scoped_ptr<gfx::Canvas> layered_window_contents_;
-
- // We must track the invalid rect ourselves, for two reasons:
- // For layered windows, Windows will not do this properly with
- // InvalidateRect()/GetUpdateRect(). (In fact, it'll return misleading
- // information from GetUpdateRect()).
- // We also need to keep track of the invalid rectangle for the RootView should
- // we need to paint the non-client area. The data supplied to WM_NCPAINT seems
- // to be insufficient.
- gfx::Rect invalid_rect_;
-
- // Set to true when waiting for RedrawLayeredWindowContents().
- bool waiting_for_redraw_layered_window_contents_;
-
- // True the first time nccalc is called on a sizable widget
- bool is_first_nccalc_;
-
- // Copy of custom window region specified via SetRegion(), if any.
- base::win::ScopedRegion custom_window_region_;
-
- // If > 0 indicates a menu is running (we're showing a native menu).
- int menu_depth_;
-
- // A factory used to lookup appbar autohide edges.
- base::WeakPtrFactory<HWNDMessageHandler> autohide_factory_;
-
- // Generates touch-ids for touch-events.
- ui::SequentialIDGenerator id_generator_;
-
- // Indicates if the window needs the WS_VSCROLL and WS_HSCROLL styles.
- bool needs_scroll_styles_;
-
- // Set to true if we are in the context of a sizing operation.
- bool in_size_loop_;
-
- // Stores a pointer to the WindowEventTarget interface implemented by this
- // class. Allows callers to retrieve the interface pointer.
- scoped_ptr<ui::ViewProp> prop_window_target_;
-
- // Number of active touch down contexts. This is incremented on touch down
- // events and decremented later using a delayed task.
- // We need this to ignore WM_MOUSEACTIVATE messages generated in response to
- // touch input. This is fine because activation still works correctly via
- // native SetFocus calls invoked in the views code.
- int touch_down_contexts_;
-
- // Time the last touch message was received. Used to flag mouse messages
- // synthesized by Windows for touch which are not flagged by the OS as
- // synthesized mouse messages. For more information please refer to
- // the IsMouseEventFromTouch function.
- static long last_touch_message_time_;
-
- // Time the last WM_MOUSEHWHEEL message is received. Please refer to the
- // HandleMouseEventInternal function as to why this is needed.
- long last_mouse_hwheel_time_;
-
- // On Windows Vista and beyond, if we are transitioning from custom frame
- // to Aero(glass) we delay setting the DWM related properties in full
- // screen mode as DWM is not supported in full screen windows. We perform
- // the DWM related operations when the window comes out of fullscreen mode.
- // This member variable is set to true if the window is transitioning to
- // glass. Defaults to false.
- bool dwm_transition_desired_;
-
- DISALLOW_COPY_AND_ASSIGN(HWNDMessageHandler);
-};
-
-} // namespace views
-
-#endif // UI_VIEWS_WIN_HWND_MESSAGE_HANDLER_H_
« no previous file with comments | « ui/views/win/fullscreen_handler.cc ('k') | ui/views/win/hwnd_message_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698