pjs/layout/base/nsIFrameSelection.h

120 строки
5.0 KiB
C
Исходник Обычный вид История

Renaming nsISelection to nsIFrameSelection. Here is the old log from nsISelection (since CVS doesn't allow renames): > revision 1.9 > date: 1999/02/02 00:23:35; author: mjudge%netscape.com; state: Exp; lines: +2 -1 > keyboard navigation of selection. adding API for nsIFrame. fixing nsFrame and nstextframe to reflect the implementations of the nsIFrame API. nsRangeList implements the handlekeyevent now. > ---------------------------- > revision 1.8 > date: 1999/01/29 18:57:51; author: akkana%netscape.com; state: Exp; lines: +6 -0 > Implement a new interface, nsIDOMSelection, intended to become the > external interface for selection (to be IDL-ified later). > > Fix some editor bugs: > - Advance the cursor on text insert (so text is inserted in the right order) > - Make DeleteSelection in the editor call the actual selection > - Make DeleteSelection update the frames' notion of the selection > ---------------------------- > revision 1.7 > date: 1999/01/25 01:42:32; author: mjudge%netscape.com; state: Exp; lines: +3 -4 > Focus tracker needs to send the tracker to the implementation of selection so that it can update the tracker as to which frame(s) should be considered the focus frames ect. This is not yet working fully. Everything I am checking in will stay, I simply have a decision to make as to exactly what to do next. RangeList also had some modifications to better selection > ---------------------------- > revision 1.6 > date: 1999/01/22 18:58:09; author: mjudge%netscape.com; state: Exp; lines: +6 -0 > chagnes for selection to work > ---------------------------- > revision 1.5 > date: 1999/01/18 22:57:08; author: mjudge%netscape.com; state: Exp; lines: +1 -1 > Files for selection across frames. > ---------------------------- > revision 1.4 > date: 1998/12/14 18:34:09; author: mjudge%netscape.com; state: Exp; lines: +13 -1 > adding in selection > ---------------------------- > revision 1.3 > date: 1998/12/08 18:25:37; author: mjudge%netscape.com; state: Exp; lines: +9 -32 > changes to selection > ---------------------------- > revision 1.2 > date: 1998/05/01 05:55:11; author: rpotts; state: Exp; lines: +1 -1 > nslayout.h is *all* lower case > ---------------------------- > revision 1.1 > date: 1998/04/30 19:15:05; author: rods; state: Exp; > initial
1999-02-12 02:10:20 +03:00
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/*
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
* NOTE!! This is not a general class, but specific to layout and frames.
* Consumers looking for the general selection interface should look at
* nsIDOMSelection.
*/
#ifndef nsIFrameSelection_h___
#define nsIFrameSelection_h___
#include "nsISupports.h"
#include "nsIFrame.h"
#include "nsIFocusTracker.h"
// IID for the nsIFrameSelection interface
#define NS_IFRAMESELECTION_IID \
{ 0xf46e4171, 0xdeaa, 0x11d1, \
{ 0x97, 0xfc, 0x0, 0x60, 0x97, 0x3, 0xc1, 0x4e } }
Renaming nsISelection to nsIFrameSelection. Here is the old log from nsISelection (since CVS doesn't allow renames): > revision 1.9 > date: 1999/02/02 00:23:35; author: mjudge%netscape.com; state: Exp; lines: +2 -1 > keyboard navigation of selection. adding API for nsIFrame. fixing nsFrame and nstextframe to reflect the implementations of the nsIFrame API. nsRangeList implements the handlekeyevent now. > ---------------------------- > revision 1.8 > date: 1999/01/29 18:57:51; author: akkana%netscape.com; state: Exp; lines: +6 -0 > Implement a new interface, nsIDOMSelection, intended to become the > external interface for selection (to be IDL-ified later). > > Fix some editor bugs: > - Advance the cursor on text insert (so text is inserted in the right order) > - Make DeleteSelection in the editor call the actual selection > - Make DeleteSelection update the frames' notion of the selection > ---------------------------- > revision 1.7 > date: 1999/01/25 01:42:32; author: mjudge%netscape.com; state: Exp; lines: +3 -4 > Focus tracker needs to send the tracker to the implementation of selection so that it can update the tracker as to which frame(s) should be considered the focus frames ect. This is not yet working fully. Everything I am checking in will stay, I simply have a decision to make as to exactly what to do next. RangeList also had some modifications to better selection > ---------------------------- > revision 1.6 > date: 1999/01/22 18:58:09; author: mjudge%netscape.com; state: Exp; lines: +6 -0 > chagnes for selection to work > ---------------------------- > revision 1.5 > date: 1999/01/18 22:57:08; author: mjudge%netscape.com; state: Exp; lines: +1 -1 > Files for selection across frames. > ---------------------------- > revision 1.4 > date: 1998/12/14 18:34:09; author: mjudge%netscape.com; state: Exp; lines: +13 -1 > adding in selection > ---------------------------- > revision 1.3 > date: 1998/12/08 18:25:37; author: mjudge%netscape.com; state: Exp; lines: +9 -32 > changes to selection > ---------------------------- > revision 1.2 > date: 1998/05/01 05:55:11; author: rpotts; state: Exp; lines: +1 -1 > nslayout.h is *all* lower case > ---------------------------- > revision 1.1 > date: 1998/04/30 19:15:05; author: rods; state: Exp; > initial
1999-02-12 02:10:20 +03:00
//----------------------------------------------------------------------
// Selection interface
class nsIFrameSelection : public nsISupports {
public:
1999-03-03 22:48:57 +03:00
static const nsIID& GetIID() { static nsIID iid = NS_IFRAMESELECTION_IID; return iid; }
Renaming nsISelection to nsIFrameSelection. Here is the old log from nsISelection (since CVS doesn't allow renames): > revision 1.9 > date: 1999/02/02 00:23:35; author: mjudge%netscape.com; state: Exp; lines: +2 -1 > keyboard navigation of selection. adding API for nsIFrame. fixing nsFrame and nstextframe to reflect the implementations of the nsIFrame API. nsRangeList implements the handlekeyevent now. > ---------------------------- > revision 1.8 > date: 1999/01/29 18:57:51; author: akkana%netscape.com; state: Exp; lines: +6 -0 > Implement a new interface, nsIDOMSelection, intended to become the > external interface for selection (to be IDL-ified later). > > Fix some editor bugs: > - Advance the cursor on text insert (so text is inserted in the right order) > - Make DeleteSelection in the editor call the actual selection > - Make DeleteSelection update the frames' notion of the selection > ---------------------------- > revision 1.7 > date: 1999/01/25 01:42:32; author: mjudge%netscape.com; state: Exp; lines: +3 -4 > Focus tracker needs to send the tracker to the implementation of selection so that it can update the tracker as to which frame(s) should be considered the focus frames ect. This is not yet working fully. Everything I am checking in will stay, I simply have a decision to make as to exactly what to do next. RangeList also had some modifications to better selection > ---------------------------- > revision 1.6 > date: 1999/01/22 18:58:09; author: mjudge%netscape.com; state: Exp; lines: +6 -0 > chagnes for selection to work > ---------------------------- > revision 1.5 > date: 1999/01/18 22:57:08; author: mjudge%netscape.com; state: Exp; lines: +1 -1 > Files for selection across frames. > ---------------------------- > revision 1.4 > date: 1998/12/14 18:34:09; author: mjudge%netscape.com; state: Exp; lines: +13 -1 > adding in selection > ---------------------------- > revision 1.3 > date: 1998/12/08 18:25:37; author: mjudge%netscape.com; state: Exp; lines: +9 -32 > changes to selection > ---------------------------- > revision 1.2 > date: 1998/05/01 05:55:11; author: rpotts; state: Exp; lines: +1 -1 > nslayout.h is *all* lower case > ---------------------------- > revision 1.1 > date: 1998/04/30 19:15:05; author: rods; state: Exp; > initial
1999-02-12 02:10:20 +03:00
/** Init will initialize the frame selector with the necessary focus tracker to
* be used by most of the methods
* @param aTracker is the parameter to be used for most of the other calls for callbacks ect
*/
NS_IMETHOD Init(nsIFocusTracker *aTracker) = 0;
/** ShutDown will be called when the owner of the frame selection is shutting down
* this should be the time to release all member variable interfaces. all methods
* called after ShutDown should return NS_ERROR_FAILURE
*/
NS_IMETHOD ShutDown() = 0;
/** HandleKeyEvent will accept an event and frame and
* will return NS_OK if it handles the event or NS_COMFALSE if not.
* <P>DOES NOT ADDREF<P>
* @param aGuiEvent is the event that should be dealt with by aFocusFrame
* @param aFrame is the frame that MAY handle the event
*/
NS_IMETHOD HandleTextEvent(nsGUIEvent *aGuiEvent) = 0;
Renaming nsISelection to nsIFrameSelection. Here is the old log from nsISelection (since CVS doesn't allow renames): > revision 1.9 > date: 1999/02/02 00:23:35; author: mjudge%netscape.com; state: Exp; lines: +2 -1 > keyboard navigation of selection. adding API for nsIFrame. fixing nsFrame and nstextframe to reflect the implementations of the nsIFrame API. nsRangeList implements the handlekeyevent now. > ---------------------------- > revision 1.8 > date: 1999/01/29 18:57:51; author: akkana%netscape.com; state: Exp; lines: +6 -0 > Implement a new interface, nsIDOMSelection, intended to become the > external interface for selection (to be IDL-ified later). > > Fix some editor bugs: > - Advance the cursor on text insert (so text is inserted in the right order) > - Make DeleteSelection in the editor call the actual selection > - Make DeleteSelection update the frames' notion of the selection > ---------------------------- > revision 1.7 > date: 1999/01/25 01:42:32; author: mjudge%netscape.com; state: Exp; lines: +3 -4 > Focus tracker needs to send the tracker to the implementation of selection so that it can update the tracker as to which frame(s) should be considered the focus frames ect. This is not yet working fully. Everything I am checking in will stay, I simply have a decision to make as to exactly what to do next. RangeList also had some modifications to better selection > ---------------------------- > revision 1.6 > date: 1999/01/22 18:58:09; author: mjudge%netscape.com; state: Exp; lines: +6 -0 > chagnes for selection to work > ---------------------------- > revision 1.5 > date: 1999/01/18 22:57:08; author: mjudge%netscape.com; state: Exp; lines: +1 -1 > Files for selection across frames. > ---------------------------- > revision 1.4 > date: 1998/12/14 18:34:09; author: mjudge%netscape.com; state: Exp; lines: +13 -1 > adding in selection > ---------------------------- > revision 1.3 > date: 1998/12/08 18:25:37; author: mjudge%netscape.com; state: Exp; lines: +9 -32 > changes to selection > ---------------------------- > revision 1.2 > date: 1998/05/01 05:55:11; author: rpotts; state: Exp; lines: +1 -1 > nslayout.h is *all* lower case > ---------------------------- > revision 1.1 > date: 1998/04/30 19:15:05; author: rods; state: Exp; > initial
1999-02-12 02:10:20 +03:00
/** HandleKeyEvent will accept an event and frame and
* will return NS_OK if it handles the event or NS_COMFALSE if not.
* <P>DOES NOT ADDREF<P>
* @param aGuiEvent is the event that should be dealt with by aFocusFrame
* @param aFrame is the frame that MAY handle the event
*/
NS_IMETHOD HandleKeyEvent(nsGUIEvent *aGuiEvent) = 0;
Renaming nsISelection to nsIFrameSelection. Here is the old log from nsISelection (since CVS doesn't allow renames): > revision 1.9 > date: 1999/02/02 00:23:35; author: mjudge%netscape.com; state: Exp; lines: +2 -1 > keyboard navigation of selection. adding API for nsIFrame. fixing nsFrame and nstextframe to reflect the implementations of the nsIFrame API. nsRangeList implements the handlekeyevent now. > ---------------------------- > revision 1.8 > date: 1999/01/29 18:57:51; author: akkana%netscape.com; state: Exp; lines: +6 -0 > Implement a new interface, nsIDOMSelection, intended to become the > external interface for selection (to be IDL-ified later). > > Fix some editor bugs: > - Advance the cursor on text insert (so text is inserted in the right order) > - Make DeleteSelection in the editor call the actual selection > - Make DeleteSelection update the frames' notion of the selection > ---------------------------- > revision 1.7 > date: 1999/01/25 01:42:32; author: mjudge%netscape.com; state: Exp; lines: +3 -4 > Focus tracker needs to send the tracker to the implementation of selection so that it can update the tracker as to which frame(s) should be considered the focus frames ect. This is not yet working fully. Everything I am checking in will stay, I simply have a decision to make as to exactly what to do next. RangeList also had some modifications to better selection > ---------------------------- > revision 1.6 > date: 1999/01/22 18:58:09; author: mjudge%netscape.com; state: Exp; lines: +6 -0 > chagnes for selection to work > ---------------------------- > revision 1.5 > date: 1999/01/18 22:57:08; author: mjudge%netscape.com; state: Exp; lines: +1 -1 > Files for selection across frames. > ---------------------------- > revision 1.4 > date: 1998/12/14 18:34:09; author: mjudge%netscape.com; state: Exp; lines: +13 -1 > adding in selection > ---------------------------- > revision 1.3 > date: 1998/12/08 18:25:37; author: mjudge%netscape.com; state: Exp; lines: +9 -32 > changes to selection > ---------------------------- > revision 1.2 > date: 1998/05/01 05:55:11; author: rpotts; state: Exp; lines: +1 -1 > nslayout.h is *all* lower case > ---------------------------- > revision 1.1 > date: 1998/04/30 19:15:05; author: rods; state: Exp; > initial
1999-02-12 02:10:20 +03:00
/** TakeFocus will take the focus to the new frame at the new offset and
* will either extend the selection from the old anchor, or replace the old anchor.
* the old anchor and focus position may also be used to deselect things
* @param aNewfocus is the content that wants the focus
* @param aContentOffset is the content offset of the parent aNewFocus
* @param aContentOffsetEnd is the content offset of the parent aNewFocus and is specified different
* when you need to select to and include both start and end points
Renaming nsISelection to nsIFrameSelection. Here is the old log from nsISelection (since CVS doesn't allow renames): > revision 1.9 > date: 1999/02/02 00:23:35; author: mjudge%netscape.com; state: Exp; lines: +2 -1 > keyboard navigation of selection. adding API for nsIFrame. fixing nsFrame and nstextframe to reflect the implementations of the nsIFrame API. nsRangeList implements the handlekeyevent now. > ---------------------------- > revision 1.8 > date: 1999/01/29 18:57:51; author: akkana%netscape.com; state: Exp; lines: +6 -0 > Implement a new interface, nsIDOMSelection, intended to become the > external interface for selection (to be IDL-ified later). > > Fix some editor bugs: > - Advance the cursor on text insert (so text is inserted in the right order) > - Make DeleteSelection in the editor call the actual selection > - Make DeleteSelection update the frames' notion of the selection > ---------------------------- > revision 1.7 > date: 1999/01/25 01:42:32; author: mjudge%netscape.com; state: Exp; lines: +3 -4 > Focus tracker needs to send the tracker to the implementation of selection so that it can update the tracker as to which frame(s) should be considered the focus frames ect. This is not yet working fully. Everything I am checking in will stay, I simply have a decision to make as to exactly what to do next. RangeList also had some modifications to better selection > ---------------------------- > revision 1.6 > date: 1999/01/22 18:58:09; author: mjudge%netscape.com; state: Exp; lines: +6 -0 > chagnes for selection to work > ---------------------------- > revision 1.5 > date: 1999/01/18 22:57:08; author: mjudge%netscape.com; state: Exp; lines: +1 -1 > Files for selection across frames. > ---------------------------- > revision 1.4 > date: 1998/12/14 18:34:09; author: mjudge%netscape.com; state: Exp; lines: +13 -1 > adding in selection > ---------------------------- > revision 1.3 > date: 1998/12/08 18:25:37; author: mjudge%netscape.com; state: Exp; lines: +9 -32 > changes to selection > ---------------------------- > revision 1.2 > date: 1998/05/01 05:55:11; author: rpotts; state: Exp; lines: +1 -1 > nslayout.h is *all* lower case > ---------------------------- > revision 1.1 > date: 1998/04/30 19:15:05; author: rods; state: Exp; > initial
1999-02-12 02:10:20 +03:00
* @param aContinueSelection is the flag that tells the selection to keep the old anchor point or not.
*/
NS_IMETHOD TakeFocus(nsIContent *aNewFocus, PRUint32 aContentOffset, PRUint32 aContentEndOffset , PRBool aContinueSelection) = 0;
Renaming nsISelection to nsIFrameSelection. Here is the old log from nsISelection (since CVS doesn't allow renames): > revision 1.9 > date: 1999/02/02 00:23:35; author: mjudge%netscape.com; state: Exp; lines: +2 -1 > keyboard navigation of selection. adding API for nsIFrame. fixing nsFrame and nstextframe to reflect the implementations of the nsIFrame API. nsRangeList implements the handlekeyevent now. > ---------------------------- > revision 1.8 > date: 1999/01/29 18:57:51; author: akkana%netscape.com; state: Exp; lines: +6 -0 > Implement a new interface, nsIDOMSelection, intended to become the > external interface for selection (to be IDL-ified later). > > Fix some editor bugs: > - Advance the cursor on text insert (so text is inserted in the right order) > - Make DeleteSelection in the editor call the actual selection > - Make DeleteSelection update the frames' notion of the selection > ---------------------------- > revision 1.7 > date: 1999/01/25 01:42:32; author: mjudge%netscape.com; state: Exp; lines: +3 -4 > Focus tracker needs to send the tracker to the implementation of selection so that it can update the tracker as to which frame(s) should be considered the focus frames ect. This is not yet working fully. Everything I am checking in will stay, I simply have a decision to make as to exactly what to do next. RangeList also had some modifications to better selection > ---------------------------- > revision 1.6 > date: 1999/01/22 18:58:09; author: mjudge%netscape.com; state: Exp; lines: +6 -0 > chagnes for selection to work > ---------------------------- > revision 1.5 > date: 1999/01/18 22:57:08; author: mjudge%netscape.com; state: Exp; lines: +1 -1 > Files for selection across frames. > ---------------------------- > revision 1.4 > date: 1998/12/14 18:34:09; author: mjudge%netscape.com; state: Exp; lines: +13 -1 > adding in selection > ---------------------------- > revision 1.3 > date: 1998/12/08 18:25:37; author: mjudge%netscape.com; state: Exp; lines: +9 -32 > changes to selection > ---------------------------- > revision 1.2 > date: 1998/05/01 05:55:11; author: rpotts; state: Exp; lines: +1 -1 > nslayout.h is *all* lower case > ---------------------------- > revision 1.1 > date: 1998/04/30 19:15:05; author: rods; state: Exp; > initial
1999-02-12 02:10:20 +03:00
/** EnableFrameNotification
* mutch like start batching, except all dirty calls are ignored. no notifications will go
* out until enableNotifications with a PR_TRUE is called
*/
NS_IMETHOD EnableFrameNotification(PRBool aEnable) = 0;
/** Lookup Selection
* returns in frame coordinates the selection beginning and ending with the type of selection given
* @param aContent is the content asking
* @param aContentOffset is the starting content boundary
* @param aContentLength is the length of the content piece asking
* @param aStart start return frame indexed value
* @param aEnd end return frame indexed value
* @param aDrawSelected return value if this offset,length has anything in the selected area
* @param aFlag what type of selection not used now
*/
NS_IMETHOD LookUpSelection(nsIContent *aContent, PRInt32 aContentOffset, PRInt32 aContentLength,
PRInt32 *aStart, PRInt32 *aEnd, PRBool *aDrawSelected, PRUint32 aFlag/*not used*/) = 0;
/** SetMouseDownState(PRBool);
* sets the mouse state to aState for resons of drag state.
* @param aState is the new state of mousedown
*/
NS_IMETHOD SetMouseDownState(PRBool aState)=0;
/** GetMouseDownState(PRBool *);
* gets the mouse state to aState for resons of drag state.
* @param aState will hold the state of mousedown
*/
NS_IMETHOD GetMouseDownState(PRBool *aState)=0;
Renaming nsISelection to nsIFrameSelection. Here is the old log from nsISelection (since CVS doesn't allow renames): > revision 1.9 > date: 1999/02/02 00:23:35; author: mjudge%netscape.com; state: Exp; lines: +2 -1 > keyboard navigation of selection. adding API for nsIFrame. fixing nsFrame and nstextframe to reflect the implementations of the nsIFrame API. nsRangeList implements the handlekeyevent now. > ---------------------------- > revision 1.8 > date: 1999/01/29 18:57:51; author: akkana%netscape.com; state: Exp; lines: +6 -0 > Implement a new interface, nsIDOMSelection, intended to become the > external interface for selection (to be IDL-ified later). > > Fix some editor bugs: > - Advance the cursor on text insert (so text is inserted in the right order) > - Make DeleteSelection in the editor call the actual selection > - Make DeleteSelection update the frames' notion of the selection > ---------------------------- > revision 1.7 > date: 1999/01/25 01:42:32; author: mjudge%netscape.com; state: Exp; lines: +3 -4 > Focus tracker needs to send the tracker to the implementation of selection so that it can update the tracker as to which frame(s) should be considered the focus frames ect. This is not yet working fully. Everything I am checking in will stay, I simply have a decision to make as to exactly what to do next. RangeList also had some modifications to better selection > ---------------------------- > revision 1.6 > date: 1999/01/22 18:58:09; author: mjudge%netscape.com; state: Exp; lines: +6 -0 > chagnes for selection to work > ---------------------------- > revision 1.5 > date: 1999/01/18 22:57:08; author: mjudge%netscape.com; state: Exp; lines: +1 -1 > Files for selection across frames. > ---------------------------- > revision 1.4 > date: 1998/12/14 18:34:09; author: mjudge%netscape.com; state: Exp; lines: +13 -1 > adding in selection > ---------------------------- > revision 1.3 > date: 1998/12/08 18:25:37; author: mjudge%netscape.com; state: Exp; lines: +9 -32 > changes to selection > ---------------------------- > revision 1.2 > date: 1998/05/01 05:55:11; author: rpotts; state: Exp; lines: +1 -1 > nslayout.h is *all* lower case > ---------------------------- > revision 1.1 > date: 1998/04/30 19:15:05; author: rods; state: Exp; > initial
1999-02-12 02:10:20 +03:00
};
#endif /* nsIFrameSelection_h___ */