Example #1
0
void geGUIBase::DragDrop(int x, int y, MDropData* dropObject)
{
	if(isPointInsideWindow(x, y) /*|| !isMouseBoundCheckEnabled()*/)
	{
		if(m_uGUIID==GEGUI_LAYOUT && getActiveWindowPtrOnlyForLayout())	//layout hack
		{
			getActiveWindowPtrOnlyForLayout()->DragDrop(x-getPos().x, y-getPos().y-getTopMarginOffsetHeight(), dropObject);
		}
		else
		{
			for(std::vector<geGUIBase*>::iterator it = m_vControls.begin(); it != m_vControls.end(); ++it)
			{
				geGUIBase* obj = *it;
				obj->DragDrop(x-getPos().x, y-getPos().y-getTopMarginOffsetHeight(), dropObject);
			}
		}

		if(isPointInsideClientArea(x-getPos().x, y-getPos().y-getTopMarginOffsetHeight())/*  || !isMouseBoundCheckEnabled()*/)
		//if(isPointInsideWindow(x, y)/*  || !isMouseBoundCheckEnabled()*/)
		{
			onDragDrop(x-getPos().x, y-getPos().y-getTopMarginOffsetHeight(), dropObject);
			onMouseLButtonUp(x-getPos().x, y-getPos().y-getTopMarginOffsetHeight(), -1);	//event from a drag drop
		}
	}
}
FavoriteDirsPage::FavoriteDirsPage(dwt::Widget* parent) : PropPage(parent) {
	createDialog(IDD_FAVORITE_DIRSPAGE);
	setHelpId(IDH_FAVORITE_DIRSPAGE);

	WinUtil::setHelpIds(this, helpItems);
	PropPage::translate(handle(), texts);

	attachChild(directories, IDC_FAVORITE_DIRECTORIES);
	directories->setTableStyle(LVS_EX_LABELTIP | LVS_EX_FULLROWSELECT);

	TStringList columns;
	columns.push_back(T_("Favorite name"));
	columns.push_back(T_("Directory"));
	directories->createColumns(columns);
	directories->setColumnWidth(0, 100);
	directories->setColumnWidth(1, directories->getSize().x - 120);

	StringPairList dirs = FavoriteManager::getInstance()->getFavoriteDirs();
	for(StringPairIter j = dirs.begin(); j != dirs.end(); j++) {
		TStringList row;
		row.push_back(Text::toT(j->second));
		row.push_back(Text::toT(j->first));
		directories->insert(row);
	}

	directories->onDblClicked(std::tr1::bind(&FavoriteDirsPage::handleDoubleClick, this));
	directories->onKeyDown(std::tr1::bind(&FavoriteDirsPage::handleKeyDown, this, _1));
	directories->onRaw(std::tr1::bind(&FavoriteDirsPage::handleItemChanged, this, _1, _2), dwt::Message(WM_NOTIFY, LVN_ITEMCHANGED));

	onDragDrop(std::tr1::bind(&FavoriteDirsPage::handleDragDrop, this, _1));

	attachChild<Button>(IDC_RENAME)->onClicked(std::tr1::bind(&FavoriteDirsPage::handleRenameClicked, this));

	attachChild<Button>(IDC_REMOVE)->onClicked(std::tr1::bind(&FavoriteDirsPage::handleRemoveClicked, this));

	attachChild<Button>(IDC_ADD)->onClicked(std::tr1::bind(&FavoriteDirsPage::handleAddClicked, this));
}
Example #3
0
/// Redirect drag and drop listener
void Window::handleInternalDragDrop(int x, int y, const StringList& fileNames)
{
	onDragDrop(x, y, fileNames);
}
void UIComponentDraggable::onEvent(Event event, Widget* view)
{
	if(event.isPointerPressed())
	{
		vec2i mouse_position = event.getPointerPosition();
		if(view->isHit(vec2(mouse_position.x, mouse_position.y)))
		{
			previousMousePosition = mouse_position;
			dragging = true;

			// drag started, create the clone element
			Widget* temp_view = new Widget();
//			temp_view->addController(new UIDebugWidget(Color::Yellow));
			temp_view->setSize(100.f, 100.f);
			temp_view->setPosition(view->getWorldPosition().xy());
			view->getCore()->dragElement = temp_view;
			view->getCore()->dragElementOwner = this;

			Log("Drag-Clone Start");
		}
	}
	else if(event.isPointerMoved())
	{
		if(dragging)
		{
			vec2i mouse_position = event.getPointerPosition();
			vec2i offset = mouse_position - previousMousePosition;

			vec2 axisCancellation(0.f, 0.f);
			if(mAxis == Both || mAxis == HorizontalOnly)
				axisCancellation.x = 1.f;
			if(mAxis == Both || mAxis == VerticalOnly)
				axisCancellation.y = 1.f;

			if (view->getCore()->dragElement && view->getCore()->dragElementOwner == this)
			{
				//view->getCore()->dragElement->setPosition(view->getCore()->dragElement->getPosition() + vec2(offset.x, offset.y) * axisCancellation);
				
				view->getCore()->dragElement->setPosition(event.getPointerPosition().x, event.getPointerPosition().y);

			}
			
			// can't trespass parent
		/*	if(view->getParent() && view->getPosition().x < view->getParent()->getPosition().x)
			{
				view->setPosition(view->getParent()->getPosition().x, view->getPosition().y);
			}
			if(view->getParent() && view->getPosition().x + view->getSize().x > view->getParent()->getPosition().x + view->getParent()->getSize().x)
			{
				view->setPosition(view->getParent()->getPosition().x + view->getParent()->getSize().x - view->getSize().x, view->getPosition().y);
			}*/

			previousMousePosition = mouse_position;
		}
	}
	else if(event.isPointerReleased())
	{
		dragging = false;

		if (view->getCore()->dragElement  && view->getCore()->dragElementOwner == this)
		{
			Log("Drag-Clone Drop");

			UIDragEvent drag;
			drag.dropPosition = event.getPointerPosition();
			drag.dragSource = view;
			drag.dragElement = view->getCore()->dragElement;
			onDragDrop(drag);

			//Log("Emitted on %d", onDragDrop.size());

			delete view->getCore()->dragElement;
			view->getCore()->dragElement = nullptr;
			view->getCore()->dragElementOwner = nullptr;
		}
	}
}