зеркало из https://github.com/mozilla/pjs.git
Merging fix for #311292
This commit is contained in:
Родитель
c284a4a926
Коммит
f2b26e1d6f
|
@ -1,125 +0,0 @@
|
|||
/* -*- 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.
|
||||
*/
|
||||
|
||||
/*
|
||||
* macmocha.h
|
||||
* MacFE mocha hacks
|
||||
*
|
||||
*/
|
||||
|
||||
#include "structs.h" // mjc
|
||||
#include "libevent.h"
|
||||
|
||||
/*
|
||||
* static class that encapsulates most of the Macha hacks
|
||||
*/
|
||||
class CMochaHacks
|
||||
{
|
||||
private:
|
||||
static LO_Element* sMouseOverElement; // layout element the cursor is over
|
||||
static MWContext* sMouseOverElementContext; // context associated with sMouseOverElement
|
||||
static LO_AnchorData* sMouseOverMapArea; // AREA tag the cursor is over
|
||||
|
||||
public:
|
||||
static void ClearSelectionForContext( MWContext* context )
|
||||
{
|
||||
if (context == sMouseOverElementContext)
|
||||
{
|
||||
sMouseOverElement = NULL;
|
||||
sMouseOverElementContext = NULL;
|
||||
sMouseOverMapArea = NULL;
|
||||
}
|
||||
}
|
||||
static void SendOutOfElementEvent(MWContext * winContext, CL_Layer* layer, SPoint32 where); // add layer param 1997-03-02 mjc
|
||||
static void SendOutOfMapAreaEvent(MWContext * winContext, CL_Layer* layer, SPoint32 where); // add layer param 1997-03-02 mjc
|
||||
static void ResetMochaMouse();
|
||||
|
||||
static Boolean IsMouseOverElement(LO_Element* inElement)
|
||||
{ return inElement == sMouseOverElement; }
|
||||
static Boolean IsMouseOverMapArea(LO_AnchorData* inAnchorData)
|
||||
{ return inAnchorData == sMouseOverMapArea; }
|
||||
|
||||
static void SetMouseOverElement(LO_Element* inElement, MWContext* inElementContext = NULL)
|
||||
{
|
||||
sMouseOverElement = inElement;
|
||||
sMouseOverElementContext = inElementContext;
|
||||
}
|
||||
static void RemoveReferenceToMouseOverElementContext(MWContext *context)
|
||||
{
|
||||
if (sMouseOverElementContext == context)
|
||||
sMouseOverElementContext = NULL;
|
||||
}
|
||||
static void SetMouseOverMapArea(LO_AnchorData* inAnchorData)
|
||||
{ sMouseOverMapArea = inAnchorData; }
|
||||
|
||||
static LO_Element* GetMouseOverElement()
|
||||
{ return sMouseOverElement; }
|
||||
static LO_AnchorData* GetMouseOverMapArea()
|
||||
{ return sMouseOverMapArea; }
|
||||
|
||||
static uint32 MochaModifiers(const UInt16 inModifiers);
|
||||
static uint32 MochaModifiersFromKeyboard(void);
|
||||
|
||||
// manage windows declared as dependent in javascript
|
||||
static Boolean IsDependent(MWContext* inContext);
|
||||
static void AddDependent(MWContext* inParent, MWContext* inChild);
|
||||
static void RemoveDependents(MWContext* inContext);
|
||||
|
||||
// Whenever a window or frame moves or resizes send an event to javascript
|
||||
static void SendMoveEvent(MWContext* inContext, int32 inX, int32 inY);
|
||||
|
||||
static void SendEvent(MWContext* inContext, int32 inType, LO_Element* inElement = nil);
|
||||
|
||||
// Send navigation events - currently not cancellable
|
||||
static void SendBackEvent(MWContext* inContext)
|
||||
{ SendEvent(inContext, EVENT_BACK); }
|
||||
|
||||
static void SendForwardEvent(MWContext* inContext)
|
||||
{ SendEvent(inContext, EVENT_FORWARD); }
|
||||
};
|
||||
|
||||
/*
|
||||
* CMochaEventCallback
|
||||
* class that encapsulates sending of mocha events
|
||||
* Subclasses should override EventComplete
|
||||
*/
|
||||
|
||||
class CMochaEventCallback {
|
||||
public:
|
||||
|
||||
// Constructors
|
||||
CMochaEventCallback();
|
||||
virtual ~CMochaEventCallback();
|
||||
|
||||
// Mocha interface
|
||||
void SendEvent(MWContext * context, LO_Element * element, int32 type, CL_Layer* layer, SPoint32 where);
|
||||
void SendEvent(MWContext * context, LO_AnchorData * data, int32 type, CL_Layer* layer, SPoint32 where);
|
||||
|
||||
// MochaCallback calls EventComplete. You'll be deleted after this call
|
||||
virtual void Complete(MWContext * context, LO_Element * element,
|
||||
int32 type, ETEventStatus status);
|
||||
|
||||
static void MochaCallback(MWContext * context, LO_Element * element,
|
||||
int32 type, void * inCallback, ETEventStatus status);
|
||||
|
||||
private:
|
||||
// Old Mocha calls used to accept either LO_Element, or LO_AnchorData
|
||||
// New ones only accept LO_Element, so sometimes we need to create/dispose
|
||||
// dummy layout elements. This is encapsulated in this class
|
||||
LO_Element * fDummyElement;
|
||||
};
|
|
@ -506,7 +506,6 @@ void FE_DestroyWindow( MWContext* context )
|
|||
}
|
||||
}
|
||||
}
|
||||
CMochaHacks::ClearSelectionForContext( context );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче