2001-09-25 05:32:19 +04:00
|
|
|
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
|
|
/* ***** BEGIN LICENSE BLOCK *****
|
|
|
|
* Version: NPL 1.1/GPL 2.0/LGPL 2.1
|
1998-06-24 01:53:02 +04:00
|
|
|
*
|
2001-09-25 05:32:19 +04:00
|
|
|
* The contents of this file are subject to the Netscape Public License
|
|
|
|
* Version 1.1 (the "License"); you may not use this file except in
|
|
|
|
* compliance with the License. You may obtain a copy of the License at
|
|
|
|
* http://www.mozilla.org/NPL/
|
1998-06-24 01:53:02 +04:00
|
|
|
*
|
2001-09-25 05:32:19 +04:00
|
|
|
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
|
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
|
|
* for the specific language governing rights and limitations under the
|
|
|
|
* License.
|
1998-06-24 01:53:02 +04:00
|
|
|
*
|
1999-11-06 06:40:37 +03:00
|
|
|
* The Original Code is mozilla.org code.
|
|
|
|
*
|
2001-09-25 05:32:19 +04:00
|
|
|
* The Initial Developer of the Original Code is
|
|
|
|
* Netscape Communications Corporation.
|
|
|
|
* Portions created by the Initial Developer are Copyright (C) 1998
|
|
|
|
* the Initial Developer. All Rights Reserved.
|
1999-11-06 06:40:37 +03:00
|
|
|
*
|
2001-09-25 05:32:19 +04:00
|
|
|
* Contributor(s):
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* Alternatively, the contents of this file may be used under the terms of
|
|
|
|
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
|
|
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
|
|
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
|
|
* of those above. If you wish to allow use of your version of this file only
|
|
|
|
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
|
|
* use your version of this file under the terms of the NPL, indicate your
|
|
|
|
* decision by deleting the provisions above and replace them with the notice
|
|
|
|
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
|
|
* the provisions above, a recipient may use your version of this file under
|
|
|
|
* the terms of any one of the NPL, the GPL or the LGPL.
|
|
|
|
*
|
|
|
|
* ***** END LICENSE BLOCK ***** */
|
1998-06-24 01:53:02 +04:00
|
|
|
|
|
|
|
#ifndef nsIEventStateManager_h__
|
|
|
|
#define nsIEventStateManager_h__
|
|
|
|
|
2001-07-16 06:40:48 +04:00
|
|
|
#include "nsEvent.h"
|
1998-06-24 01:53:02 +04:00
|
|
|
#include "nsISupports.h"
|
|
|
|
#include "nsVoidArray.h"
|
|
|
|
|
1998-08-07 08:45:03 +04:00
|
|
|
class nsIContent;
|
1998-06-24 01:53:02 +04:00
|
|
|
class nsIPresContext;
|
|
|
|
class nsIDOMEvent;
|
1998-11-18 08:25:26 +03:00
|
|
|
class nsIFrame;
|
1999-04-30 23:38:39 +04:00
|
|
|
class nsIView;
|
2000-04-24 08:41:27 +04:00
|
|
|
class nsIWidget;
|
1998-06-24 01:53:02 +04:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Event listener manager interface.
|
|
|
|
*/
|
|
|
|
#define NS_IEVENTSTATEMANAGER_IID \
|
1998-07-23 06:55:33 +04:00
|
|
|
{ /* 80a98c80-2036-11d2-bd89-00805f8ae3f4 */ \
|
|
|
|
0x80a98c80, 0x2036, 0x11d2, \
|
|
|
|
{0xbd, 0x89, 0x00, 0x80, 0x5f, 0x8a, 0xe3, 0xf4} }
|
1998-06-24 01:53:02 +04:00
|
|
|
|
|
|
|
class nsIEventStateManager : public nsISupports {
|
|
|
|
|
|
|
|
public:
|
2002-06-26 07:38:55 +04:00
|
|
|
NS_DEFINE_STATIC_IID_ACCESSOR(NS_IEVENTSTATEMANAGER_IID)
|
1998-06-24 01:53:02 +04:00
|
|
|
|
2000-03-15 07:03:44 +03:00
|
|
|
NS_IMETHOD Init() = 0;
|
|
|
|
|
1999-11-24 09:03:41 +03:00
|
|
|
NS_IMETHOD PreHandleEvent(nsIPresContext* aPresContext,
|
2000-04-24 08:41:27 +04:00
|
|
|
nsEvent *aEvent,
|
1998-11-24 10:46:58 +03:00
|
|
|
nsIFrame* aTargetFrame,
|
1999-11-24 09:03:41 +03:00
|
|
|
nsEventStatus* aStatus,
|
1999-06-15 07:14:28 +04:00
|
|
|
nsIView* aView) = 0;
|
1998-11-24 10:46:58 +03:00
|
|
|
|
1999-11-24 09:03:41 +03:00
|
|
|
NS_IMETHOD PostHandleEvent(nsIPresContext* aPresContext,
|
2000-04-24 08:41:27 +04:00
|
|
|
nsEvent *aEvent,
|
1998-11-18 08:25:26 +03:00
|
|
|
nsIFrame* aTargetFrame,
|
1999-11-24 09:03:41 +03:00
|
|
|
nsEventStatus* aStatus,
|
1999-04-30 23:38:39 +04:00
|
|
|
nsIView* aView) = 0;
|
1998-06-24 01:53:02 +04:00
|
|
|
|
1998-11-18 08:25:26 +03:00
|
|
|
NS_IMETHOD SetPresContext(nsIPresContext* aPresContext) = 0;
|
1998-11-19 03:43:36 +03:00
|
|
|
NS_IMETHOD ClearFrameRefs(nsIFrame* aFrame) = 0;
|
1998-06-24 01:53:02 +04:00
|
|
|
|
1998-11-18 08:25:26 +03:00
|
|
|
NS_IMETHOD GetEventTarget(nsIFrame **aFrame) = 0;
|
1999-12-08 07:54:29 +03:00
|
|
|
NS_IMETHOD GetEventTargetContent(nsEvent* aEvent, nsIContent** aContent) = 0;
|
1999-11-03 10:11:45 +03:00
|
|
|
NS_IMETHOD GetEventRelatedContent(nsIContent** aContent) = 0;
|
1998-07-17 08:52:12 +04:00
|
|
|
|
1999-03-29 02:22:54 +04:00
|
|
|
NS_IMETHOD GetContentState(nsIContent *aContent, PRInt32& aState) = 0;
|
1999-04-13 01:24:07 +04:00
|
|
|
NS_IMETHOD SetContentState(nsIContent *aContent, PRInt32 aState) = 0;
|
1999-07-26 19:02:19 +04:00
|
|
|
|
|
|
|
NS_IMETHOD GetFocusedContent(nsIContent **aContent) = 0;
|
1999-12-08 07:54:29 +03:00
|
|
|
NS_IMETHOD SetFocusedContent(nsIContent* aContent) = 0;
|
1999-09-30 15:40:42 +04:00
|
|
|
|
2001-11-29 03:04:31 +03:00
|
|
|
NS_IMETHOD ContentRemoved(nsIContent* aContent) = 0;
|
2002-02-20 10:22:55 +03:00
|
|
|
NS_IMETHOD EventStatusOK(nsGUIEvent* aEvent, PRBool *aOK) = 0;
|
2001-11-29 03:04:31 +03:00
|
|
|
|
Fixes bug 66597, bug 103284, bug 114440, bug 120023, bug 128741, bug 19259. Cleans up browse with caret, makes it work with XML content docs, creates keyboard toggle for it (Accel+shift+K), synchronizes focus and document selection so that users can tab navigate relative to their last find or click in text, or vice versa, makes tabbing move relative to named anchor that has been jumped to. r=bryner, sr=alecf, a=asa
2002-03-10 09:21:48 +03:00
|
|
|
// This is called when browse with caret changes on the fly
|
|
|
|
NS_IMETHOD ResetBrowseWithCaret(PRBool *aBrowseWithCaret) = 0;
|
|
|
|
|
|
|
|
// This is called after find text or when a cursor movement key is pressed
|
|
|
|
// If aCanFocusDoc == PR_TRUE, the current document will be focused if caret is not on a focusable element
|
|
|
|
NS_IMETHOD MoveFocusToCaret(PRBool aCanFocusDoc, PRBool *aIsSelectionWithFocus) = 0;
|
|
|
|
NS_IMETHOD MoveCaretToFocus() = 0;
|
|
|
|
|
2001-10-23 02:43:52 +04:00
|
|
|
// This is an experiment and may be temporary
|
1999-09-30 15:40:42 +04:00
|
|
|
NS_IMETHOD ConsumeFocusEvents(PRBool aDoConsume) = 0;
|
2000-02-09 18:14:55 +03:00
|
|
|
|
|
|
|
// Access Key Registration
|
2002-05-22 04:14:51 +04:00
|
|
|
NS_IMETHOD RegisterAccessKey(nsIContent* aContent, PRUint32 aKey) = 0;
|
|
|
|
NS_IMETHOD UnregisterAccessKey(nsIContent* aContent, PRUint32 aKey) = 0;
|
2000-02-09 18:14:55 +03:00
|
|
|
|
2000-04-24 08:41:27 +04:00
|
|
|
NS_IMETHOD SetCursor(PRInt32 aCursor, nsIWidget* aWidget, PRBool aLockCursor) = 0;
|
|
|
|
|
2000-05-16 15:35:12 +04:00
|
|
|
//Method for centralized distribution of new DOM events
|
2001-09-28 01:43:00 +04:00
|
|
|
NS_IMETHOD DispatchNewEvent(nsISupports* aTarget, nsIDOMEvent* aEvent, PRBool* aPreventDefault) = 0;
|
2001-04-11 07:11:34 +04:00
|
|
|
|
|
|
|
// Method for moving the focus forward/back.
|
2001-10-23 02:43:52 +04:00
|
|
|
NS_IMETHOD ShiftFocus(PRBool aDirection, nsIContent* aStart)=0;
|
2001-05-23 03:52:17 +04:00
|
|
|
|
1998-06-24 01:53:02 +04:00
|
|
|
};
|
|
|
|
|
1999-04-13 01:24:07 +04:00
|
|
|
#define NS_EVENT_STATE_UNSPECIFIED 0x0000
|
|
|
|
#define NS_EVENT_STATE_ACTIVE 0x0001 // mouse is down on content
|
|
|
|
#define NS_EVENT_STATE_FOCUS 0x0002 // content has focus
|
|
|
|
#define NS_EVENT_STATE_HOVER 0x0004 // mouse is hovering over content
|
1999-05-04 18:44:51 +04:00
|
|
|
#define NS_EVENT_STATE_DRAGOVER 0x0008 // drag is hovering over content
|
2002-04-11 07:49:30 +04:00
|
|
|
// The following states are used only for ContentStatesChanged
|
|
|
|
#define NS_EVENT_STATE_CHECKED 0x0010
|
1999-03-29 02:22:54 +04:00
|
|
|
|
2002-03-31 08:53:53 +04:00
|
|
|
enum EFocusedWithType {
|
|
|
|
eEventFocusedByUnknown, // focus gained via unknown method
|
|
|
|
eEventFocusedByMouse, // focus gained via mouse
|
|
|
|
eEventFocusedByKey, // focus gained via key press (like tab)
|
|
|
|
eEventFocusedByContextMenu, // focus gained via context menu
|
|
|
|
eEventFocusedByApplication // focus gained via Application (like script)
|
|
|
|
};
|
|
|
|
|
1998-06-24 01:53:02 +04:00
|
|
|
#endif // nsIEventStateManager_h__
|