void OpWindowList::OnDragStart(OpWidget* widget, INT32 pos, INT32 x, INT32 y) { DesktopDragObject* drag_object = GetDragObject(DRAG_TYPE_WINDOW, x, y); if (!drag_object) return; DesktopWindow* window = GetDesktopWindowByPosition(pos); if(window) { if (window->GetType() == WINDOW_TYPE_DEVTOOLS #ifdef DEVTOOLS_INTEGRATED_WINDOW || window->IsDevToolsOnly() #endif // DEVTOOLS_INTEGRATED_WINDOW || window->GetType() == WINDOW_TYPE_BROWSER) return; // No dragging dragonfly window if (window->GetType() == WINDOW_TYPE_DOCUMENT) { drag_object->SetURL(((DocumentDesktopWindow*)window)->GetWindowCommander()->GetCurrentURL(FALSE)); drag_object->SetTitle(((DocumentDesktopWindow*)window)->GetWindowCommander()->GetCurrentTitle()); } } g_drag_manager->StartDrag(drag_object, NULL, FALSE); }
void OpStatusField::OnDragStart(const OpPoint& point) { if (!g_application->IsDragCustomizingAllowed()) return; DesktopDragObject* drag_object = GetDragObject(WIDGET_TYPE_STATUS_FIELD, point.x, point.y); if (drag_object) { drag_object->SetObject(this); drag_object->SetID(m_status_type); g_drag_manager->StartDrag(drag_object, NULL, FALSE); } }
Int32 PaletteColor::Message(const BaseContainer& msg, BaseContainer& result) { if(msg.GetId() == BFM_DRAGRECEIVE){ Int32 type = 0; void *object = NULL; GetDragObject(msg, &type, &object); if(type == DRAGTYPE_RGB){ Vector *color = static_cast<Vector*>(object); if(msg.GetInt32(BFM_DRAG_FINISHED)){ switch(m_hoverState){ case HOVER_LEFT: Palette::InsertPaletteColor(m_palette, m_colorID, Color(*color).SetSource(COLOR_SOURCE_DISPLAY)); break; case HOVER_RIGHT: Palette::InsertPaletteColor(m_palette, m_colorID+1, Color(*color).SetSource(COLOR_SOURCE_DISPLAY)); break; case HOVER_CENTER: Palette::SetPaletteColor(m_palette, m_colorID, Color(*color).SetSource(COLOR_SOURCE_DISPLAY)); break; case HOVER_DELETE: Palette::RemovePaletteColor(m_palette, m_colorID); break; } m_hoverState = HOVER_NONE; } else{ if (msg.GetInt32(BFM_DRAG_LOST)){ m_hoverState = HOVER_NONE; Redraw(); } else{ BaseContainer state; if(GetInputState(BFM_INPUT_MOUSE, BFM_INPUT_MOUSELEFT, state)){ if((*color)[0] <0.f && ((*color)[1] < 0.f && ((*color)[2] < 0.f))){ m_hoverState = HOVER_DELETE; }else{ Float sideWidth = 0.2; Int32 x = state.GetInt32(BFM_INPUT_X); Int32 y = state.GetInt32(BFM_INPUT_Y); Global2Local(&x,&y); if(x < m_w*sideWidth){ m_hoverState = HOVER_LEFT; } else{ if(x > m_w*(1.0-sideWidth)){ m_hoverState = HOVER_RIGHT; } else{ m_hoverState = HOVER_CENTER; } } } Redraw(); GeUserArea::Message(msg, result); return SetDragDestination(MOUSE_POINT_HAND); } } } } } return GeUserArea::Message(msg, result); }
void Mint::Draw(void) { if(!m_pMainFrame) return; MDrawContext* pDC = m_pDC; if(pDC==NULL) return; pDC->SetOpacity(0xFF); m_pMainFrame->Draw(pDC); MRECT sr = m_pMainFrame->GetScreenRect(); pDC->SetOrigin(MPOINT(sr.x, sr.y)); pDC->SetClipRect(sr); // Candidate List ±×¸®±â DrawCandidateList(pDC, m_CandidateListPos); // Drag & Drop /* MDragObject* pDragObject = MGetDragObject(); if(pDragObject!=NULL){ pDC->SetBitmap(pDragObject->GetBitmap()); MPOINT p = MEvent::GetMousePos(); pDC->Draw(p); pDC->Text(p, pDragObject->GetString()); } */ //int nDragObjectID = GetDragObject(); MWidget* pDragSourceObject = GetDragObject(); if(pDragSourceObject!=NULL && m_bVisibleDragObject==true){ // ÇöÀç À§Ä¡¿¡¼ µå·ÓÇÒ ¼ö ÀÖ´Â À§Á¬À» Ç¥½Ã if(m_pDropableObject!=NULL){ MRECT r = m_pDropableObject->GetScreenRect(); pDC->SetColor(0, 0, 0, 32); pDC->FillRectangle(r); } // Ä¿¼¿¡ ºÙ´Â µå·¡±× ¿ÀºêÁ§Æ® ±×¸®±â pDC->SetBitmap(m_pDragObjectBitmap); MPOINT p = MEvent::GetMousePos(); p.x-=(m_pDragObjectBitmap!=NULL?m_pDragObjectBitmap->GetWidth()/2:0); p.y-=(m_pDragObjectBitmap!=NULL?m_pDragObjectBitmap->GetHeight()/2:0); if (m_pDragObjectBitmap) { pDC->SetOpacity(128); pDC->Draw(p.x, p.y, m_pDragObjectBitmap->GetWidth(), m_pDragObjectBitmap->GetHeight()); pDC->SetOpacity(0xFF); } p.x+=((m_pDragObjectBitmap!=NULL?m_pDragObjectBitmap->GetWidth():0) + 2); p.y+=((m_pDragObjectBitmap!=NULL?m_pDragObjectBitmap->GetHeight()/2:0)-pDC->GetFont()->GetHeight()/2); pDC->SetColor(0, 0, 0, 128); pDC->Text(p, m_szDragObjectString); pDC->SetColor(255, 255, 255, 128); p.x--; p.y--; pDC->Text(p, m_szDragObjectString); } }