This commit is contained in:
dcone%netscape.com 1998-09-10 21:26:01 +00:00
Родитель d7df9f5691
Коммит 63e7d2cdab
2 изменённых файлов: 39 добавлений и 28 удалений

Просмотреть файл

@ -18,6 +18,8 @@
#include "nsMacMessagePump.h"
#include "nsWindow.h"
#include "nsTextWidget.h"
#include "nsWidgetsCID.h"
#include <LPeriodical.h>
#define IsUserWindow(wp) (wp && ((((WindowPeek)wp)->windowKind) >= userKind))
@ -25,14 +27,16 @@
nsWindow* nsMacMessagePump::gCurrentWindow = nsnull;
nsWindow* nsMacMessagePump::gGrabWindow = nsnull; // need this for grabmouse
static NS_DEFINE_IID(kITEXTWIDGETIID, NS_TEXTFIELD_CID);
//==============================================================
nsMacMessagePump::nsMacMessagePump(nsMacMessenger *aTheMessageProc)
nsMacMessagePump::nsMacMessagePump(nsToolkit *aToolkit)
{
mMessenger = aTheMessageProc;
mRunning = PR_FALSE;
mToolkit = aToolkit;
}
@ -150,10 +154,7 @@ unsigned char evtype;
}
}
if(mMessenger)
stillrunning = mMessenger->IsRunning();
LPeriodical::DevoteTimeToRepeaters(theevent);
LPeriodical::DevoteTimeToRepeaters(theevent);
}
//if (mDispatchListener)
@ -280,6 +281,7 @@ nsMouseEvent mouseevent;
thewindow->DispatchMouseEvent(mouseevent);
gGrabWindow = (nsWindow*)thewindow; // grab is in effect
this->SetCurrentWindow(thewindow);
mToolkit->SetFocus(thewindow);
}
break;
case inDrag:
@ -572,8 +574,12 @@ nsMouseEvent mouseevent;
void
nsMacMessagePump::DoKey(EventRecord *aTheEvent)
{
char ch;
WindowPtr whichwindow;
char ch;
PRInt16 thechar;
WindowPtr whichwindow;
nsWindow *thewidget;
nsKeyEvent keyEvent;
nsTextWidget *widget;
ch = (char)(aTheEvent->message & charCodeMask);
if(aTheEvent->modifiers&cmdKey)
@ -586,6 +592,29 @@ WindowPtr whichwindow;
if(whichwindow)
{
// generate a keydown event for the widget
thewidget = mToolkit->GetFocus();
if(thewidget != nsnull)
{
keyEvent.message = NS_KEY_DOWN;
keyEvent.keyCode = 1;
keyEvent.time = 0;
keyEvent.isShift = PR_FALSE;
keyEvent.isControl = PR_FALSE;
keyEvent.isAlt = PR_FALSE;
keyEvent.eventStructType = NS_KEY_EVENT;
thechar = aTheEvent->message&charCodeMask;
if (!thewidget->DispatchEvent(&keyEvent))
{
// if this is a nsTextWidget
if (NS_OK == thewidget->QueryInterface(kITEXTWIDGETIID, (void**) &widget) )
widget->PrimitiveKeyDown(thechar,0);
}
//((nsWindow*)thewidget)->OnKey(NS_KEY_DOWN, 1, &keyEvent);
//thewidget->kdsjfkj()
}
}
}
}

Просмотреть файл

@ -30,24 +30,6 @@
class nsMacMessenger
{
// CLASS MEMBERS
private:
PRBool mRunning;
// CLASS METHODS
private:
public:
nsMacMessenger(){mRunning=PR_TRUE;}
virtual ~nsMacMessenger() {}
PRBool IsRunning() {return mRunning;}
void Quit() {mRunning = PR_FALSE;}
};
//================================================
@ -57,9 +39,9 @@ class nsMacMessagePump
// CLASS MEMBERS
private:
PRBool mRunning;
nsMacMessenger *mMessenger;
Point mMousePoint; // keep track of where the mouse is at all times
PRBool mInBackground;
nsToolkit *mToolkit;
static nsWindow *gCurrentWindow;
static nsWindow *gGrabWindow;
@ -68,7 +50,7 @@ class nsMacMessagePump
private:
public:
nsMacMessagePump(nsMacMessenger *aTheMessageProc);
nsMacMessagePump(nsToolkit *aTookKit);
virtual ~nsMacMessagePump();
PRBool DoMessagePump();