зеркало из https://github.com/mozilla/pjs.git
Adding more debug and hacks for Photon UI to try to get drawing of
the preference dialog working.
This commit is contained in:
Родитель
55dd5c3658
Коммит
3689b9be81
|
@ -21,8 +21,7 @@
|
|||
#include "nsFont.h"
|
||||
#include "nsPhWidgetLog.h"
|
||||
|
||||
NS_DEFINE_IID(kILookAndFeelIID, NS_ILOOKANDFEEL_IID);
|
||||
NS_IMPL_ISUPPORTS(nsLookAndFeel,kILookAndFeelIID);
|
||||
NS_IMPL_ISUPPORTS1(nsLookAndFeel, nsILookAndFeel)
|
||||
|
||||
nsLookAndFeel::nsLookAndFeel() : nsILookAndFeel()
|
||||
{
|
||||
|
@ -39,7 +38,7 @@ NS_IMETHODIMP nsLookAndFeel::GetColor(const nsColorID aID, nscolor &aColor)
|
|||
{
|
||||
nsresult res = NS_OK;
|
||||
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsLookAndFeel::GetColor mRefCnt=<%d>\n", mRefCnt));
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsLookAndFeel::GetColor this=<%p> mRefCnt=<%d>\n", this, mRefCnt));
|
||||
|
||||
switch( aID )
|
||||
{
|
||||
|
|
|
@ -21,12 +21,12 @@
|
|||
#include "nsILookAndFeel.h"
|
||||
|
||||
class nsLookAndFeel: public nsILookAndFeel {
|
||||
NS_DECL_ISUPPORTS
|
||||
|
||||
public:
|
||||
nsLookAndFeel();
|
||||
virtual ~nsLookAndFeel();
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
|
||||
NS_IMETHOD GetColor(const nsColorID aID, nscolor &aColor);
|
||||
NS_IMETHOD GetMetric(const nsMetricID aID, PRInt32 & aMetric);
|
||||
NS_IMETHOD GetMetric(const nsMetricFloatID aID, float & aMetric);
|
||||
|
|
|
@ -25,8 +25,9 @@
|
|||
#include "nsUnitConversion.h"
|
||||
|
||||
|
||||
NS_IMPL_ADDREF (nsScrollbar);
|
||||
NS_IMPL_RELEASE (nsScrollbar);
|
||||
NS_IMPL_ADDREF_INHERITED(nsScrollbar, nsWidget)
|
||||
NS_IMPL_RELEASE_INHERITED(nsScrollbar, nsWidget)
|
||||
NS_IMPL_QUERY_INTERFACE2(nsScrollbar, nsIScrollbar, nsIWidget)
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
|
@ -47,7 +48,7 @@ nsScrollbar::nsScrollbar (PRBool aIsVertical):nsWidget (), nsIScrollbar ()
|
|||
//-------------------------------------------------------------------------
|
||||
nsScrollbar::~nsScrollbar ()
|
||||
{
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsScrollbar::~nsScrollbar - Not Implemented.\n"));
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsScrollbar::~nsScrollbar\n"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
@ -62,12 +63,13 @@ NS_METHOD nsScrollbar::CreateNative (PtWidget_t * parentWindow)
|
|||
PhDim_t dim;
|
||||
PtArg_t arg[5];
|
||||
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsScrollbar::CreateNative\n"));
|
||||
|
||||
pos.x = mBounds.x;
|
||||
pos.y = mBounds.y;
|
||||
dim.w = mBounds.width;
|
||||
dim.h = mBounds.height;
|
||||
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsScrollbar::CreateNative at (%d,%d) w,h=(%d,%d)\n",
|
||||
mBounds.x, mBounds.y, mBounds.width, mBounds.height));
|
||||
|
||||
PtSetArg( &arg[0], Pt_ARG_ORIENTATION, mOrientation, 0 );
|
||||
PtSetArg( &arg[1], Pt_ARG_POS, &pos, 0 );
|
||||
|
@ -84,25 +86,6 @@ NS_METHOD nsScrollbar::CreateNative (PtWidget_t * parentWindow)
|
|||
return res;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Query interface implementation
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
nsresult nsScrollbar::QueryInterface (const nsIID & aIID, void **aInstancePtr)
|
||||
{
|
||||
nsresult result = nsWidget::QueryInterface(aIID, aInstancePtr);
|
||||
|
||||
static NS_DEFINE_IID(kInsScrollbarIID, NS_ISCROLLBAR_IID);
|
||||
if (result == NS_NOINTERFACE && aIID.Equals(kInsScrollbarIID)) {
|
||||
*aInstancePtr = (void*) ((nsIScrollbar*)this);
|
||||
NS_ADDREF_THIS();
|
||||
result = NS_OK;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Define the range settings
|
||||
|
@ -345,27 +328,6 @@ NS_METHOD nsScrollbar::SetParameters (PRUint32 aMaxRange, PRUint32 aThumbSize,
|
|||
return res;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// paint message. Don't send the paint out
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
PRBool nsScrollbar::OnPaint (nsPaintEvent & aEvent)
|
||||
{
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsScrollbar::OnPaint - Not Implemented\n"));
|
||||
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
|
||||
PRBool nsScrollbar::OnResize(nsSizeEvent &aEvent)
|
||||
{
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsScrollbar::OnResize - Not Implemented\n"));
|
||||
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Deal with scrollbar messages (actually implemented only in nsScrollbar)
|
||||
|
@ -374,18 +336,9 @@ PRBool nsScrollbar::OnResize(nsSizeEvent &aEvent)
|
|||
PRBool nsScrollbar::OnScroll (nsScrollbarEvent & aEvent, PRUint32 cPos)
|
||||
{
|
||||
PRBool result = PR_TRUE;
|
||||
float newPosition;
|
||||
// float newPosition;
|
||||
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsScrollbar::OnScroll cPos=<%d>\n", cPos));
|
||||
|
||||
#if 0
|
||||
/* I should look at the theScrollbarCallback->action and do something */
|
||||
switch (aEvent.message)
|
||||
{
|
||||
default:
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsScrollbar::OnScroll cPos=<%d> aEvent.message=<%d>\n", cPos, aEvent.message));
|
||||
|
||||
if (mEventCallback)
|
||||
{
|
||||
|
@ -393,7 +346,7 @@ PRBool nsScrollbar::OnScroll (nsScrollbarEvent & aEvent, PRUint32 cPos)
|
|||
|
||||
aEvent.position = cPos;
|
||||
result = ConvertStatus((*mEventCallback)(&aEvent));
|
||||
newPosition = aEvent.position;
|
||||
// newPosition = aEvent.position;
|
||||
}
|
||||
else
|
||||
PR_LOG(PhWidLog, PR_LOG_ERROR, ("nsScrollbar::OnScroll Error no mEventCallback defined\n"));
|
||||
|
|
|
@ -35,9 +35,7 @@ public:
|
|||
virtual ~nsScrollbar();
|
||||
|
||||
// nsISupports
|
||||
NS_IMETHOD_(nsrefcnt) AddRef();
|
||||
NS_IMETHOD_(nsrefcnt) Release();
|
||||
NS_IMETHOD QueryInterface(const nsIID& aIID, void** aInstancePtr);
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
||||
// nsIScrollBar implementation
|
||||
NS_IMETHOD SetMaxRange(PRUint32 aEndRange);
|
||||
|
@ -52,9 +50,7 @@ public:
|
|||
PRUint32 aPosition, PRUint32 aLineIncrement);
|
||||
|
||||
|
||||
virtual PRBool OnPaint(nsPaintEvent & aEvent);
|
||||
virtual PRBool OnScroll(nsScrollbarEvent & aEvent, PRUint32 cPos);
|
||||
virtual PRBool OnResize(nsSizeEvent &aEvent);
|
||||
|
||||
protected:
|
||||
NS_IMETHOD CreateNative(PtWidget_t *parentWindow);
|
||||
|
|
|
@ -39,7 +39,8 @@ static NS_DEFINE_IID(kLookAndFeelCID, NS_LOOKANDFEEL_CID);
|
|||
nsILookAndFeel *nsWidget::sLookAndFeel = nsnull;
|
||||
PRUint32 nsWidget::sWidgetCount = 0;
|
||||
|
||||
//#define DBG 1
|
||||
/* Enable this to queue widget damage, this should be ON by default */
|
||||
#define ENABLE_DAMAGE_QUEUE
|
||||
|
||||
DamageQueueEntry *nsWidget::mDmgQueue = nsnull;
|
||||
PtWorkProcId_t *nsWidget::mWorkProcID = nsnull;
|
||||
|
@ -661,7 +662,7 @@ NS_METHOD nsWidget::SetCursor(nsCursor aCursor)
|
|||
|
||||
NS_METHOD nsWidget::Invalidate(PRBool aIsSynchronous)
|
||||
{
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWidget::Invalidate %p\n", this ));
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWidget::Invalidate this=<%p> IsSynch=<%d>\n", this, aIsSynchronous));
|
||||
|
||||
if( mWidget )
|
||||
{
|
||||
|
@ -672,11 +673,12 @@ NS_METHOD nsWidget::Invalidate(PRBool aIsSynchronous)
|
|||
|
||||
if( rect.width && rect.height )
|
||||
{
|
||||
/* Damage has to be releative Parent */
|
||||
/* Damage has to be relative Parent */
|
||||
mUpdateArea.SetRect( rect.x - mBounds.x, rect.y - mBounds.y, rect.width, rect.height );
|
||||
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, (" rect=(%i,%i,%i,%i)\n", rect.x - mBounds.x, rect.y - mBounds.y, rect.width, rect.height ));
|
||||
|
||||
#ifdef ENABLE_DAMAGE_QUEUE
|
||||
if (aIsSynchronous)
|
||||
{
|
||||
UpdateWidgetDamage();
|
||||
|
@ -685,6 +687,9 @@ NS_METHOD nsWidget::Invalidate(PRBool aIsSynchronous)
|
|||
{
|
||||
QueueWidgetDamage();
|
||||
}
|
||||
#else
|
||||
UpdateWidgetDamage();
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -696,7 +701,7 @@ NS_METHOD nsWidget::Invalidate(PRBool aIsSynchronous)
|
|||
|
||||
NS_METHOD nsWidget::Invalidate(const nsRect & aRect, PRBool aIsSynchronous)
|
||||
{
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWidget::Invalidate %p (%ld,%ld,%ld,%ld)\n", this, aRect.x, aRect.y, aRect.width, aRect.height ));
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWidget::Invalidate this=<%p> rect=(%ld,%ld,%ld,%ld) IsSync=<%d>\n", this, aRect.x, aRect.y, aRect.width, aRect.height, aIsSynchronous ));
|
||||
|
||||
if( mWidget )
|
||||
{
|
||||
|
@ -728,6 +733,7 @@ NS_METHOD nsWidget::Invalidate(const nsRect & aRect, PRBool aIsSynchronous)
|
|||
|
||||
mUpdateArea.UnionRect( mUpdateArea, rect );
|
||||
|
||||
#ifdef ENABLE_DAMAGE_QUEUE
|
||||
if( aIsSynchronous)
|
||||
{
|
||||
UpdateWidgetDamage();
|
||||
|
@ -736,6 +742,9 @@ NS_METHOD nsWidget::Invalidate(const nsRect & aRect, PRBool aIsSynchronous)
|
|||
{
|
||||
QueueWidgetDamage();
|
||||
}
|
||||
#else
|
||||
UpdateWidgetDamage();
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -850,7 +859,14 @@ NS_METHOD nsWidget::Update(void)
|
|||
{
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWidget::Update\n" ));
|
||||
|
||||
UpdateWidgetDamage();
|
||||
#if 0
|
||||
/* Force every widget and draw itself */
|
||||
if (mWidget)
|
||||
PtDamageWidget(mWidget);
|
||||
#else
|
||||
/* if the widget has been invalidated or damaged then re-draw it */
|
||||
UpdateWidgetDamage();
|
||||
#endif
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -1410,58 +1426,63 @@ nsWidget* nsWidget::GetInstance( PtWidget_t * pWidget )
|
|||
|
||||
|
||||
// Input keysym is in gtk format; output is in NS_VK format
|
||||
PRUint32 nsWidget::nsConvertKey(unsigned long keysym)
|
||||
PRUint32 nsWidget::nsConvertKey(unsigned long keysym, PRBool *aIsChar )
|
||||
{
|
||||
|
||||
struct nsKeyConverter {
|
||||
PRUint32 vkCode; // Platform independent key code
|
||||
unsigned long keysym; // Photon key_sym key code
|
||||
PRBool isChar;
|
||||
};
|
||||
|
||||
struct nsKeyConverter nsKeycodes[] = {
|
||||
{ NS_VK_CANCEL, Pk_Cancel },
|
||||
{ NS_VK_BACK, Pk_BackSpace },
|
||||
{ NS_VK_TAB, Pk_Tab },
|
||||
{ NS_VK_CLEAR, Pk_Clear },
|
||||
{ NS_VK_RETURN, Pk_Return },
|
||||
{ NS_VK_SHIFT, Pk_Shift_L },
|
||||
{ NS_VK_SHIFT, Pk_Shift_R },
|
||||
{ NS_VK_CONTROL, Pk_Control_L },
|
||||
{ NS_VK_CONTROL, Pk_Control_R },
|
||||
{ NS_VK_ALT, Pk_Alt_L },
|
||||
{ NS_VK_ALT, Pk_Alt_R },
|
||||
{ NS_VK_PAUSE, Pk_Pause },
|
||||
{ NS_VK_CAPS_LOCK, Pk_Caps_Lock },
|
||||
{ NS_VK_ESCAPE, Pk_Escape },
|
||||
{ NS_VK_SPACE, Pk_space },
|
||||
{ NS_VK_PAGE_UP, Pk_Pg_Up },
|
||||
{ NS_VK_PAGE_DOWN, Pk_Pg_Down },
|
||||
{ NS_VK_END, Pk_End },
|
||||
{ NS_VK_HOME, Pk_Home },
|
||||
{ NS_VK_LEFT, Pk_Left },
|
||||
{ NS_VK_UP, Pk_Up },
|
||||
{ NS_VK_RIGHT, Pk_Right },
|
||||
{ NS_VK_DOWN, Pk_Down },
|
||||
{ NS_VK_PRINTSCREEN, Pk_Print },
|
||||
{ NS_VK_INSERT, Pk_Insert },
|
||||
{ NS_VK_DELETE, Pk_Delete },
|
||||
{ NS_VK_MULTIPLY, Pk_KP_Multiply },
|
||||
{ NS_VK_ADD, Pk_KP_Add },
|
||||
{ NS_VK_SEPARATOR, Pk_KP_Separator },
|
||||
{ NS_VK_SUBTRACT, Pk_KP_Subtract },
|
||||
{ NS_VK_DECIMAL, Pk_KP_Decimal },
|
||||
{ NS_VK_DIVIDE, Pk_KP_Divide },
|
||||
{ NS_VK_RETURN, Pk_KP_Enter },
|
||||
{ NS_VK_COMMA, Pk_comma },
|
||||
{ NS_VK_PERIOD, Pk_period },
|
||||
{ NS_VK_SLASH, Pk_slash },
|
||||
{ NS_VK_OPEN_BRACKET, Pk_bracketleft },
|
||||
{ NS_VK_CLOSE_BRACKET, Pk_bracketright },
|
||||
{ NS_VK_QUOTE, Pk_quotedbl }
|
||||
{ NS_VK_CANCEL, Pk_Cancel, PR_FALSE },
|
||||
{ NS_VK_BACK, Pk_BackSpace, PR_TRUE },
|
||||
{ NS_VK_TAB, Pk_Tab, PR_TRUE },
|
||||
{ NS_VK_CLEAR, Pk_Clear, PR_FALSE },
|
||||
{ NS_VK_RETURN, Pk_Return, PR_TRUE },
|
||||
{ NS_VK_SHIFT, Pk_Shift_L, PR_FALSE },
|
||||
{ NS_VK_SHIFT, Pk_Shift_R, PR_FALSE },
|
||||
{ NS_VK_CONTROL, Pk_Control_L, PR_FALSE },
|
||||
{ NS_VK_CONTROL, Pk_Control_R, PR_FALSE },
|
||||
{ NS_VK_ALT, Pk_Alt_L, PR_FALSE },
|
||||
{ NS_VK_ALT, Pk_Alt_R, PR_FALSE },
|
||||
{ NS_VK_PAUSE, Pk_Pause, PR_FALSE },
|
||||
{ NS_VK_CAPS_LOCK, Pk_Caps_Lock, PR_FALSE },
|
||||
{ NS_VK_ESCAPE, Pk_Escape, PR_FALSE },
|
||||
{ NS_VK_SPACE, Pk_space, PR_TRUE },
|
||||
{ NS_VK_PAGE_UP, Pk_Pg_Up, PR_FALSE },
|
||||
{ NS_VK_PAGE_DOWN, Pk_Pg_Down, PR_FALSE },
|
||||
{ NS_VK_END, Pk_End, PR_FALSE },
|
||||
{ NS_VK_HOME, Pk_Home, PR_FALSE },
|
||||
{ NS_VK_LEFT, Pk_Left, PR_FALSE },
|
||||
{ NS_VK_UP, Pk_Up, PR_FALSE },
|
||||
{ NS_VK_RIGHT, Pk_Right, PR_FALSE },
|
||||
{ NS_VK_DOWN, Pk_Down, PR_FALSE },
|
||||
{ NS_VK_PRINTSCREEN, Pk_Print, PR_FALSE },
|
||||
{ NS_VK_INSERT, Pk_Insert, PR_FALSE },
|
||||
{ NS_VK_DELETE, Pk_Delete, PR_FALSE },
|
||||
{ NS_VK_MULTIPLY, Pk_KP_Multiply, PR_FALSE },
|
||||
{ NS_VK_ADD, Pk_KP_Add, PR_FALSE },
|
||||
{ NS_VK_SEPARATOR, Pk_KP_Separator, PR_FALSE },
|
||||
{ NS_VK_SUBTRACT, Pk_KP_Subtract, PR_FALSE },
|
||||
{ NS_VK_DECIMAL, Pk_KP_Decimal, PR_FALSE },
|
||||
{ NS_VK_DIVIDE, Pk_KP_Divide, PR_FALSE },
|
||||
{ NS_VK_RETURN, Pk_KP_Enter, PR_TRUE },
|
||||
{ NS_VK_COMMA, Pk_comma, PR_TRUE },
|
||||
{ NS_VK_PERIOD, Pk_period, PR_TRUE },
|
||||
{ NS_VK_SLASH, Pk_slash, PR_TRUE },
|
||||
{ NS_VK_OPEN_BRACKET, Pk_bracketleft, PR_TRUE },
|
||||
{ NS_VK_CLOSE_BRACKET, Pk_bracketright, PR_TRUE },
|
||||
{ NS_VK_QUOTE, Pk_quotedbl, PR_TRUE }
|
||||
};
|
||||
|
||||
const int length = sizeof(nsKeycodes) / sizeof(struct nsKeyConverter);
|
||||
|
||||
if (aIsChar)
|
||||
{
|
||||
*aIsChar = PR_TRUE;
|
||||
}
|
||||
|
||||
// First, try to handle alphanumeric input, not listed in nsKeycodes:
|
||||
if (keysym >= Pk_a && keysym <= Pk_z)
|
||||
return keysym - Pk_a + NS_VK_A;
|
||||
|
@ -1482,7 +1503,9 @@ PRUint32 nsWidget::nsConvertKey(unsigned long keysym)
|
|||
if (nsKeycodes[i].keysym == keysym)
|
||||
{
|
||||
printf("nsWidget::nsConvertKey - Converted <%x> to <%x>\n", keysym, nsKeycodes[i].vkCode);
|
||||
return(nsKeycodes[i].vkCode);
|
||||
if (aIsChar)
|
||||
*aIsChar = (nsKeycodes[i].isChar);
|
||||
return (nsKeycodes[i].vkCode);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1505,13 +1528,24 @@ void nsWidget::InitKeyEvent(PhKeyEvent_t *aPhKeyEvent,
|
|||
|
||||
if (aPhKeyEvent != nsnull)
|
||||
{
|
||||
anEvent.keyCode = (nsConvertKey(aPhKeyEvent->key_cap) & 0x00FF);
|
||||
PRBool IsChar;
|
||||
|
||||
anEvent.keyCode = (nsConvertKey(aPhKeyEvent->key_cap, &IsChar) & 0x00FF);
|
||||
|
||||
if (aEventType == NS_KEY_PRESS)
|
||||
{
|
||||
printf("nsWidget::InitKeyEvent key_sym=<%lu> converted=<%lu>\n",
|
||||
aPhKeyEvent->key_sym, nsConvertKey(aPhKeyEvent->key_cap));
|
||||
printf("nsWidget::InitKeyEvent key_sym=<%lu> converted=<%lu> IsChar=<%d>\n",
|
||||
aPhKeyEvent->key_sym, nsConvertKey(aPhKeyEvent->key_cap), IsChar);
|
||||
|
||||
anEvent.charCode = aPhKeyEvent->key_sym;
|
||||
if (IsChar == PR_TRUE)
|
||||
{
|
||||
//anEvent.keyCode = 0; /* I think the spec says this should be 0 */
|
||||
anEvent.charCode = aPhKeyEvent->key_sym;
|
||||
}
|
||||
else
|
||||
{
|
||||
anEvent.charCode = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
anEvent.charCode = 0;
|
||||
|
@ -1528,8 +1562,6 @@ void nsWidget::InitKeyEvent(PhKeyEvent_t *aPhKeyEvent,
|
|||
PRBool nsWidget::DispatchKeyEvent(PhKeyEvent_t *aPhKeyEvent)
|
||||
{
|
||||
// PR_LOG(PhWidLog, PR_LOG_DEBUG,("nsWidget::DispatchEvent Got a Key Event aPhEkyEvent->key_mods:<%x> aPhEkyEvent->key_flags:<%x> aPhEkyEvent->key_sym=<%x> aPhEkyEvent->key_caps=<%x>\n",aPhKeyEvent->key_mods, aPhKeyEvent->key_flags, aPhKeyEvent->key_sym, aPhKeyEvent->key_cap));
|
||||
static int counter=0;
|
||||
|
||||
NS_ASSERTION(aPhKeyEvent, "nsWidget::DispatchKeyEvent a NULL PhKeyEvent was passed in");
|
||||
|
||||
nsKeyEvent keyEvent;
|
||||
|
@ -1561,23 +1593,20 @@ printf("nsWidget::DispatchKeyEvent KeyEvent Info: key_flags=<%lu> key_mods=<%lu>
|
|||
|
||||
if (PkIsFirstDown(aPhKeyEvent->key_flags))
|
||||
{
|
||||
printf("nsWidget::DispatchKeyEvent Before Key Down \n");
|
||||
InitKeyEvent(aPhKeyEvent, this, keyEvent, NS_KEY_DOWN);
|
||||
result = w->OnKey(keyEvent);
|
||||
|
||||
printf("nsWidget::DispatchKeyEvent Key Down counter=<%d>\n", counter++);
|
||||
|
||||
// if (aPhKeyEvent->key_cap < 0xF000)
|
||||
{
|
||||
InitKeyEvent(aPhKeyEvent, this, keyEvent, NS_KEY_PRESS);
|
||||
result = w->OnKey(keyEvent);
|
||||
printf("nsWidget::DispatchKeyEvent Key Press counter=<%d>\n", counter++);
|
||||
}
|
||||
printf("nsWidget::DispatchKeyEvent Before Key Press\n");
|
||||
InitKeyEvent(aPhKeyEvent, this, keyEvent, NS_KEY_PRESS);
|
||||
result = w->OnKey(keyEvent);
|
||||
}
|
||||
else if (PkIsKeyDown(aPhKeyEvent->key_flags) == 0)
|
||||
{
|
||||
printf("nsWidget::DispatchKeyEvent Before Key Up\n");
|
||||
InitKeyEvent(aPhKeyEvent, this, keyEvent, NS_KEY_UP);
|
||||
result = w->OnKey(keyEvent);
|
||||
printf("nsWidget::DispatchKeyEvent Key Up counter=<%d>\n", counter++);
|
||||
}
|
||||
|
||||
printf("nsWidget::DispatchKeyEvent after events result=<%d>\n", result);
|
||||
|
@ -1729,8 +1758,10 @@ void nsWidget::InitDamageQueue()
|
|||
mWorkProcID = PtAppAddWorkProc( nsnull, WorkProc, &mDmgQueue );
|
||||
if( mWorkProcID )
|
||||
{
|
||||
int Global_Widget_Hold_Count;
|
||||
mDmgQueueInited = PR_TRUE;
|
||||
PtHold();
|
||||
Global_Widget_Hold_Count = PtHold();
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG,("nsWidget::InitDamageQueue PtHold Global_Widget_Hold_Count=<%d> this=<%p>\n", Global_Widget_Hold_Count, this));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1791,6 +1822,9 @@ void nsWidget::QueueWidgetDamage()
|
|||
//---------------------------------------------------------------------------
|
||||
void nsWidget::UpdateWidgetDamage()
|
||||
{
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG,("nsWidget::UpdateWidgetDamaged mWidget=<%p> mUpdateArea=(%d,%d)\n",
|
||||
mWidget, mUpdateArea.width, mUpdateArea.height ));
|
||||
|
||||
if( mWidget )
|
||||
{
|
||||
RemoveDamagedWidget( mWidget );
|
||||
|
@ -1862,7 +1896,11 @@ void nsWidget::RemoveDamagedWidget(PtWidget_t *aWidget)
|
|||
if( nsnull == mDmgQueue )
|
||||
{
|
||||
mDmgQueueInited = PR_FALSE;
|
||||
PtRelease();
|
||||
|
||||
int Global_Widget_Hold_Count;
|
||||
Global_Widget_Hold_Count = PtRelease();
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG,("nsWidget::RemoveDamagedWidget PtHold/PtRelease Global_Widget_Hold_Count=<%d> this=<%p>\n", Global_Widget_Hold_Count, this));
|
||||
|
||||
if( mWorkProcID )
|
||||
PtAppRemoveWorkProc( nsnull, mWorkProcID );
|
||||
}
|
||||
|
@ -1909,7 +1947,11 @@ int nsWidget::WorkProc( void *data )
|
|||
|
||||
*dq = nsnull;
|
||||
mDmgQueueInited = PR_FALSE;
|
||||
PtRelease();
|
||||
|
||||
int Global_Widget_Hold_Count;
|
||||
Global_Widget_Hold_Count = PtRelease();
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG,("nsWidget::WorkProc PtHold/PtRelease Global_Widget_Hold_Count=<%d> this=<%p>\n", Global_Widget_Hold_Count, NULL));
|
||||
|
||||
PtFlush();
|
||||
}
|
||||
|
||||
|
|
|
@ -131,7 +131,7 @@ class nsWidget : public nsBaseWidget
|
|||
PRBool ConvertStatus(nsEventStatus aStatus);
|
||||
|
||||
/* Convert Photon key codes to Mozilla key codes */
|
||||
PRUint32 nsConvertKey(unsigned long keysym);
|
||||
PRUint32 nsConvertKey(unsigned long keysym, PRBool *aIsChar = nsnull);
|
||||
void InitKeyEvent(PhKeyEvent_t *aPhKeyEvent, nsWidget *aWidget,
|
||||
nsKeyEvent &aKeyEvent, PRUint32 aEventType);
|
||||
|
||||
|
|
|
@ -38,11 +38,8 @@
|
|||
#include "nsIMenuItem.h"
|
||||
#include "nsIMenuListener.h"
|
||||
|
||||
|
||||
//static NS_DEFINE_IID(kRenderingContextCID, NS_RENDERING_CONTEXT_CID);
|
||||
//static NS_DEFINE_IID(kRenderingContextIID, NS_IRENDERING_CONTEXT_IID);
|
||||
//static NS_DEFINE_IID(kRenderingContextPhIID, NS_IRENDERING_CONTEXT_PH_IID);
|
||||
|
||||
/* Turn this on to disable Resize queueing */
|
||||
//#define DRAW_EVERYTHING
|
||||
|
||||
PRBool nsWindow::mResizeQueueInited = PR_FALSE;
|
||||
DamageQueueEntry *nsWindow::mResizeQueue = nsnull;
|
||||
|
@ -98,7 +95,6 @@ nsWindow::~nsWindow()
|
|||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow::~nsWindow (%p) - Not Implemented.\n", this ));
|
||||
|
||||
#if 1
|
||||
|
||||
mIsDestroyingWindow = PR_TRUE;
|
||||
|
||||
if ( (mWindowType == eWindowType_dialog) ||
|
||||
|
@ -679,6 +675,7 @@ PRBool nsWindow::OnPaint(nsPaintEvent &event)
|
|||
NS_METHOD nsWindow::BeginResizingChildren(void)
|
||||
{
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow::BeginResizingChildren.\n"));
|
||||
/* PtHold() */
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
@ -732,7 +729,7 @@ NS_METHOD nsWindow::Resize(PRInt32 aWidth, PRInt32 aHeight, PRBool aRepaint)
|
|||
PtArg_t arg;
|
||||
PhDim_t dim = { aWidth, aHeight };
|
||||
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow(%p)::Resize (%i,%i,%i)\n", this, aWidth, aHeight, aRepaint ));
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow(%p)::Resize w/h=(%i,%i) Repaint=<%i)\n", this, aWidth, aHeight, aRepaint ));
|
||||
|
||||
mBounds.width = aWidth;
|
||||
mBounds.height = aHeight;
|
||||
|
@ -752,11 +749,15 @@ NS_METHOD nsWindow::Resize(PRInt32 aWidth, PRInt32 aHeight, PRBool aRepaint)
|
|||
|
||||
EnableDamage( mWidget, PR_TRUE );
|
||||
|
||||
Invalidate( aRepaint );
|
||||
// kirk Hack, taking this out to see what happens!
|
||||
// Invalidate( aRepaint );
|
||||
|
||||
if (aRepaint)
|
||||
{
|
||||
// REVISIT - Do nothing, resize handler will cause a redraw
|
||||
|
||||
// Hack - Added this to see if it helps
|
||||
Invalidate( aRepaint );
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -765,20 +766,6 @@ NS_METHOD nsWindow::Resize(PRInt32 aWidth, PRInt32 aHeight, PRBool aRepaint)
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
#if 0
|
||||
NS_METHOD nsWindow::Resize(PRInt32 aX, PRInt32 aY, PRInt32 aWidth,
|
||||
PRInt32 aHeight, PRBool aRepaint)
|
||||
{
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow::Resize Combination Resize and Move\n"));
|
||||
|
||||
Resize(aWidth,aHeight,aRepaint);
|
||||
Move(aX,aY);
|
||||
return NS_OK;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
NS_METHOD nsWindow::SetMenuBar( nsIMenuBar * aMenuBar )
|
||||
{
|
||||
nsresult res = NS_ERROR_FAILURE;
|
||||
|
@ -1011,21 +998,25 @@ void nsWindow::RawDrawFunc( PtWidget_t * pWidget, PhTile_t * damage )
|
|||
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow::RawDrawFunc for %p\n", pWin ));
|
||||
|
||||
if( !pWin )
|
||||
if ( !pWin )
|
||||
{
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, (" aborted because instance is NULL!\n"));
|
||||
return;
|
||||
}
|
||||
|
||||
#if 1
|
||||
if( /*pWin->mCreateHold || pWin->mHold ||*/ pWin->mIsResizing )
|
||||
#ifndef DRAW_EVERYTHING
|
||||
// This prevents redraws while any window is resizing, ie there are
|
||||
// windows in the resize queue
|
||||
|
||||
if ( /*pWin->mCreateHold || pWin->mHold ||*/ pWin->mIsResizing )
|
||||
{
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, (" aborted due to hold-off!\n"));
|
||||
return;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
if( pWin->mEventCallback )
|
||||
if ( pWin->mEventCallback )
|
||||
{
|
||||
PhRect_t rect;
|
||||
PhArea_t area;
|
||||
|
@ -1071,7 +1062,9 @@ void nsWindow::RawDrawFunc( PtWidget_t * pWidget, PhTile_t * damage )
|
|||
pev.rect = &nsDmg;
|
||||
pev.eventStructType = NS_PAINT_EVENT;
|
||||
|
||||
PtHold();
|
||||
int Global_Widget_Hold_Count;
|
||||
Global_Widget_Hold_Count = PtHold();
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG,("nsWindow::RawDrawFunc PtHold Global_Widget_Hold_Count=<%d> this=<%p>\n", Global_Widget_Hold_Count, pWin));
|
||||
|
||||
#if 1
|
||||
// call the event callback
|
||||
|
@ -1107,7 +1100,9 @@ void nsWindow::RawDrawFunc( PtWidget_t * pWidget, PhTile_t * damage )
|
|||
}
|
||||
#endif
|
||||
|
||||
PtRelease();
|
||||
Global_Widget_Hold_Count = PtRelease();
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG,(" nsWindow::RawDrawFunc PtHold/PtRelease Global_Widget_Hold_Count=<%d> this=<%p>\n", Global_Widget_Hold_Count, pWin));
|
||||
|
||||
//Kirk took this out look at OnDrawSignal in GTK
|
||||
//NS_RELEASE(pev.widget);
|
||||
}
|
||||
|
@ -1388,7 +1383,7 @@ int nsWindow::ResizeHandler( PtWidget_t *widget, void *data, PtCallbackInfo_t *c
|
|||
nsWindow *someWindow = (nsWindow *) GetInstance(widget);
|
||||
nsRect rect;
|
||||
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow::ResizeHandler for %p\n", someWindow ));
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow::ResizeHandler for someWindow=<%p>\n", someWindow));
|
||||
|
||||
if( someWindow )
|
||||
{
|
||||
|
@ -1397,16 +1392,16 @@ int nsWindow::ResizeHandler( PtWidget_t *widget, void *data, PtCallbackInfo_t *c
|
|||
rect.width = extents->lr.x - rect.x + 1;
|
||||
rect.height = extents->lr.y - rect.y + 1;
|
||||
|
||||
someWindow->ResizeHoldOff();
|
||||
#ifndef DRAW_EVERYTHING
|
||||
/* This enables the resize holdoff */
|
||||
// someWindow->ResizeHoldOff();
|
||||
#endif
|
||||
|
||||
someWindow->OnResize( rect );
|
||||
}
|
||||
return( Pt_CONTINUE );
|
||||
}
|
||||
|
||||
|
||||
//void nsWindow::StartResizeHoldOff( PtWidget_t *widget )
|
||||
|
||||
void nsWindow::ResizeHoldOff()
|
||||
{
|
||||
if( !mWidget )
|
||||
|
@ -1414,8 +1409,12 @@ void nsWindow::ResizeHoldOff()
|
|||
return;
|
||||
}
|
||||
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow::ResizeHoldOff Entering this=<%p>\n", this ));
|
||||
|
||||
if( PR_FALSE == mResizeQueueInited )
|
||||
{
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow::ResizeHoldOff Initing Queue this=<%p>\n", this ));
|
||||
|
||||
// This is to guarantee that the Invalidation work-proc is in place prior to the
|
||||
// Resize work-proc.
|
||||
if( !mDmgQueueInited )
|
||||
|
@ -1425,9 +1424,12 @@ void nsWindow::ResizeHoldOff()
|
|||
|
||||
PtWidget_t *top = PtFindDisjoint( mWidget );
|
||||
|
||||
if(( mResizeProcID = PtAppAddWorkProc( nsnull, ResizeWorkProc, top )) != nsnull )
|
||||
if ( (mResizeProcID = PtAppAddWorkProc( nsnull, ResizeWorkProc, top )) != nsnull )
|
||||
{
|
||||
PtHold();
|
||||
int Global_Widget_Hold_Count;
|
||||
Global_Widget_Hold_Count = PtHold();
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG,("nsWindow::ResizeHoldOff PtHold Global_Widget_Hold_Count=<%d> this=<%p>\n", Global_Widget_Hold_Count, this));
|
||||
|
||||
mResizeQueueInited = PR_TRUE;
|
||||
}
|
||||
else
|
||||
|
@ -1447,6 +1449,8 @@ void nsWindow::ResizeHoldOff()
|
|||
{
|
||||
if( dqe->widget == mWidget )
|
||||
{
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow::ResizeHoldOff Widget already in Queue this=<%p>\n", this ));
|
||||
|
||||
found = PR_TRUE;
|
||||
break;
|
||||
}
|
||||
|
@ -1458,12 +1462,13 @@ void nsWindow::ResizeHoldOff()
|
|||
dqe = new DamageQueueEntry;
|
||||
if( dqe )
|
||||
{
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow::ResizeHoldOff Adding widget to Queue this=<%p>\n", this ));
|
||||
|
||||
mIsResizing = PR_TRUE;
|
||||
dqe->widget = mWidget;
|
||||
dqe->inst = this;
|
||||
dqe->next = mResizeQueue;
|
||||
mResizeQueue = dqe;
|
||||
// NS_ADDREF_THIS();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1505,7 +1510,11 @@ void nsWindow::RemoveResizeWidget()
|
|||
{
|
||||
mResizeQueueInited = PR_FALSE;
|
||||
PtWidget_t *top = PtFindDisjoint( mWidget );
|
||||
PtRelease();
|
||||
|
||||
int Global_Widget_Hold_Count;
|
||||
Global_Widget_Hold_Count = PtRelease();
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG,("nsWindow::RemoveResizeWidget PtHold/PtRelease Global_Widget_Hold_Count=<%d> this=<%p>\n", Global_Widget_Hold_Count, this));
|
||||
|
||||
if( mResizeProcID )
|
||||
PtAppRemoveWorkProc( nsnull, mResizeProcID );
|
||||
}
|
||||
|
@ -1534,7 +1543,10 @@ int nsWindow::ResizeWorkProc( void *data )
|
|||
nsWindow::mResizeQueue = nsnull;
|
||||
nsWindow::mResizeQueueInited = PR_FALSE;
|
||||
|
||||
PtRelease();
|
||||
int Global_Widget_Hold_Count;
|
||||
Global_Widget_Hold_Count = PtRelease();
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG,("nsWindow::ResizeWorkProc PtHold/PtRelease Global_Widget_Hold_Count=<%d> this=<%p>\n", Global_Widget_Hold_Count, dqe->widget));
|
||||
|
||||
}
|
||||
return Pt_END;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче