/* @(#)Z 1.8 nt/src/ui/idl/StdDispW.idl, odui, od96nt, odnt9712d 97/03/21 17:13:59 (97/03/03 18:34:11) */
//#====START_GENERATED_PROLOG======================================
//#
//#
//#   COMPONENT_NAME: odui
//#
//#   CLASSES: none
//#
//#   ORIGINS: 27
//#
//#
//#   (C) COPYRIGHT International Business Machines Corp. 1995,1996
//#   All Rights Reserved
//#   Licensed Materials - Property of IBM
//#   US Government Users Restricted Rights - Use, duplication or
//#   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
//#   	
//#   IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
//#   ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
//#   PURPOSE. IN NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR
//#   CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
//#   USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
//#   OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
//#   OR PERFORMANCE OF THIS SOFTWARE.
//#
//#====END_GENERATED_PROLOG========================================
//#
/********************************************************************/
/*  Licensed Materials - Property of IBM                            */
/*                                                                  */
/*                                                                  */
/* Copyright (C) International Business Machines Corp., 1994.       */
/* Copyright (C) Apple Computer, Inc., 1994                         */
/*                                                                  */
/*  US Government Users Restricted Rights -                         */
/*  Use, duplication, or disclosure restricted                      */
/*  by GSA ADP Schedule Contract with IBM Corp.                     */
/*                                                                  */
/********************************************************************/
#ifdef __PRIVATE__
// IBM Change History (most recent first):                         */
// <WIN32> 3/25/96 lp  Move declarations here from StdDisp.idl     */
//                     and Novell's stddispm.h                     */
//******************************************************************/
//
//	File:		StdDispW.idl
//
//	Contains:	Class definition for ODStdWinDispatchModule
//
//	Owned by:	Lance Purple
//
#endif

#ifndef _STDDISPWIN_
#define _STDDISPWIN_

#ifndef _DISPMOD_
#include "DispMod.idl"
#endif

//=============================================================================
// Classes defined in this interface
//=============================================================================

interface  ODStdWinDispatchModule;

//=============================================================================
// Classes used by this interface
//=============================================================================

interface ODSession;
interface ODWindow;
interface ODWindowState;
interface ODArbitrator;
interface ODDispatcher;
interface ODFrame;
interface ODFacet;

typedef somToken HCURSOR;

#ifdef __PRIVATE__
//=============================================================================
// Implementation Types
//=============================================================================
#endif

//=============================================================================
// ODStdWinDispatchModule
//=============================================================================

interface ODStdWinDispatchModule : ODDispatchModule
{
	void InitStdWinDispatchModule(  in ODSession session,
					in ODDispatcher dispatcher);

#ifdef __PRIVATE__
	ODBoolean IsContained(			in ODFrame frame,
						in ODFrame containerToTest);

	ODFacet   GetActiveFacet(		in ODFrame frame,
						in ODWindow  window,
						in ODPoint windowPoint);

	ODFacet   GetFirstFacetUnderPoint(	in ODWindow  window,
						in ODFacet root,
						in ODPoint windowPoint);

	ODBoolean DispatchMouseDownEvent(	in ODEventData	theEvent,
					 	in ODEventInfo	eventInfo);

	ODBoolean DispatchMouseUpEvent(		in ODEventData	theEvent,
					 	in ODEventInfo	eventInfo);

	ODBoolean DispatchMouseDownEmbedded(	in ODEventData	theEvent,
					 	in ODEventInfo	eventInfo);

	ODBoolean DispatchMouseUpEmbedded(	in ODEventData	theEvent,
					 	in ODEventInfo	eventInfo);

	ODBoolean DispatchMouseDownInContent(	in ODWindow     theWindow,
						in ODEventData	theEvent,
					 	in ODEventInfo	eventInfo);

	ODBoolean DispatchMouseDownInBorder(	in ODEventData	theEvent,
					 	in ODEventInfo	eventInfo);

	ODBoolean DispatchMenuEvent (		in ODEventData	theEvent,
						in ODEventInfo	eventInfo);

	ODBoolean DispatchKeyEvent(		in ODEventData	theEvent,
						in ODEventInfo	eventInfo);

