void InternalWindow::titlebarDragMouseReleased(MouseEventDetails* const e) { _TitlebarDragMouseDraggedConnection.disconnect(); _TitlebarDragMouseReleasedConnection.disconnect(); _TitlebarDragKeyPressedConnection.disconnect(); setLockInput(false); }
void InternalWindow::titlebarDragKeyPressed(KeyEventDetails* const e) { if(e->getKey() == KeyEventDetails::KEY_ESCAPE) { _TitlebarDragMouseDraggedConnection.disconnect(); _TitlebarDragMouseReleasedConnection.disconnect(); _TitlebarDragKeyPressedConnection.disconnect(); setLockInput(false); //Reset the Window to it's original Position setPosition(_WindowStartPosition); } }
void InternalWindow::destroyPopupMenu(void) { if(getMFActivePopupMenus()->size() > 0) { for(UInt32 i(0) ; i<getMFActivePopupMenus()->size() ; ++i) { getActivePopupMenus(i)->cancel(); } _PopupConnections.clear(); clearActivePopupMenus(); setLockInput(false); } }
void InternalWindow::destroyPopupMenu(void) { if(getMFActivePopupMenus()->size() > 0) { for(UInt32 i(0) ; i<getMFActivePopupMenus()->size() ; ++i) { getActivePopupMenus(i)->cancel(); } clearActivePopupMenus(); setLockInput(false); _PopupMenuInteractionListener.disconnect(); } }
void InternalWindow::borderDragKeyPressed(KeyEventDetails* const e) { if(e->getKey() == KeyEventDetails::KEY_ESCAPE) { _BorderDragMouseDraggedConnection.disconnect(); _BorderDragMouseReleasedConnection.disconnect(); _BorderDragKeyPressedConnection.disconnect(); setLockInput(false); //Reset the Window to it's original Position and size if(getPosition() != _WindowStartPosition) { setPosition(_WindowStartPosition); } if(getSize() != _WindowStartSize) { setSize(_WindowStartSize); } } }
void InternalWindow::changed(ConstFieldMaskArg whichField, UInt32 origin, BitVector details) { if( ((whichField & FocusedFieldMask) || (whichField & TitlebarFieldMask))&& getTitlebar() != NULL && getDrawTitlebar() && !getTitlebar()->getEnabled()) { getTitlebar()->setEnabled(getFocused()); } if( (whichField & ActiveToolTipFieldMask) && getActiveToolTip() != NULL) { getActiveToolTip()->updateClipBounds(); } if( (whichField & ActivePopupMenusFieldMask) && getMFActivePopupMenus()->size() > 0) { _PopupConnections.clear(); for(UInt32 i(0) ; i<getMFActivePopupMenus()->size() ; ++i) { getActivePopupMenus(i)->setParentWindow(this); _PopupConnections[getActivePopupMenus(i)].push_back(boost::shared_ptr<boost::signals2::scoped_connection>(new boost::signals2::scoped_connection(getParentDrawingSurface()->getEventProducer()->connectMouseClicked(boost::bind(&InternalWindow::popupMenuMousePressed, this, _1))))); _PopupConnections[getActivePopupMenus(i)].push_back(boost::shared_ptr<boost::signals2::scoped_connection>(new boost::signals2::scoped_connection(getParentDrawingSurface()->getEventProducer()->connectMousePressed(boost::bind(&InternalWindow::popupMenuMousePressed, this, _1))))); _PopupConnections[getActivePopupMenus(i)].push_back(boost::shared_ptr<boost::signals2::scoped_connection>(new boost::signals2::scoped_connection(getParentDrawingSurface()->getEventProducer()->connectMouseReleased(boost::bind(&InternalWindow::popupMenuMouseReleased, this, _1))))); _PopupConnections[getActivePopupMenus(i)].push_back(boost::shared_ptr<boost::signals2::scoped_connection>(new boost::signals2::scoped_connection(getParentDrawingSurface()->getEventProducer()->connectKeyPressed(boost::bind(&InternalWindow::popupMenuKeyPressed, this, _1))))); _PopupConnections[getActivePopupMenus(i)].push_back(boost::shared_ptr<boost::signals2::scoped_connection>(new boost::signals2::scoped_connection(getParentDrawingSurface()->getEventProducer()->connectMouseMoved(boost::bind(&InternalWindow::popupMenuMouseMoved, this, _1))))); _PopupConnections[getActivePopupMenus(i)].push_back(boost::shared_ptr<boost::signals2::scoped_connection>(new boost::signals2::scoped_connection(getParentDrawingSurface()->getEventProducer()->connectMouseDragged(boost::bind(&InternalWindow::popupMenuMouseDragged, this, _1))))); } setLockInput(true); } if( (whichField & MenuBarFieldMask) && getMenuBar() != NULL) { getMenuBar()->setParentWindow(this); } if( (whichField & MenuBarFieldMask) || (whichField & TitlebarFieldMask)) { updateLayout(); } if( (whichField & TitleFieldMask) && getTitlebar() != NULL) { getTitlebar()->setTitle(getTitle()); } if( (whichField & TitlebarFieldMask) && getTitlebar() != NULL) { getTitlebar()->setParentWindow(this); } if((whichField & TitlebarFieldMask) || (whichField & BorderFieldMask) || (whichField & DisabledBorderFieldMask) || (whichField & FocusedBorderFieldMask) || (whichField & RolloverBorderFieldMask) || (whichField & DrawTitlebarFieldMask)) { TitlebarRefPtr TheTitlebar; if(getDrawTitlebar()) { TheTitlebar = getTitlebar(); } else { TheTitlebar = NULL; } if(getBorder() != NULL && getBorder()->getType().isDerivedFrom(WindowBorder::getClassType())) { dynamic_cast<WindowBorder*>(getBorder())->setTitlebar(TheTitlebar); } if(getDisabledBorder() != NULL && getDisabledBorder()->getType().isDerivedFrom(WindowBorder::getClassType())) { dynamic_cast<WindowBorder*>(getDisabledBorder())->setTitlebar(TheTitlebar); } if(getFocusedBorder() != NULL && getFocusedBorder()->getType().isDerivedFrom(WindowBorder::getClassType())) { dynamic_cast<WindowBorder*>(getFocusedBorder())->setTitlebar(TheTitlebar); } if(getRolloverBorder() != NULL && getRolloverBorder()->getType().isDerivedFrom(WindowBorder::getClassType())) { dynamic_cast<WindowBorder*>(getRolloverBorder())->setTitlebar(TheTitlebar); } } if( whichField & ClipBoundsFieldMask) { if(getTitlebar() != NULL) { getTitlebar()->updateClipBounds(); } } if( (whichField & TitlebarFieldMask) && getTitlebar() != NULL) { if(getTitlebar()->getTitleLabel() != NULL) { _TitleBarMousePressedConnection = getTitlebar()->getTitleLabel()->connectMousePressed(boost::bind(&InternalWindow::titlebarMousePressed, this, _1)); } if(getTitlebar()->getCloseButton() != NULL) { _CloseButtonActionConnection = getTitlebar()->getCloseButton()->connectActionPerformed(boost::bind(&InternalWindow::closeButtonAction, this, _1)); } if(getTitlebar()->getMaximizeButton() != NULL) { _MaximizeButtonActionConnection = getTitlebar()->getMaximizeButton()->connectActionPerformed(boost::bind(&InternalWindow::maximizeButtonAction, this, _1)); } if(getTitlebar()->getIconifyButton() != NULL) { _IconifyButtonActionConnection = getTitlebar()->getIconifyButton()->connectActionPerformed(boost::bind(&InternalWindow::iconifyButtonAction, this, _1)); } } if( (whichField & IconableFieldMask) && getTitlebar() != NULL) { getTitlebar()->setDrawIconify(getIconable()); } if( (whichField & MaximizableFieldMask) && getTitlebar() != NULL) { getTitlebar()->setDrawMaximize(getMaximizable()); } if( (whichField & ClosableFieldMask) && getTitlebar() != NULL) { getTitlebar()->setDrawClose(getClosable()); } Inherited::changed(whichField, origin, details); }
void InternalWindow::mousePressed(MouseEventDetails* const e) { if(!getLockInput()) { //Check if the Mouse is whithin the resize border width if(getResizable()) { WindowArea TheArea(getCursurArea(e->getLocation())); switch(TheArea) { case WINDOW_LEFT_BORDER: case WINDOW_RIGHT_BORDER: case WINDOW_TOP_BORDER: case WINDOW_BOTTOM_BORDER: case WINDOW_TOP_LEFT_BORDER: case WINDOW_BOTTOM_RIGHT_BORDER: case WINDOW_TOP_RIGHT_BORDER: case WINDOW_BOTTOM_LEFT_BORDER: setLockInput(true); _WindowStartPosition = getPosition(); _WindowStartSize = getSize(); _MouseStartPosition = e->getLocation(); _BorderDragged = TheArea; _BorderDragMouseDraggedConnection = getParentDrawingSurface()->getEventProducer()->connectMouseDragged(boost::bind(&InternalWindow::borderDragMouseDragged, this, _1)); _BorderDragMouseReleasedConnection = getParentDrawingSurface()->getEventProducer()->connectMouseReleased(boost::bind(&InternalWindow::borderDragMouseReleased, this, _1)); _BorderDragKeyPressedConnection = getParentDrawingSurface()->getEventProducer()->connectKeyPressed(boost::bind(&InternalWindow::borderDragKeyPressed, this, _1)); break; } } if(getMenuBar() != NULL) { bool isContained; isContained = getMenuBar()->isContained(e->getLocation(), true); checkMouseEnterExit(e,e->getLocation(),getMenuBar(),isContained,e->getViewport()); if(isContained) { getMenuBar()->mousePressed(e); if(e->isConsumed()) return; Component::mousePressed(e); return; } } if(getTitlebar() != NULL) { bool isContained; isContained = getTitlebar()->isContained(e->getLocation(), true); checkMouseEnterExit(e,e->getLocation(),getTitlebar(),isContained,e->getViewport()); if(isContained) { getTitlebar()->mousePressed(e); if(e->isConsumed()) return; Component::mousePressed(e); return; } } //ComponentContainer MousePressed Handling bool isContained(false); for(Int32 i(getMFChildren()->size()-1) ; i>=0 ; --i) { isContained = getChildren(i)->isContained(e->getLocation(), true); checkMouseEnterExit(e,e->getLocation(),getChildren(i),isContained,e->getViewport()); if(isContained) { takeFocus(); if(!getChildren(i)->getType().isDerivedFrom(ComponentContainer::getClassType())) { getChildren(i)->takeFocus(); } getChildren(i)->mousePressed(e); if(e->isConsumed()) return; break; } } Component::mousePressed(e); } }
void InternalWindow::changed(ConstFieldMaskArg whichField, UInt32 origin, BitVector details) { if( ((whichField & FocusedFieldMask) || (whichField & TitlebarFieldMask))&& getTitlebar() != NULL) { getTitlebar()->setEnabled(getFocused()); } if( (whichField & ActiveToolTipFieldMask) && getActiveToolTip() != NULL) { getActiveToolTip()->updateClipBounds(); } if( (whichField & ActivePopupMenusFieldMask) && getMFActivePopupMenus()->size() > 0) { for(UInt32 i(0) ; i<getMFActivePopupMenus()->size() ; ++i) { getActivePopupMenus(i)->setParentContainer(this); getActivePopupMenus(i)->setParentWindow(this); } getDrawingSurface()->getEventProducer()->addMouseListener(&_PopupMenuInteractionListener); getDrawingSurface()->getEventProducer()->addMouseMotionListener(&_PopupMenuInteractionListener); getDrawingSurface()->getEventProducer()->addKeyListener(&_PopupMenuInteractionListener); setLockInput(true); } if( (whichField & MenuBarFieldMask) && getMenuBar() != NULL) { getMenuBar()->setParentContainer(this); getMenuBar()->setParentWindow(this); } if( (whichField & MenuBarFieldMask) || (whichField & TitlebarFieldMask)) { updateLayout(); } if( (whichField & TitleFieldMask) && getTitlebar() != NULL) { getTitlebar()->setTitle(getTitle()); } if( (whichField & TitlebarFieldMask) && getTitlebar() != NULL) { getTitlebar()->setParentContainer(this); getTitlebar()->setParentWindow(this); } if((whichField & TitlebarFieldMask) || (whichField & BorderFieldMask) || (whichField & DisabledBorderFieldMask) || (whichField & FocusedBorderFieldMask) || (whichField & RolloverBorderFieldMask) || (whichField & DrawTitlebarFieldMask)) { TitlebarRefPtr TheTitlebar; if(getDrawTitlebar()) { TheTitlebar = getTitlebar(); } else { TheTitlebar = NULL; } if(getBorder() != NULL && getBorder()->getType().isDerivedFrom(WindowBorder::getClassType())) { dynamic_cast<WindowBorder*>(getBorder())->setTitlebar(TheTitlebar); } if(getDisabledBorder() != NULL && getDisabledBorder()->getType().isDerivedFrom(WindowBorder::getClassType())) { dynamic_cast<WindowBorder*>(getDisabledBorder())->setTitlebar(TheTitlebar); } if(getFocusedBorder() != NULL && getFocusedBorder()->getType().isDerivedFrom(WindowBorder::getClassType())) { dynamic_cast<WindowBorder*>(getFocusedBorder())->setTitlebar(TheTitlebar); } if(getRolloverBorder() != NULL && getRolloverBorder()->getType().isDerivedFrom(WindowBorder::getClassType())) { dynamic_cast<WindowBorder*>(getRolloverBorder())->setTitlebar(TheTitlebar); } } if( whichField & ClipBoundsFieldMask) { if(getTitlebar() != NULL) { getTitlebar()->updateClipBounds(); } } if( (whichField & TitlebarFieldMask) && getTitlebar() != NULL) { if(getTitlebar()->getTitleLabel() != NULL) { getTitlebar()->getTitleLabel()->addMouseListener(&_TitlebarStartDragListener); } if(getTitlebar()->getCloseButton() != NULL) { getTitlebar()->getCloseButton()->addActionListener(&_CloseButtonListener); } if(getTitlebar()->getMaximizeButton() != NULL) { getTitlebar()->getMaximizeButton()->addActionListener(&_MaximizeButtonListener); } if(getTitlebar()->getIconifyButton() != NULL) { getTitlebar()->getIconifyButton()->addActionListener(&_IconifyButtonListener); } } if( (whichField & IconableFieldMask) && getTitlebar() != NULL) { getTitlebar()->setDrawIconify(getIconable()); } if( (whichField & MaximizableFieldMask) && getTitlebar() != NULL) { getTitlebar()->setDrawMaximize(getMaximizable()); } if( (whichField & ClosableFieldMask) && getTitlebar() != NULL) { getTitlebar()->setDrawClose(getClosable()); } Inherited::changed(whichField, origin, details); }
void InternalWindow::mousePressed(const MouseEventUnrecPtr e) { if(!getLockInput()) { //Check if the Mouse is whithin the resize border width if(getResizable()) { WindowArea TheArea(getCursurArea(e->getLocation())); switch(TheArea) { case WINDOW_LEFT_BORDER: case WINDOW_RIGHT_BORDER: case WINDOW_TOP_BORDER: case WINDOW_BOTTOM_BORDER: case WINDOW_TOP_LEFT_BORDER: case WINDOW_BOTTOM_RIGHT_BORDER: case WINDOW_TOP_RIGHT_BORDER: case WINDOW_BOTTOM_LEFT_BORDER: setLockInput(true); _BorderDraggedListener.setWindowStartPosition(getPosition()); _BorderDraggedListener.setWindowStartSize(getSize()); _BorderDraggedListener.setMouseStartPosition(e->getLocation()); _BorderDraggedListener.setBorderDragged(TheArea); getDrawingSurface()->getEventProducer()->addMouseMotionListener(&_BorderDraggedListener); getDrawingSurface()->getEventProducer()->addMouseListener(&_BorderDraggedListener); getDrawingSurface()->getEventProducer()->addKeyListener(&_BorderDraggedListener); break; } } if(getMenuBar() != NULL) { bool isContained; isContained = getMenuBar()->isContained(e->getLocation(), true); checkMouseEnterExit(e,e->getLocation(),getMenuBar(),isContained,e->getViewport()); if(isContained) { getMenuBar()->mousePressed(e); Component::mousePressed(e); return; } } if(getTitlebar() != NULL) { bool isContained; isContained = getTitlebar()->isContained(e->getLocation(), true); checkMouseEnterExit(e,e->getLocation(),getTitlebar(),isContained,e->getViewport()); if(isContained) { getTitlebar()->mousePressed(e); Component::mousePressed(e); return; } } //ComponentContainer MousePressed Handling bool isContained(false); for(Int32 i(getMFChildren()->size()-1) ; i>=0 ; --i) { isContained = getChildren(i)->isContained(e->getLocation(), true); checkMouseEnterExit(e,e->getLocation(),getChildren(i),isContained,e->getViewport()); if(isContained) { takeFocus(); if(!getChildren(i)->getType().isDerivedFrom(ComponentContainer::getClassType())) { getChildren(i)->takeFocus(); } getChildren(i)->mousePressed(e); break; } } Component::mousePressed(e); } }