pjs/view/public/nsICompositeListener.h

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

Fix for bug #15360: Drag Selecting, Clicking, then Clicking leaves caret cruft. r=troy@netscape.com,kipp@netscape.com,evaughan@netscape.com,beard@netscape.com layout/html/base/src/nsGfxScrollFrame.cpp - Renamed all occurrences of ScrollPositionChanged() to to ScrollPositionDidChange() to match changes made to nsIScrollPositionListener. - Added ScrollPositionWillChange() stub method. layout/html/base/src/nsPresShell.cpp - Added PresShellViewEventListener class that implements the nsIScrollPositionListener and nsICompositeListener view interfaces. This allows us to turn caret rendering on and off when scrolling and repainting to prevent leaving caret cruft on the screen. - PresShellViewEventListener is created in InitialReflow(), and released in ~PresShell(). view/public/Makefile.in view/public/makefile.win view/public/MANIFEST - Added nsICompositeListener to list of files to be exported. view/public/nsICompositeListener.h - New file. Implementers of this interface can register themselves with the view manager to receive notification before and after a view is composited/refreshed. view/public/nsIScrollPositionListener.h - Added a ScrollPositionWillChange() method. - Changed ScrollPositionChanged() to ScrollPositionDidChange(). view/public/nsIViewManager.h - Added AddCompositeListener() and RemoveCompositeListener methods. view/src/nsScrollingView.cpp view/src/nsScrollingView.h - Added NotifyScrollPositionWillChange() and NotifyScrollPositionDidChange() methods. - Modified HandleScrollEvent() to call NotifyScrollPositionWill/DidChange() methods. Added temporary offsetX and offsetY variables to allow us to calculate new offsets without changing mOffsetX and mOffsetY before notifications are sent out. view/src/nsScrollPortView.cpp - Changed ScrollPositionChanged() to ScrollPositionDidChange(). - Modified ScrollTo() to call the listener's ScrollPositionWillChange() method. view/src/nsViewManager.cpp view/src/nsViewManager.h - Added AddCompositeListener() and RemoveCompositeListener() methods. - Added support for CompositeListener notifications in the Refresh() methods for regions and rects. - Fix for bug #15901: [DOGFOOD] Selected text does not clear when you type Modified UpdateView() so that rects with zero width and height are no longer added to our damage region. r=beard@netscape.com
1999-10-15 08:29:30 +04:00
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Mozilla 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/MPL/
*
* 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.
*
* The Original Code is Mozilla Communicator.
*
* The Initial Developer of the Original Code is Netscape Communications
* Corp. Portions created by Netscape are Copyright (C) 1999 Netscape
* Communications Corp. All Rights Reserved.
*
* Contributor(s):
* Kin Blas
*/
#ifndef nsICompositeListener_h___
#define nsICompositeListener_h___
#include "nsISupports.h"
// forward declarations
class nsIView;
class nsIViewManager;
class nsIRenderingContext;
class nsIRegion;
// IID for the nsICompositeListener interface
// {5661ce55-7c42-11d3-009d-1d060b0f8baff}
#define NS_ICOMPOSITELISTENER_IID \
{ 0x5661ce55, 0x7c42, 0x11d3, { 0x9d, 0x1d, 0x0, 0x60, 0xb0, 0xf8, 0xba, 0xff } }
/**
* Provides a way for a client of an nsIViewManager to learn about composite
* events.
*/
class nsICompositeListener : public nsISupports {
public:
NS_DEFINE_STATIC_IID_ACCESSOR(NS_ICOMPOSITELISTENER_IID)
/**
* Notification before a view is refreshed.
* @param aViewManager view manager that "owns" the view. The view does NOT
* hold a reference to the view manager
* @param aView view to be refreshed.
* @param aContext rendering context to be used during the refresh.
* @param aRegion region of the view to be refreshed.
* @param aUpdateFlags see bottom of nsIViewManager.h for description
* @result The result of the notification, NS_OK if no errors
*/
NS_IMETHOD WillRefreshRegion(nsIViewManager *aViewManager,
nsIView *aView,
nsIRenderingContext *aContext,
nsIRegion *aRegion,
PRUint32 aUpdateFlags) = 0;
/**
* Notification after a view was refreshed.
* @param aViewManager view manager that "owns" the view. The view does NOT
* hold a reference to the view manager
* @param aView view that was refreshed.
* @param aContext rendering context that was used during the refresh.
* @param aRegion region of the view that was refreshed.
* @param aUpdateFlags see bottom of nsIViewManager.h for description
* @result The result of the notification, NS_OK if no errors
*/
NS_IMETHOD DidRefreshRegion(nsIViewManager *aViewManager,
nsIView *aView,
nsIRenderingContext *aContext,
nsIRegion *aRegion,
PRUint32 aUpdateFlags) = 0;
/**
* Notification before a view is refreshed.
* @param aViewManager view manager that "owns" the view. The view does NOT
* hold a reference to the view manager
* @param aView view to be refreshed.
* @param aContext rendering context to be used during the refresh.
* @param aRect rect region of the view to be refreshed.
* @param aUpdateFlags see bottom of nsIViewManager.h for description
* @result The result of the notification, NS_OK if no errors
*/
NS_IMETHOD WillRefreshRect(nsIViewManager *aViewManager,
nsIView *aView,
nsIRenderingContext *aContext,
const nsRect *aRect,
PRUint32 aUpdateFlags) = 0;
/**
* Notification after a view was refreshed.
* @param aViewManager view manager that "owns" the view. The view does NOT
* hold a reference to the view manager
* @param aView view that was refreshed.
* @param aContext rendering context that was used during the refresh.
* @param aRect rect region of the view that was refreshed.
* @param aUpdateFlags see bottom of nsIViewManager.h for description
* @result The result of the notification, NS_OK if no errors
*/
NS_IMETHOD DidRefreshRect(nsIViewManager *aViewManager,
nsIView *aView,
nsIRenderingContext *aContext,
const nsRect *aRect,
PRUint32 aUpdateFlags) = 0;
};
#endif /* nsICompositeListener_h___ */