	ODBoolean DispatchUpdateEvent(		in ODEventData	theEvent);

	ODBoolean DispatchResizeEvent(		in ODEventData	theEvent);

	ODBoolean DispatchMoveEvent(  		in ODEventData	theEvent);

	ODBoolean DispatchActivateEvent(	in ODEventData	theEvent,
						in ODEventInfo	eventInfo);

	ODBoolean DispatchWindowEvent(		in ODWindow	theWindow,
						in ODEventData	theEvent,
						in ODEventInfo	eventInfo);

	ODBoolean DispatchToFacetUnderPoint(	in ODWindow	theWindow,
						in ODPoint	windowPt,
						in ODEventData	theEvent,
						in ODEventInfo	eventInfo);

	ODBoolean DispatchTheEvent(		in ODEventData	theEvent,
						in ODFrame	targetFrame,
						in ODFacet	targetFacet,
						in ODEventInfo	eventInfo);

	ODBoolean PropagateTheEvent(		in ODEventData	theEvent,
						in ODFrame	initialFrame,
						in ODFacet	initialFacet,
						in ODEventInfo	eventInfo);

	ODBoolean SendToFocusOwner(		in ODEventData	theEvent,
						in ODEventInfo	eventInfo,
						in ODTypeToken	focusToken,
						in ODFacet	facet);

	void CaptureMouseIfNeeded(		in ODEventData	theEvent);

	void SetMouseCursor(			in ODEventData	theEvent,
					 	in ODEventInfo	eventInfo);

#endif // __PRIVATE__

#ifdef __SOMIDL__
	implementation
	{
		majorversion = 1; minorversion = 0;

		functionprefix = ODStdWinDispatchModule;
	
		override:
			somInit,
			somUninit,
			Dispatch;
	
		releaseorder:
			InitStdWinDispatchModule,
	#ifdef __PRIVATE__
			IsContained,
			GetActiveFacet,
			GetFirstFacetUnderPoint,
			DispatchMouseDownEvent,
			DispatchMouseUpEvent,
			DispatchMouseDownEmbedded,
			DispatchMouseUpEmbedded,
			DispatchMouseDownInContent,
			DispatchMouseDownInBorder,
			DispatchMenuEvent,
			DispatchKeyEvent,
			DispatchUpdateEvent,
			DispatchResizeEvent,
			DispatchMoveEvent,
			DispatchActivateEvent,
			DispatchWindowEvent,
			DispatchToFacetUnderPoint,
			DispatchTheEvent,
			PropagateTheEvent,
			SendToFocusOwner,
			CaptureMouseIfNeeded,
			SetMouseCursor;
	#else
			reserved01,
			reserved02,
			reserved03,
			reserved04,
			reserved05,
			reserved06,
			reserved07,
			reserved08,
			reserved09,
			reserved10,
			reserved11,
			reserved12,
			reserved13,
			reserved14,
			reserved15,
			reserved16,
			reserved17,
			reserved18,
			reserved19,
			reserved20,
			reserved21;
			reserved22;
	#endif // __PRIVATE__
		
	#ifdef __PRIVATE__

		// Caches for frequently accessed items

		ODSession 	fSession;
		ODArbitrator 	fArbitrator;
		ODWindowState	fWindowState;
		ODDispatcher 	fDispatcher;

		ODTypeToken fKeyFocusToken;
		ODTypeToken fMenuFocusToken;
		ODTypeToken fSelectionFocusToken;
		ODTypeToken fModalFocusToken;
		ODTypeToken fMouseFocusToken;
		ODTypeToken fScrollingFocusToken;

		ODTypeToken fMouseUpOutsideToken;
		ODBoolean   fMouseCaptured;

		ODTypeToken fLargeIconViewToken;
		ODTypeToken fSmallIconViewToken;
		ODTypeToken fThumbnailViewToken;

		ODFacet     fMouseDownFacet;
		ODFacet     fEmbeddedFacet;
		ODBoolean   fSuppressMouseUp;

		HCURSOR     fDefaultCursor;
		HCURSOR     fActiveBorderCursor;
		HCURSOR     fCursor;

	#endif // __PRIVATE__
	
	};
#endif // __SOMIDL__
};

#endif // _STDDISPWIN_
