Index: src/af/ev/beos/ev_BeOSToolbar.h =================================================================== RCS file: /cvsroot/abi/src/af/ev/beos/ev_BeOSToolbar.h,v retrieving revision 1.3 diff -u -r1.3 ev_BeOSToolbar.h --- src/af/ev/beos/ev_BeOSToolbar.h 1999/11/06 03:23:01 1.3 +++ src/af/ev/beos/ev_BeOSToolbar.h 2000/03/01 08:49:37 @@ -94,12 +94,12 @@ EV_BeOSToolbar(XAP_BeOSApp * pBeOSApp, XAP_BeOSFrame * pBeOSFrame, const char * szToolbarLayoutName, const char * szToolbarLabelSetName); - ~EV_BeOSToolbar(void); + virtual ~EV_BeOSToolbar(void); //This is called in the frame code UT_Bool bindListenerToView(AV_View * pView); //This is called in the frame code - UT_Bool synthesize(void); + virtual UT_Bool synthesize(void); //This is called locally and by the toolbar listener UT_Bool refreshToolbar(AV_View * pView, AV_ChangeMask mask); Index: src/af/ev/mac/ev_MacToolbar.h =================================================================== RCS file: /cvsroot/abi/src/af/ev/mac/ev_MacToolbar.h,v retrieving revision 1.3 diff -u -r1.3 ev_MacToolbar.h --- src/af/ev/mac/ev_MacToolbar.h 1999/05/01 08:45:33 1.3 +++ src/af/ev/mac/ev_MacToolbar.h 2000/03/01 08:49:37 @@ -46,12 +46,12 @@ const char * szToolbarLayoutName, const char * szToolbarLabelSetName); - ~EV_MacToolbar(void); + virtual ~EV_MacToolbar(void); UT_Bool toolbarEvent(XAP_Toolbar_Id id, UT_UCSChar * pData = 0, UT_uint32 dataLength = 0); - UT_Bool synthesize(void); + virtual UT_Bool synthesize(void); UT_Bool bindListenerToView(AV_View * pView); UT_Bool refreshToolbar(AV_View * pView, AV_ChangeMask mask); Index: src/af/ev/qnx/ev_QNXToolbar.h =================================================================== RCS file: /cvsroot/abi/src/af/ev/qnx/ev_QNXToolbar.h,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 ev_QNXToolbar.h --- src/af/ev/qnx/ev_QNXToolbar.h 2000/01/11 12:05:17 1.1.1.1 +++ src/af/ev/qnx/ev_QNXToolbar.h 2000/03/01 08:49:37 @@ -39,10 +39,10 @@ const char * szToolbarLayoutName, const char * szToolbarLabelSetName); - ~EV_QNXToolbar(void); + virtual ~EV_QNXToolbar(void); UT_Bool toolbarEvent(XAP_Toolbar_Id id, UT_UCSChar * pData, UT_uint32 dataLength); - UT_Bool synthesize(void); + virtual UT_Bool synthesize(void); UT_Bool bindListenerToView(AV_View * pView); UT_Bool refreshToolbar(AV_View * pView, AV_ChangeMask mask); Index: src/af/ev/unix/ev_UnixToolbar.h =================================================================== RCS file: /cvsroot/abi/src/af/ev/unix/ev_UnixToolbar.h,v retrieving revision 1.14 diff -u -r1.14 ev_UnixToolbar.h --- src/af/ev/unix/ev_UnixToolbar.h 1999/05/05 19:38:44 1.14 +++ src/af/ev/unix/ev_UnixToolbar.h 2000/03/01 08:49:37 @@ -41,10 +41,10 @@ const char * szToolbarLayoutName, const char * szToolbarLabelSetName); - ~EV_UnixToolbar(void); + virtual ~EV_UnixToolbar(void); UT_Bool toolbarEvent(_wd * wd, UT_UCSChar * pData, UT_uint32 dataLength); - UT_Bool synthesize(void); + virtual UT_Bool synthesize(void); UT_Bool bindListenerToView(AV_View * pView); UT_Bool refreshToolbar(AV_View * pView, AV_ChangeMask mask); Index: src/af/ev/unix/gnome/ev_UnixGnomeToolbar.h =================================================================== RCS file: /cvsroot/abi/src/af/ev/unix/gnome/ev_UnixGnomeToolbar.h,v retrieving revision 1.1 diff -u -r1.1 ev_UnixGnomeToolbar.h --- src/af/ev/unix/gnome/ev_UnixGnomeToolbar.h 1999/12/03 01:26:14 1.1 +++ src/af/ev/unix/gnome/ev_UnixGnomeToolbar.h 2000/03/01 08:49:37 @@ -41,9 +41,9 @@ const char * szToolbarLayoutName, const char * szToolbarLabelSetName); - ~EV_UnixGnomeToolbar(void); + virtual ~EV_UnixGnomeToolbar(void); - UT_Bool synthesize(void); + virtual UT_Bool synthesize(void); }; #endif /* EV_UNIXGNOMETOOLBAR_H */ Index: src/af/ev/win/ev_Win32Toolbar.h =================================================================== RCS file: /cvsroot/abi/src/af/ev/win/ev_Win32Toolbar.h,v retrieving revision 1.11 diff -u -r1.11 ev_Win32Toolbar.h --- src/af/ev/win/ev_Win32Toolbar.h 1999/05/01 08:45:35 1.11 +++ src/af/ev/win/ev_Win32Toolbar.h 2000/03/01 08:49:37 @@ -48,12 +48,12 @@ const char * szToolbarLayoutName, const char * szToolbarLabelSetName); - ~EV_Win32Toolbar(void); + virtual ~EV_Win32Toolbar(void); UT_Bool toolbarEvent(XAP_Toolbar_Id id, UT_UCSChar * pData = 0, UT_uint32 dataLength = 0); - UT_Bool synthesize(void); + virtual UT_Bool synthesize(void); UT_Bool bindListenerToView(AV_View * pView); UT_Bool refreshToolbar(AV_View * pView, AV_ChangeMask mask); UT_Bool getToolTip(LPARAM lParam); Index: src/af/ev/xp/ev_Toolbar.h =================================================================== RCS file: /cvsroot/abi/src/af/ev/xp/ev_Toolbar.h,v retrieving revision 1.4 diff -u -r1.4 ev_Toolbar.h --- src/af/ev/xp/ev_Toolbar.h 1999/03/04 23:39:02 1.4 +++ src/af/ev/xp/ev_Toolbar.h 2000/03/01 08:49:38 @@ -39,7 +39,7 @@ EV_Toolbar(EV_EditMethodContainer * pEMC, const char * szMenuLayoutName, const char * szMenuLanguageName); - ~EV_Toolbar(void); + virtual ~EV_Toolbar(void); const EV_Toolbar_Layout * getToolbarLayout(void) const; const EV_Toolbar_LabelSet * getToolbarLabelSet(void) const; @@ -48,6 +48,8 @@ EV_EditMethod * pEM, UT_UCSChar * pData, UT_uint32 dataLength); + + virtual UT_Bool synthesize(void) { return (UT_FALSE); } // Abstract protected: EV_EditMethodContainer * m_pEMC; Index: src/af/xap/beos/xap_BeOSFrame.cpp =================================================================== RCS file: /cvsroot/abi/src/af/xap/beos/xap_BeOSFrame.cpp,v retrieving revision 1.17 diff -u -r1.17 xap_BeOSFrame.cpp --- src/af/xap/beos/xap_BeOSFrame.cpp 2000/02/08 01:35:15 1.17 +++ src/af/xap/beos/xap_BeOSFrame.cpp 2000/03/01 08:49:38 @@ -78,8 +78,8 @@ m_dialogFactory(this, static_cast(app)) { m_pBeOSApp = app; - m_pBeOSKeyboard = NULL; - m_pBeOSMouse = NULL; + m_pKeyboard = NULL; + m_pMouse = NULL; m_pBeOSMenu = NULL; m_pView = NULL; m_pBeWin = NULL; @@ -95,8 +95,8 @@ m_dialogFactory(this, static_cast(f->m_pBeOSApp)) { m_pBeOSApp = f->m_pBeOSApp; - m_pBeOSKeyboard = NULL; - m_pBeOSMouse = NULL; + m_pKeyboard = NULL; + m_pMouse = NULL; m_pBeOSMenu = NULL; m_pView = NULL; m_pBeWin = NULL; @@ -107,10 +107,7 @@ { // only delete the things we created... - DELETEP(m_pBeOSKeyboard); - DELETEP(m_pBeOSMouse); DELETEP(m_pBeOSMenu); - UT_VECTOR_PURGEALL(EV_BeOSToolbar *, m_vecBeOSToolbars); } UT_Bool XAP_BeOSFrame::initialize(const char * szKeyBindingsKey, @@ -147,11 +144,11 @@ //These are actually "attached" in the ap_Frame code //since they require that all the beos classes be //instantiated. - m_pBeOSKeyboard = new ev_BeOSKeyboard(pEEM); - UT_ASSERT(m_pBeOSKeyboard); + m_pKeyboard = new ev_BeOSKeyboard(pEEM); + UT_ASSERT(m_pKeyboard); - m_pBeOSMouse = new ev_BeOSMouse(pEEM); - UT_ASSERT(m_pBeOSMouse); + m_pMouse = new ev_BeOSMouse(pEEM); + UT_ASSERT(m_pMouse); return UT_TRUE; } @@ -179,20 +176,12 @@ EV_EditEventMapper * pEEM = getEditEventMapper(); UT_ASSERT(pEEM); - m_pBeOSKeyboard->setEditEventMap(pEEM); - m_pBeOSMouse->setEditEventMap(pEEM); + m_pKeyboard->setEditEventMap(pEEM); + m_pMouse->setEditEventMap(pEEM); } return result; } -ev_BeOSMouse * XAP_BeOSFrame::getBeOSMouse(void) -{ - return m_pBeOSMouse; -} -ev_BeOSKeyboard * XAP_BeOSFrame::getBeOSKeyboard(void) -{ - return m_pBeOSKeyboard; -} XAP_DialogFactory * XAP_BeOSFrame::getDialogFactory(void) { @@ -313,10 +302,6 @@ return(UT_FALSE); } -UT_Vector * XAP_BeOSFrame::VecBeOSToolbars() { - return(&m_vecBeOSToolbars); -}; - UT_Vector * XAP_BeOSFrame::VecToolbarLayoutNames() { return(&m_vecToolbarLayoutNames); } @@ -398,19 +383,9 @@ //Add the toolbars UT_ASSERT(m_pBeOSFrame); - UT_uint32 nrToolbars = m_pBeOSFrame->VecToolbarLayoutNames()->getItemCount(); - for (UT_uint32 k=0; k < nrToolbars; k++) - { - EV_BeOSToolbar * pBeOSToolbar - = new EV_BeOSToolbar(m_pBeOSApp, - m_pBeOSFrame, - (const char *)m_pBeOSFrame->VecToolbarLayoutNames()->getNthItem(k), - m_pBeOSFrame->ToolbarLabelSetName()); - UT_ASSERT(pBeOSToolbar); - bResult = pBeOSToolbar->synthesize(); - UT_ASSERT(bResult); - m_pBeOSFrame->VecBeOSToolbars()->addItem(pBeOSToolbar); - } + + createToolbars (); + //printf("After Adding Toolbars: "); m_winRectAvailable.PrintToStream(); @@ -534,3 +509,9 @@ #endif } +EV_Toolbar * XAP_BeOSFrame::newToolbar (XAP_App *app, XAP_Frame *frame, + char *arg_3, + char *arg_4) +{ + return (new EV_BeOSToolbar ((XAP_BeOSApp *) app, (XAP_BeOSFrame *) frame, arg_3, arg_4)); +} Index: src/af/xap/beos/xap_BeOSFrame.h =================================================================== RCS file: /cvsroot/abi/src/af/xap/beos/xap_BeOSFrame.h,v retrieving revision 1.9 diff -u -r1.9 xap_BeOSFrame.h --- src/af/xap/beos/xap_BeOSFrame.h 2000/01/27 06:15:43 1.9 +++ src/af/xap/beos/xap_BeOSFrame.h 2000/03/01 08:49:38 @@ -31,6 +31,7 @@ class ev_BeOSKeyboard; class ev_BeOSMouse; class EV_BeOSMenu; +class EV_Toolbar; class GR_Graphics; /***************************************************************** @@ -121,8 +122,6 @@ be_DocView * getBeDocView(void) const; void setBeDocView(be_DocView *); UT_sint32 setInputMode(const char * szName); - ev_BeOSMouse * getBeOSMouse(void); - ev_BeOSKeyboard * getBeOSKeyboard(void); virtual XAP_DialogFactory *getDialogFactory(void); virtual void setXScrollRange(void)=0; @@ -131,7 +130,6 @@ virtual void setStatusMessage(const char * szMsg) = 0; //TF Added - UT_Vector * VecBeOSToolbars(); UT_Vector * VecToolbarLayoutNames(); const char * ToolbarLabelSetName(); GR_Graphics * Graphics(); @@ -145,10 +143,7 @@ // TODO see why ev_BeOSKeyboard has lowercase prefix... XAP_BeOSApp * m_pBeOSApp; - ev_BeOSKeyboard * m_pBeOSKeyboard; - ev_BeOSMouse * m_pBeOSMouse; EV_BeOSMenu * m_pBeOSMenu; - UT_Vector m_vecBeOSToolbars; //Main window and document view be_Window * m_pBeWin; @@ -163,8 +158,7 @@ AP_BeOSDialogFactory m_dialogFactory; -protected: - + virtual EV_Toolbar * newToolbar (XAP_App *app, XAP_Frame *frame, char *, char *); }; #endif /* XAP_BEOSFRAME_H */ Index: src/af/xap/qnx/xap_QNXFrame.cpp =================================================================== RCS file: /cvsroot/abi/src/af/xap/qnx/xap_QNXFrame.cpp,v retrieving revision 1.4 diff -u -r1.4 xap_QNXFrame.cpp --- src/af/xap/qnx/xap_QNXFrame.cpp 2000/02/09 11:49:04 1.4 +++ src/af/xap/qnx/xap_QNXFrame.cpp 2000/03/01 08:49:38 @@ -45,7 +45,7 @@ { XAP_QNXFrame * pQNXFrame = (XAP_QNXFrame *)data; AV_View * pView = pQNXFrame->getCurrentView(); - EV_QNXMouse * pQNXMouse = pQNXFrame->getQNXMouse(); + EV_QNXMouse * pQNXMouse = (EV_QNXMouse *) pQNXFrame->getMouse(); if (pView) @@ -57,7 +57,7 @@ { XAP_QNXFrame * pQNXFrame = (XAP_QNXFrame *)data; AV_View * pView = pQNXFrame->getCurrentView(); - EV_QNXMouse * pQNXMouse = pQNXFrame->getQNXMouse(); + EV_QNXMouse * pQNXMouse = (EV_QNXMouse *) pQNXFrame->getMouse(); if (pView) pQNXMouse->mouseUp(pView,info); @@ -68,7 +68,7 @@ { XAP_QNXFrame * pQNXFrame = (XAP_QNXFrame *)data; AV_View * pView = pQNXFrame->getCurrentView(); - EV_QNXMouse * pQNXMouse = pQNXFrame->getQNXMouse(); + EV_QNXMouse * pQNXMouse = (EV_QNXMouse *) pQNXFrame->getMouse(); if (pView) pQNXMouse->mouseMotion(pView, info); @@ -80,7 +80,7 @@ { XAP_QNXFrame * pQNXFrame = (XAP_QNXFrame *)data; AV_View * pView = pQNXFrame->getCurrentView(); - ev_QNXKeyboard * pQNXKeyboard = pQNXFrame->getQNXKeyboard(); + ev_QNXKeyboard * pQNXKeyboard = (ev_QNXKeyboard *) pQNXFrame->getKeyboard(); if (pView) pQNXKeyboard->keyPressEvent(pView, info); @@ -256,8 +256,6 @@ m_dialogFactory(this, (XAP_App *)(app)) { m_pQNXApp = app; - m_pQNXKeyboard = NULL; - m_pQNXMouse = NULL; m_pQNXMenu = NULL; m_pQNXPopup = NULL; m_pView = NULL; @@ -277,8 +275,6 @@ m_dialogFactory(this, (XAP_App *)(f->m_pQNXApp)) { m_pQNXApp = f->m_pQNXApp; - m_pQNXKeyboard = NULL; - m_pQNXMouse = NULL; m_pQNXMenu = NULL; m_pQNXPopup = NULL; m_pView = NULL; @@ -288,11 +284,8 @@ { // only delete the things we created... - DELETEP(m_pQNXKeyboard); - DELETEP(m_pQNXMouse); DELETEP(m_pQNXMenu); DELETEP(m_pQNXPopup); - UT_VECTOR_PURGEALL(EV_QNXToolbar *, m_vecQNXToolbars); } UT_Bool XAP_QNXFrame::initialize(const char * szKeyBindingsKey, const char * szKeyBindingsDefaultValue, @@ -319,10 +312,10 @@ UT_ASSERT(pEEM); m_pQNXKeyboard = new ev_QNXKeyboard(pEEM); - UT_ASSERT(m_pQNXKeyboard); + UT_ASSERT(m_pKeyboard); m_pQNXMouse = new EV_QNXMouse(pEEM); - UT_ASSERT(m_pQNXMouse); + UT_ASSERT(m_pMouse); return UT_TRUE; } @@ -337,8 +330,8 @@ EV_EditEventMapper * pEEM = getEditEventMapper(); UT_ASSERT(pEEM); - m_pQNXKeyboard->setEditEventMap(pEEM); - m_pQNXMouse->setEditEventMap(pEEM); + m_pKeyboard->setEditEventMap(pEEM); + m_pMouse->setEditEventMap(pEEM); } return result; @@ -354,16 +347,6 @@ return m_wVBox; } -EV_QNXMouse * XAP_QNXFrame::getQNXMouse(void) -{ - return m_pQNXMouse; -} - -ev_QNXKeyboard * XAP_QNXFrame::getQNXKeyboard(void) -{ - return m_pQNXKeyboard; -} - XAP_DialogFactory * XAP_QNXFrame::getDialogFactory(void) { return &m_dialogFactory; @@ -422,18 +405,7 @@ #endif /*** Create the tool bars ***/ - UT_uint32 nrToolbars = m_vecToolbarLayoutNames.getItemCount(); - for (UT_uint32 k=0; k < nrToolbars; k++) { - EV_QNXToolbar * pQNXToolbar - = new EV_QNXToolbar(m_pQNXApp,this, - (const char *)m_vecToolbarLayoutNames.getNthItem(k), - m_szToolbarLabelSetName); - UT_ASSERT(pQNXToolbar); - bResult = pQNXToolbar->synthesize(); - UT_ASSERT(bResult); - - m_vecQNXToolbars.addItem(pQNXToolbar); - } + createToolbars (); // Let the app-specific frame code create the contents of // the child area of the window (between the toolbars and @@ -556,3 +528,9 @@ // m_pQNXApp->setTimeOfLastEvent(eventTime); } +EV_Toolbar * XAP_QNXFrame::newToolbar (XAP_App *app, XAP_Frame *frame, + char *arg_3, + char *arg_4) +{ + return (new EV_UnixToolbar ((XAP_QNXApp *) app, (XAP_QNXFrame *) frame, arg_3, arg_4)); +} Index: src/af/xap/qnx/xap_QNXFrame.h =================================================================== RCS file: /cvsroot/abi/src/af/xap/qnx/xap_QNXFrame.h,v retrieving revision 1.3 diff -u -r1.3 xap_QNXFrame.h --- src/af/xap/qnx/xap_QNXFrame.h 2000/02/09 11:49:04 1.3 +++ src/af/xap/qnx/xap_QNXFrame.h 2000/03/01 08:49:38 @@ -65,9 +65,7 @@ PtWidget_t * getTopLevelWindow(void) const; PtWidget_t * getVBoxWidget(void) const; - EV_QNXMouse * getQNXMouse(void); - ev_QNXKeyboard * getQNXKeyboard(void); - + virtual XAP_DialogFactory * getDialogFactory(void); virtual void setXScrollRange(void)=0; virtual void setYScrollRange(void)=0; @@ -93,11 +91,8 @@ // TODO see why ev_QNXKeyboard has lowercase prefix... XAP_QNXApp * m_pQNXApp; - ev_QNXKeyboard * m_pQNXKeyboard; - EV_QNXMouse * m_pQNXMouse; EV_QNXMenuBar * m_pQNXMenu; EV_QNXMenuPopup * m_pQNXPopup; /* only valid while a context popup is up */ - UT_Vector m_vecQNXToolbars; PtWidget_t * m_wTopLevelWindow; @@ -106,6 +101,8 @@ AP_QNXDialogFactory m_dialogFactory; int m_PopupDone; + + virtual EV_Toolbar * newToolbar (XAP_App *app, XAP_Frame *frame, char *, char *); protected: class _fe Index: src/af/xap/unix/xap_UnixDlg_FontChooser.cpp =================================================================== RCS file: /cvsroot/abi/src/af/xap/unix/xap_UnixDlg_FontChooser.cpp,v retrieving revision 1.52 diff -u -r1.52 xap_UnixDlg_FontChooser.cpp --- src/af/xap/unix/xap_UnixDlg_FontChooser.cpp 1999/10/10 05:31:49 1.52 +++ src/af/xap/unix/xap_UnixDlg_FontChooser.cpp 2000/03/01 08:49:39 @@ -636,8 +636,7 @@ m_pUnixFrame = (XAP_UnixFrame *)pFrame; UT_ASSERT(m_pUnixFrame); - XAP_UnixApp * pApp = (XAP_UnixApp *)m_pApp; - UT_ASSERT(pApp); + UT_ASSERT(m_pApp); UT_DEBUGMSG(("FontChooserStart: Family[%s] Size[%s] Weight[%s] Style[%s] Color[%s] Underline[%d] StrikeOut[%d]\n", ((m_pFontFamily) ? m_pFontFamily : ""), Index: src/af/xap/unix/xap_UnixFrame.cpp =================================================================== RCS file: /cvsroot/abi/src/af/xap/unix/xap_UnixFrame.cpp,v retrieving revision 1.74 diff -u -r1.74 xap_UnixFrame.cpp --- src/af/xap/unix/xap_UnixFrame.cpp 2000/02/09 03:26:03 1.74 +++ src/af/xap/unix/xap_UnixFrame.cpp 2000/03/01 08:49:39 @@ -46,7 +46,7 @@ XAP_UnixFrame * pUnixFrame = (XAP_UnixFrame *)gtk_object_get_user_data(GTK_OBJECT(w)); pUnixFrame->setTimeOfLastEvent(e->time); AV_View * pView = pUnixFrame->getCurrentView(); - EV_UnixMouse * pUnixMouse = pUnixFrame->getUnixMouse(); + EV_UnixMouse * pUnixMouse = (EV_UnixMouse *) pUnixFrame->getMouse(); //UT_DEBUGMSG(("Grabbing mouse.\n")); gtk_grab_add(w); @@ -61,7 +61,7 @@ XAP_UnixFrame * pUnixFrame = (XAP_UnixFrame *)gtk_object_get_user_data(GTK_OBJECT(w)); pUnixFrame->setTimeOfLastEvent(e->time); AV_View * pView = pUnixFrame->getCurrentView(); - EV_UnixMouse * pUnixMouse = pUnixFrame->getUnixMouse(); + EV_UnixMouse * pUnixMouse = (EV_UnixMouse *) pUnixFrame->getMouse(); //UT_DEBUGMSG(("Ungrabbing mouse.\n")); gtk_grab_remove(w); @@ -90,7 +90,7 @@ XAP_UnixFrame * pUnixFrame = (XAP_UnixFrame *)gtk_object_get_user_data(GTK_OBJECT(w)); pUnixFrame->setTimeOfLastEvent(e->time); AV_View * pView = pUnixFrame->getCurrentView(); - EV_UnixMouse * pUnixMouse = pUnixFrame->getUnixMouse(); + EV_UnixMouse * pUnixMouse = (EV_UnixMouse *) pUnixFrame->getMouse(); if (pView) pUnixMouse->mouseMotion(pView, e); @@ -103,8 +103,8 @@ XAP_UnixFrame * pUnixFrame = (XAP_UnixFrame *)gtk_object_get_user_data(GTK_OBJECT(w)); pUnixFrame->setTimeOfLastEvent(e->time); AV_View * pView = pUnixFrame->getCurrentView(); - ev_UnixKeyboard * pUnixKeyboard = pUnixFrame->getUnixKeyboard(); - + ev_UnixKeyboard * pUnixKeyboard = (ev_UnixKeyboard *) pUnixFrame->getKeyboard(); + if (pView) pUnixKeyboard->keyPressEvent(pView, e); @@ -231,8 +230,6 @@ m_dialogFactory(this, static_cast(app)) { m_pUnixApp = app; - m_pUnixKeyboard = NULL; - m_pUnixMouse = NULL; m_pUnixMenu = NULL; m_pUnixPopup = NULL; m_pView = NULL; @@ -247,8 +244,6 @@ m_dialogFactory(this, static_cast(f->m_pUnixApp)) { m_pUnixApp = f->m_pUnixApp; - m_pUnixKeyboard = NULL; - m_pUnixMouse = NULL; m_pUnixMenu = NULL; m_pUnixPopup = NULL; m_pView = NULL; @@ -258,11 +253,8 @@ { // only delete the things we created... - DELETEP(m_pUnixKeyboard); - DELETEP(m_pUnixMouse); DELETEP(m_pUnixMenu); DELETEP(m_pUnixPopup); - UT_VECTOR_PURGEALL(EV_UnixToolbar *, m_vecUnixToolbars); } UT_Bool XAP_UnixFrame::initialize(const char * szKeyBindingsKey, const char * szKeyBindingsDefaultValue, @@ -282,18 +273,19 @@ szToolbarLabelSetKey, szToolbarLabelSetDefaultValue); UT_ASSERT(bResult); - // get a handle to our keyboard binding mechanism + // get a handle to our keyboard binding mechanism // and to our mouse binding mechanism. EV_EditEventMapper * pEEM = getEditEventMapper(); UT_ASSERT(pEEM); - m_pUnixKeyboard = new ev_UnixKeyboard(pEEM); + m_pKeyboard = new ev_UnixKeyboard(pEEM); UT_ASSERT(m_pUnixKeyboard); - m_pUnixMouse = new EV_UnixMouse(pEEM); + m_pMouse = new EV_UnixMouse(pEEM); UT_ASSERT(m_pUnixMouse); + return UT_TRUE; } @@ -307,8 +299,8 @@ EV_EditEventMapper * pEEM = getEditEventMapper(); UT_ASSERT(pEEM); - m_pUnixKeyboard->setEditEventMap(pEEM); - m_pUnixMouse->setEditEventMap(pEEM); + m_pKeyboard->setEditEventMap(pEEM); + m_pMouse->setEditEventMap(pEEM); } return result; @@ -324,16 +316,6 @@ return m_wVBox; } -EV_UnixMouse * XAP_UnixFrame::getUnixMouse(void) -{ - return m_pUnixMouse; -} - -ev_UnixKeyboard * XAP_UnixFrame::getUnixKeyboard(void) -{ - return m_pUnixKeyboard; -} - XAP_DialogFactory * XAP_UnixFrame::getDialogFactory(void) { return &m_dialogFactory; @@ -390,20 +372,8 @@ gtk_signal_connect(GTK_OBJECT(m_wTopLevelWindow), "key_press_event", GTK_SIGNAL_FUNC(_fe::key_press_event), NULL); - - UT_uint32 nrToolbars = m_vecToolbarLayoutNames.getItemCount(); - for (UT_uint32 k=0; k < nrToolbars; k++) - { - EV_UnixToolbar * pUnixToolbar - = new EV_UnixToolbar(m_pUnixApp,this, - (const char *)m_vecToolbarLayoutNames.getNthItem(k), - m_szToolbarLabelSetName); - UT_ASSERT(pUnixToolbar); - bResult = pUnixToolbar->synthesize(); - UT_ASSERT(bResult); - m_vecUnixToolbars.addItem(pUnixToolbar); - } + createToolbars (); // Let the app-specific frame code create the contents of // the child area of the window (between the toolbars and @@ -579,3 +549,9 @@ m_pUnixApp->setTimeOfLastEvent(eventTime); } +EV_Toolbar * XAP_UnixFrame::newToolbar (XAP_App *app, XAP_Frame *frame, + char *arg_3, + char *arg_4) +{ + return (new EV_UnixToolbar ((XAP_UnixApp *) app, (XAP_UnixFrame *) frame, arg_3, arg_4)); +} Index: src/af/xap/unix/xap_UnixFrame.h =================================================================== RCS file: /cvsroot/abi/src/af/xap/unix/xap_UnixFrame.h,v retrieving revision 1.31 diff -u -r1.31 xap_UnixFrame.h --- src/af/xap/unix/xap_UnixFrame.h 2000/01/27 00:22:37 1.31 +++ src/af/xap/unix/xap_UnixFrame.h 2000/03/01 08:49:39 @@ -65,8 +65,6 @@ GtkWidget * getTopLevelWindow(void) const; GtkWidget * getVBoxWidget(void) const; - EV_UnixMouse * getUnixMouse(void); - ev_UnixKeyboard * getUnixKeyboard(void); virtual XAP_DialogFactory * getDialogFactory(void); virtual void setXScrollRange(void)=0; @@ -88,11 +86,8 @@ // TODO see why ev_UnixKeyboard has lowercase prefix... XAP_UnixApp * m_pUnixApp; - ev_UnixKeyboard * m_pUnixKeyboard; - EV_UnixMouse * m_pUnixMouse; EV_UnixMenuBar * m_pUnixMenu; EV_UnixMenuPopup * m_pUnixPopup; /* only valid while a context popup is up */ - UT_Vector m_vecUnixToolbars; GtkWidget * m_wTopLevelWindow; GtkWidget * m_wVBox; @@ -100,6 +95,8 @@ GtkWidget * m_wStatusBar; AP_UnixDialogFactory m_dialogFactory; + + virtual EV_Toolbar * newToolbar (XAP_App *app, XAP_Frame *frame, char *, char *); protected: Index: src/af/xap/unix/gnome/xap_UnixGnomeFrame.cpp =================================================================== RCS file: /cvsroot/abi/src/af/xap/unix/gnome/xap_UnixGnomeFrame.cpp,v retrieving revision 1.2 diff -u -r1.2 xap_UnixGnomeFrame.cpp --- src/af/xap/unix/gnome/xap_UnixGnomeFrame.cpp 2000/02/08 01:40:05 1.2 +++ src/af/xap/unix/gnome/xap_UnixGnomeFrame.cpp 2000/03/01 08:49:39 @@ -183,19 +183,7 @@ gtk_signal_connect(GTK_OBJECT(m_wTopLevelWindow), "key_press_event", GTK_SIGNAL_FUNC(_fe::key_press_event), NULL); - UT_uint32 nrToolbars = m_vecToolbarLayoutNames.getItemCount(); - for (UT_uint32 k=0; k < nrToolbars; k++) - { - EV_UnixGnomeToolbar * pUnixToolbar - = new EV_UnixGnomeToolbar(m_pUnixApp,this, - (const char *)m_vecToolbarLayoutNames.getNthItem(k), - m_szToolbarLabelSetName); - UT_ASSERT(pUnixToolbar); - bResult = pUnixToolbar->synthesize(); - UT_ASSERT(bResult); - - m_vecUnixToolbars.addItem(pUnixToolbar); - } + createToolbars (); // Let the app-specific frame code create the contents of // the child area of the window (between the toolbars and @@ -302,3 +290,9 @@ // } +EV_Toolbar * XAP_UnixGnomeFrame::newToolbar (XAP_App *app, XAP_Frame *frame, + char *arg_3, + char *arg_4) +{ + return (new EV_UnixGnomeToolbar ((XAP_UnixGnomeApp *) app, (XAP_UnixGnomeFrame *) frame, arg_3, arg_4)); +} Index: src/af/xap/unix/gnome/xap_UnixGnomeFrame.h =================================================================== RCS file: /cvsroot/abi/src/af/xap/unix/gnome/xap_UnixGnomeFrame.h,v retrieving revision 1.2 diff -u -r1.2 xap_UnixGnomeFrame.h --- src/af/xap/unix/gnome/xap_UnixGnomeFrame.h 2000/02/08 01:40:05 1.2 +++ src/af/xap/unix/gnome/xap_UnixGnomeFrame.h 2000/03/01 08:49:39 @@ -63,6 +63,8 @@ static void _dnd_drop_event (GtkWidget *widget, GdkDragContext */*context*/, gint /*x*/, gint /*y*/, GtkSelectionData *selection_data, guint info, guint /*time*/); + + virtual EV_Toolbar * newToolbar (XAP_App *app, XAP_Frame *frame, char *, char *); }; #endif /* XAP_UNIXGNOMEFRAME_H */ Index: src/af/xap/win/xap_Win32Frame.cpp =================================================================== RCS file: /cvsroot/abi/src/af/xap/win/xap_Win32Frame.cpp,v retrieving revision 1.56 diff -u -r1.56 xap_Win32Frame.cpp --- src/af/xap/win/xap_Win32Frame.cpp 2000/02/08 11:58:05 1.56 +++ src/af/xap/win/xap_Win32Frame.cpp 2000/03/01 08:49:39 @@ -78,8 +78,6 @@ m_dialogFactory(this, static_cast(app)) { m_pWin32App = app; - m_pWin32Keyboard = NULL; - m_pWin32Mouse = NULL; m_pWin32Menu = NULL; m_pWin32Popup = NULL; m_pView = NULL; @@ -100,8 +98,6 @@ m_dialogFactory(this, static_cast(f->m_pWin32App)) { m_pWin32App = f->m_pWin32App; - m_pWin32Keyboard = NULL; - m_pWin32Mouse = NULL; m_pWin32Menu = NULL; m_pWin32Popup = NULL; m_pView = NULL; @@ -117,11 +113,8 @@ { // only delete the things we created... - DELETEP(m_pWin32Keyboard); - DELETEP(m_pWin32Mouse); DELETEP(m_pWin32Menu); DELETEP(m_pWin32Popup); - UT_VECTOR_PURGEALL(EV_Win32Toolbar *, m_vecWin32Toolbars); } UT_Bool XAP_Win32Frame::initialize(const char * szKeyBindingsKey, const char * szKeyBindingsDefaultValue, @@ -147,11 +140,11 @@ EV_EditEventMapper * pEEM = getEditEventMapper(); UT_ASSERT(pEEM); - m_pWin32Keyboard = new ev_Win32Keyboard(pEEM); - UT_ASSERT(m_pWin32Keyboard); + m_pKeyboard = new ev_Win32Keyboard(pEEM); + UT_ASSERT(m_pKeyboard); - m_pWin32Mouse = new EV_Win32Mouse(pEEM); - UT_ASSERT(m_pWin32Mouse); + m_pMouse = new EV_Win32Mouse(pEEM); + UT_ASSERT(m_pMouse); // TODO: Jeff, I'm currently showing in WinMain, to honor iCmdShow. // should we pass that via argv, to do it here for all frames? @@ -169,8 +162,8 @@ EV_EditEventMapper * pEEM = getEditEventMapper(); UT_ASSERT(pEEM); - m_pWin32Keyboard->setEditEventMap(pEEM); - m_pWin32Mouse->setEditEventMap(pEEM); + m_pKeyboard->setEditEventMap(pEEM); + m_pMouse->setEditEventMap(pEEM); } return result; @@ -186,16 +179,6 @@ return m_hwndRebar; } -EV_Win32Mouse * XAP_Win32Frame::getWin32Mouse(void) -{ - return m_pWin32Mouse; -} - -ev_Win32Keyboard * XAP_Win32Frame::getWin32Keyboard(void) -{ - return m_pWin32Keyboard; -} - XAP_DialogFactory * XAP_Win32Frame::getDialogFactory(void) { return &m_dialogFactory; @@ -249,28 +232,7 @@ // create a toolbar instance for each toolbar listed in our base class. m_iBarHeight = 0; - UT_uint32 nrToolbars = m_vecToolbarLayoutNames.getItemCount(); - for (UT_uint32 k=0; k < nrToolbars; k++) - { - EV_Win32Toolbar * pWin32Toolbar - = new EV_Win32Toolbar(m_pWin32App,this, - (const char *)m_vecToolbarLayoutNames.getNthItem(k), - m_szToolbarLabelSetName); - UT_ASSERT(pWin32Toolbar); - bResult = pWin32Toolbar->synthesize(); - UT_ASSERT(bResult); - - m_vecWin32Toolbars.addItem(pWin32Toolbar); - - // for now, position each one manually - // TODO: put 'em all in a rebar instead - HWND hwndBar = pWin32Toolbar->getWindow(); - - GetClientRect(hwndBar, &r); - iHeight = r.bottom - r.top; - - m_iBarHeight += iHeight; - } + create_toolbars (); // figure out how much room is left for the child GetClientRect(m_hwndFrame, &r); @@ -442,15 +404,20 @@ case WM_SYSKEYDOWN: case WM_KEYDOWN: - if (f->m_pWin32Keyboard->onKeyDown(pView,hwnd,iMsg,wParam,lParam)) + { + ev_Win32Keyboard *pKeyboard = (ev_Win32Keyboard *) f->m_pKeyboard; + if (pKeyboard->onKeyDown(pView,hwnd,iMsg,wParam,lParam)) return 0; return DefWindowProc(hwnd,iMsg,wParam,lParam); + } case WM_SYSCHAR: case WM_CHAR: - if (f->m_pWin32Keyboard->onChar(pView,hwnd,iMsg,wParam,lParam)) + { + ev_Win32Keyboard *pKeyboard = (ev_Win32Keyboard *) f->m_pKeyboard; + if (pKeyboard->onChar(pView,hwnd,iMsg,wParam,lParam)) return 0; return DefWindowProc(hwnd,iMsg,wParam,lParam); - + } case WM_NOTIFY: switch (((LPNMHDR) lParam)->code) { @@ -599,8 +566,8 @@ // This will remap the static tables used by all frames. // (see the comment in ev_Win32Keyboard.cpp.) - - f->m_pWin32Keyboard->remapKeyboard((HKL)lParam); + ev_Win32Keyboard *pKeyboard = (ev_Win32Keyboard *) f->m_pKeyboard; + pKeyboard->remapKeyboard((HKL)lParam); // We must propagate this message. @@ -668,9 +635,27 @@ x,y,0,m_hwndFrame,NULL); // the popup steals our capture, so we need to reset our counter. - m_pWin32Mouse->reset(); + EV_Win32Mouse *pMouse = (ev_Win32Mouse *) f->m_pMouse; + pMouse->reset(); } DELETEP(m_pWin32Popup); return bResult; +} + +EV_Toolbar * XAP_Win32Frame::newToolbar (XAP_App *app, XAP_Frame *frame, + char *arg_3, + char *arg_4) +{ + RECT r; + UT_uint32 iHeight; + EV_Win32Toolbar *result = new EV_Win32Toolbar ((XAP_Win32App *) app, (XAP_UnixFrame *) frame, arg_3, arg_4); + // for now, position each one manually + // TODO: put 'em all in a rebar instead + HWND hwndBar = result->getWindow(); + + GetClientRect(hwndBar, &r); + iHeight = r.bottom - r.top; + + m_iBarHeight += iHeight; } Index: src/af/xap/win/xap_Win32Frame.h =================================================================== RCS file: /cvsroot/abi/src/af/xap/win/xap_Win32Frame.h,v retrieving revision 1.31 diff -u -r1.31 xap_Win32Frame.h --- src/af/xap/win/xap_Win32Frame.h 2000/01/27 06:15:44 1.31 +++ src/af/xap/win/xap_Win32Frame.h 2000/03/01 08:49:40 @@ -66,7 +64,6 @@ HWND getTopLevelWindow(void) const; HWND getToolbarWindow(void) const; EV_Win32Mouse * getWin32Mouse(void); - ev_Win32Keyboard * getWin32Keyboard(void); virtual XAP_DialogFactory * getDialogFactory(void); virtual void setXScrollRange(void)=0; @@ -90,13 +87,12 @@ void _createTopLevelWindow(void); static LRESULT CALLBACK _FrameWndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam); + virtual EV_Toolbar * newToolbar (XAP_App *app, XAP_Frame *frame, char *, char *); + // TODO see why ev_Win32Keyboard has lowercase prefix... XAP_Win32App * m_pWin32App; - ev_Win32Keyboard * m_pWin32Keyboard; - EV_Win32Mouse * m_pWin32Mouse; EV_Win32MenuBar * m_pWin32Menu; EV_Win32MenuPopup * m_pWin32Popup; /* only valid while a context popup is up */ - UT_Vector m_vecWin32Toolbars; UT_uint32 m_iBarHeight; UT_uint32 m_iStatusBarHeight; Index: src/af/xap/xp/xap_Frame.cpp =================================================================== RCS file: /cvsroot/abi/src/af/xap/xp/xap_Frame.cpp,v retrieving revision 1.43 diff -u -r1.43 xap_Frame.cpp --- src/af/xap/xp/xap_Frame.cpp 2000/02/08 01:35:18 1.43 +++ src/af/xap/xp/xap_Frame.cpp 2000/03/01 08:49:40 @@ -41,6 +41,9 @@ #include "xav_View.h" #include "xad_Document.h" #include "xap_Scrollbar_ViewListener.h" +#include "ev_Keyboard.h" +#include "ev_Mouse.h" +#include "ev_Toolbar.h" #include "xap_Strings.h" /*****************************************************************/ @@ -62,6 +65,8 @@ m_nView = 0; m_pScrollbarViewListener = NULL; m_pInputModes = NULL; + m_pKeyboard = NULL; + m_pMouse = NULL; m_app->rememberFrame(this); memset(m_szTitle,0,sizeof(m_szTitle)); memset(m_szNonDecoratedTitle,0,sizeof(m_szNonDecoratedTitle)); @@ -88,6 +93,8 @@ m_nView = 0; m_pScrollbarViewListener = NULL; m_pInputModes = NULL; + m_pKeyboard = NULL; + m_pMouse = NULL; m_app->rememberFrame(this, f); memset(m_szTitle,0,sizeof(m_szTitle)); @@ -100,6 +107,9 @@ { // only delete the things that we created... + DELETEP(m_pKeyboard); + DELETEP(m_pMouse); + if (m_pView) m_pView->removeListener(m_lid); @@ -119,6 +129,8 @@ FREEP(m_szMenuLabelSetName); FREEP(m_szToolbarLabelSetName); FREEP(m_szToolbarAppearance); + + UT_VECTOR_PURGEALL(EV_Toolbar *, m_vecToolbars); } /*****************************************************************/ @@ -449,6 +466,34 @@ return 100; // default implementation } +void XAP_Frame::createToolbars (void) +{ + UT_Bool bResult; + UT_uint32 nrToolbars = m_vecToolbarLayoutNames.getItemCount(); + for (UT_uint32 k=0; k < nrToolbars; k++) + { + EV_Toolbar * pToolbar + = newToolbar(m_app, this, + (char *)m_vecToolbarLayoutNames.getNthItem(k), + (char *)m_szToolbarLabelSetName); + UT_ASSERT(pToolbar); + bResult = pToolbar->synthesize(); + UT_ASSERT(bResult); + + m_vecToolbars.addItem(pToolbar); + } +} + +EV_Mouse * XAP_Frame::getMouse(void) +{ + return m_pMouse; +} + +EV_Keyboard * XAP_Frame::getKeyboard(void) +{ + return m_pKeyboard; +} + ////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////// @@ -459,9 +504,7 @@ XAP_InputModes::~XAP_InputModes(void) { - UT_sint32 kLimit = m_vecEventMaps.getItemCount(); - UT_sint32 jLimit = m_vecNames.getItemCount(); - UT_ASSERT(kLimit == jLimit); + UT_ASSERT(m_vecEventMaps.getItemCount() == m_vecNames.getItemCount()); UT_VECTOR_PURGEALL(EV_EditEventMapper *, m_vecEventMaps); UT_VECTOR_FREEALL(char *, m_vecNames); @@ -484,7 +527,7 @@ UT_Bool b1 = (m_vecEventMaps.addItem(pEEM) == 0); UT_Bool b2 = (m_vecNames.addItem(szDup) == 0); - UT_ASSERT(b1 && b2); + UT_ASSERT(b1 && b2); return UT_TRUE; } @@ -525,3 +568,4 @@ return NULL; } + Index: src/af/xap/xp/xap_Frame.h =================================================================== RCS file: /cvsroot/abi/src/af/xap/xp/xap_Frame.h,v retrieving revision 1.37 diff -u -r1.37 xap_Frame.h --- src/af/xap/xp/xap_Frame.h 2000/01/27 00:22:37 1.37 +++ src/af/xap/xp/xap_Frame.h 2000/03/01 08:49:40 @@ -34,6 +34,9 @@ class EV_Menu_Layout; class EV_Menu_LabelSet; class EV_EditBindingMap; +class EV_Mouse; +class EV_Toolbar; +class EV_Keyboard; class AV_ScrollObj; class ap_Scrollbar_ViewListener; @@ -122,6 +125,9 @@ virtual void toggleRuler(UT_Bool /*bRulerOn*/) { } // + EV_Mouse * getMouse(void); + EV_Keyboard * getKeyboard(void); + protected: XAP_App * m_app; /* handle to application-specific data */ AD_Document * m_pDoc; /* to our in-memory representation of a document */ @@ -136,11 +142,17 @@ const char * m_szToolbarAppearance; UT_uint32 m_nView; int m_iUntitled; - + UT_Vector m_vecToolbars; + EV_Mouse * m_pMouse; + EV_Keyboard * m_pKeyboard; ap_Scrollbar_ViewListener * m_pScrollbarViewListener; AV_ListenerId m_lidScrollbarViewListener; void * m_pData; /* app-specific frame data */ + + virtual void createToolbars (void); + virtual EV_Toolbar * newToolbar (XAP_App *app, XAP_Frame *frame, char *, char *) + { return NULL; } // Abstract XAP_InputModes * m_pInputModes; Index: src/wp/ap/beos/ap_BeOSFrame.cpp =================================================================== RCS file: /cvsroot/abi/src/wp/ap/beos/ap_BeOSFrame.cpp,v retrieving revision 1.20 diff -u -r1.20 ap_BeOSFrame.cpp --- src/wp/ap/beos/ap_BeOSFrame.cpp 2000/02/01 09:13:42 1.20 +++ src/wp/ap/beos/ap_BeOSFrame.cpp 2000/03/01 08:49:40 @@ -157,7 +157,7 @@ // TODO a loop like this to help change the focus when the current // TODO view changes. - EV_BeOSToolbar * pBeOSToolbar = (EV_BeOSToolbar *)m_vecBeOSToolbars.getNthItem(k); + EV_BeOSToolbar * pBeOSToolbar = (EV_BeOSToolbar *)m_vecToolbars.getNthItem(k); pBeOSToolbar->bindListenerToView(pView); } Index: src/wp/ap/qnx/ap_QNXFrame.cpp =================================================================== RCS file: /cvsroot/abi/src/wp/ap/qnx/ap_QNXFrame.cpp,v retrieving revision 1.6 diff -u -r1.6 ap_QNXFrame.cpp --- src/wp/ap/qnx/ap_QNXFrame.cpp 2000/02/18 20:55:44 1.6 +++ src/wp/ap/qnx/ap_QNXFrame.cpp 2000/03/01 08:49:41 @@ -162,7 +162,7 @@ // TODO a loop like this to help change the focus when the current // TODO view changes. - EV_QNXToolbar * pQNXToolbar = (EV_QNXToolbar *)m_vecQNXToolbars.getNthItem(k); + EV_QNXToolbar * pQNXToolbar = (EV_QNXToolbar *)m_vecToolbars.getNthItem(k); pQNXToolbar->bindListenerToView(pView); } Index: src/wp/ap/unix/ap_UnixFrame.cpp =================================================================== RCS file: /cvsroot/abi/src/wp/ap/unix/ap_UnixFrame.cpp,v retrieving revision 1.56 diff -u -r1.56 ap_UnixFrame.cpp --- src/wp/ap/unix/ap_UnixFrame.cpp 2000/01/27 06:15:47 1.56 +++ src/wp/ap/unix/ap_UnixFrame.cpp 2000/03/01 08:49:41 @@ -164,7 +164,7 @@ // TODO a loop like this to help change the focus when the current // TODO view changes. - EV_UnixToolbar * pUnixToolbar = (EV_UnixToolbar *)m_vecUnixToolbars.getNthItem(k); + EV_UnixToolbar * pUnixToolbar = (EV_UnixToolbar *)m_vecToolbars.getNthItem(k); pUnixToolbar->bindListenerToView(pView); } Index: src/wp/ap/win/ap_Win32Frame.cpp =================================================================== RCS file: /cvsroot/abi/src/wp/ap/win/ap_Win32Frame.cpp,v retrieving revision 1.50 diff -u -r1.50 ap_Win32Frame.cpp --- src/wp/ap/win/ap_Win32Frame.cpp 2000/01/27 06:15:48 1.50 +++ src/wp/ap/win/ap_Win32Frame.cpp 2000/03/01 08:49:41 @@ -206,7 +206,7 @@ // TODO a loop like this to help change the focus when the current // TODO view changes. - EV_Win32Toolbar * pWin32Toolbar = (EV_Win32Toolbar *)m_vecWin32Toolbars.getNthItem(k); + EV_Win32Toolbar * pWin32Toolbar = (EV_Win32Toolbar *)m_vecToolbars.getNthItem(k); pWin32Toolbar->bindListenerToView(pView); }