/* -*- Mode: C++; tab-width: 4; 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. */ // CHTMLClickRecord.h #pragma once #include "lo_ele.h" #include "cstring.h" #include "Netscape_Constants.h" class CNSContext; class CHTMLView; struct SMouseDownEvent; class CHTMLClickRecord { friend class CHTMLView; friend class CBrowserView; friend class CEditView; public: CHTMLClickRecord( Point inLocalWhere, const SPoint32& inImageWhere, CNSContext* inContext, LO_Element* inElementelement, CL_Layer* inLayer = NULL); void Recalc(void); static Boolean PixelReallyInElement( const SPoint32& inImagePoint, LO_Element* inElement); static EClickState WaitForMouseAction( const Point& inInitialPoint, Int32 inWhen, Int32 inDelay); static EClickState WaitForMouseAction( const SMouseDownEvent& inMouseDown, LAttachable* inAttachable, Int32 inDelay, Boolean inExecuteContextMenuAttachment = true); // This version allows a CContextMenuAttachment to work. Boolean IsClickOnAnchor(void) const; Boolean IsClickOnEdge(void) const; Boolean IsClickOnSelection(void) const { return mClickIsInSelection; }; const char* GetClickURL() const { return (const char*)mClickURL; } protected: EClickKind CalcImageClick(void); EClickKind CalcTextClick(void); EClickKind CalcEdgeClick(void); Point mLocalWhere; SPoint32 mImageWhere; LO_Element* mElement; LO_AnchorData* mAnchorData; CNSContext* mContext; CL_Layer* mLayer; EClickKind mClickKind; Boolean mClickIsInSelection; // true if mElement is selected cstring mClickURL; cstring mImageURL; cstring mWindowTarget; // Click in Edge members Boolean mIsVerticalEdge; // If we are dragging verticaly Int32 mEdgeUpperBound; // top and bottom (if vertical) Int32 mEdgeLowerBound; // or left and right (if horizontal) // ее access Boolean IsAnchor(); // The key routine, initializes all the fields bellow Boolean IsEdge(); void ResetNamedWindow(); // No named windows here // ее variables void CalculatePosition(); // Initializes all the variables public: Boolean IsVerticalEdge(void) { return mIsVerticalEdge; }; LO_Element* GetLayoutElement(void) { return mElement; }; SPoint32 GetImageWhere(void) { return mImageWhere; }; CL_Layer* GetLayer(void) { return mLayer; }; };