15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef UI_VIEWS_WIN_HWND_MESSAGE_HANDLER_DELEGATE_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define UI_VIEWS_WIN_HWND_MESSAGE_HANDLER_DELEGATE_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/views_export.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace gfx { 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Canvas; 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Insets; 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Path; 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Point; 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Size; 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ui { 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Accelerator; 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class KeyEvent; 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MouseEvent; 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class TouchEvent; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace views { 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class InputMethod; 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Implemented by the object that uses the HWNDMessageHandler to handle 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// notifications from the underlying HWND and service requests for data. 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class VIEWS_EXPORT HWNDMessageHandlerDelegate { 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsWidgetWindow() const = 0; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(beng): resolve this more satisfactorily vis-a-vis ShouldUseNativeFrame 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // to avoid confusion. 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsUsingCustomFrame() const = 0; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SchedulePaint() = 0; 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void EnableInactiveRendering() = 0; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsInactiveRenderingDisabled() = 0; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool CanResize() const = 0; 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool CanMaximize() const = 0; 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual bool CanMinimize() const = 0; 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool CanActivate() const = 0; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool WidgetSizeIsClientSize() const = 0; 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true if the delegate represents a modal window. 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsModal() const = 0; 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the show state that should be used for the application's first 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // window. 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int GetInitialShowState() const = 0; 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool WillProcessWorkAreaChange() const = 0; 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int GetNonClientComponent(const gfx::Point& point) const = 0; 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void GetWindowMask(const gfx::Size& size, gfx::Path* mask) = 0; 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true if the delegate modifies |insets| to define a custom client 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // area for the window, false if the default client area should be used. If 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // false is returned, |insets| is not modified. 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool GetClientAreaInsets(gfx::Insets* insets) const = 0; 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the minimum and maximum size the window can be resized to by the 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // user. 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void GetMinMaxSize(gfx::Size* min_size, 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Size* max_size) const = 0; 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the current size of the RootView. 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual gfx::Size GetRootViewSize() const = 0; 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ResetWindowControls() = 0; 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void PaintLayeredWindow(gfx::Canvas* canvas) = 0; 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual InputMethod* GetInputMethod() = 0; 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual gfx::NativeViewAccessible GetNativeViewAccessible() = 0; 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns true if the window should handle standard system commands, such as 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // close, minimize, maximize. 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // TODO(benwells): Remove this once bubbles don't have two widgets 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // implementing them on non-aura windows. http://crbug.com/189112. 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool ShouldHandleSystemCommands() const = 0; 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(beng): Investigate migrating these methods to On* prefixes once 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // HWNDMessageHandler is the WindowImpl. 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called when another app was activated. 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void HandleAppDeactivated() = 0; 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called when the window was activated or deactivated. |active| reflects the 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // new state. 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void HandleActivationChanged(bool active) = 0; 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called when a well known "app command" from the system was performed. 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true if the command was handled. 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool HandleAppCommand(short command) = 0; 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Called from WM_CANCELMODE. 1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void HandleCancelMode() = 0; 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called when the window has lost mouse capture. 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void HandleCaptureLost() = 0; 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called when the user tried to close the window. 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void HandleClose() = 0; 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called when a command defined by the application was performed. Returns 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // true if the command was handled. 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool HandleCommand(int command) = 0; 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called when an accelerator is invoked. 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void HandleAccelerator(const ui::Accelerator& accelerator) = 0; 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called when the HWND is created. 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void HandleCreate() = 0; 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called when the HWND is being destroyed, before any child HWNDs are 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // destroyed. 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void HandleDestroying() = 0; 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called after the HWND is destroyed, after all child HWNDs have been 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // destroyed. 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void HandleDestroyed() = 0; 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called when the HWND is to be focused for the first time. This is called 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // when the window is shown for the first time. Returns true if the delegate 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // set focus and no default processing should be done by the message handler. 1335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual bool HandleInitialFocus(ui::WindowShowState show_state) = 0; 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called when display settings are adjusted on the system. 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void HandleDisplayChange() = 0; 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called when the user begins or ends a size/move operation using the window 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // manager. 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void HandleBeginWMSizeMove() = 0; 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void HandleEndWMSizeMove() = 0; 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called when the window's position changed. 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void HandleMove() = 0; 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called when the system's work area has changed. 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void HandleWorkAreaChanged() = 0; 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1493551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Called when the window's visibility is changing. |visible| holds the new 1503551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // state. 1513551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual void HandleVisibilityChanging(bool visible) = 0; 1523551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called when the window's visibility changed. |visible| holds the new state. 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void HandleVisibilityChanged(bool visible) = 0; 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called when the window's client size changed. |new_size| holds the new 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // size. 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void HandleClientSizeChanged(const gfx::Size& new_size) = 0; 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called when the window's frame has changed. 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void HandleFrameChanged() = 0; 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called when focus shifted to this HWND from |last_focused_window|. 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void HandleNativeFocus(HWND last_focused_window) = 0; 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called when focus shifted from the HWND to a different window. 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void HandleNativeBlur(HWND focused_window) = 0; 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called when a mouse event is received. Returns true if the event was 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // handled by the delegate. 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool HandleMouseEvent(const ui::MouseEvent& event) = 0; 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called when a translated key event is received (i.e. post IME translation.) 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true if the event was handled by the delegate. 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool HandleKeyEvent(const ui::KeyEvent& event) = 0; 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called when an untranslated key event is received (i.e. pre-IME 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // translation). Returns true if the event was sent to the input method. 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool HandleUntranslatedKeyEvent(const ui::KeyEvent& event) = 0; 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Called when a touch event is received. 18258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual void HandleTouchEvent(const ui::TouchEvent& event) = 0; 1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called when an IME message needs to be processed by the delegate. Returns 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // true if the event was handled and no default processing should be 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // performed. 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool HandleIMEMessage(UINT message, 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WPARAM w_param, 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LPARAM l_param, 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LRESULT* result) = 0; 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called when the system input language changes. 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void HandleInputLanguageChange(DWORD character_set, 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HKL input_language_id) = 0; 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called to compel the delegate to paint |invalid_rect| accelerated. Returns 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // true if accelerated painting was performed. 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool HandlePaintAccelerated(const gfx::Rect& invalid_rect) = 0; 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called to compel the delegate to paint using the software path. 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void HandlePaint(gfx::Canvas* canvas) = 0; 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called to forward a WM_NOTIFY message to the tooltip manager. 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool HandleTooltipNotify(int w_param, 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NMHDR* l_param, 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LRESULT* l_result) = 0; 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Invoked on entering/exiting a menu loop. 2095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void HandleMenuLoop(bool in_menu_loop) = 0; 2105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Catch-all message handling and filtering. Called before 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // HWNDMessageHandler's built-in handling, which may pre-empt some 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // expectations in Views/Aura if messages are consumed. Returns true if the 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // message was consumed by the delegate and should not be processed further 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // by the HWNDMessageHandler. In this case, |result| is returned. |result| is 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // not modified otherwise. 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool PreHandleMSG(UINT message, 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WPARAM w_param, 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LPARAM l_param, 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LRESULT* result) = 0; 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Like PreHandleMSG, but called after HWNDMessageHandler's built-in handling 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // has run and after DefWindowProc. 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void PostHandleMSG(UINT message, 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WPARAM w_param, 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LPARAM l_param) = 0; 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Called when a scroll event is received. Returns true if the event was 2295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // handled by the delegate. 2305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual bool HandleScrollEvent(const ui::ScrollEvent& event) = 0; 2315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 232cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Called when the window size is about to change. 233cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void HandleWindowSizeChanging() = 0; 234cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~HWNDMessageHandlerDelegate() {} 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace views 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // UI_VIEWS_WIN_HWND_MESSAGE_HANDLER_DELEGATE_H_ 242