(window.webpackJsonp=window.webpackJsonp||[]).push([[256],{316:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return i})),n.d(t,"metadata",(function(){return l})),n.d(t,"rightToc",(function(){return c})),n.d(t,"default",(function(){return p}));var r=n(2),o=n(6),a=(n(0),n(469)),i={sidebar_label:"Drag and drop",title:"Drag and drop"},l={unversionedId:"guides/drag-drop",id:"guides/drag-drop",isDocsHomePage:!1,title:"Drag and drop",description:"NodeGui supports drag and drop functionality.",source:"@site/docs/guides/drag-drop.md",slug:"/guides/drag-drop",permalink:"/docs/guides/drag-drop",editUrl:"https://github.com/nodegui/nodegui/edit/master/website/docs/guides/drag-drop.md",version:"current",sidebar_label:"Drag and drop",sidebar:"guides",previous:{title:"Images",permalink:"/docs/guides/images"},next:{title:"Networking",permalink:"/docs/guides/networking"}},c=[],s={rightToc:c};function p(e){var t=e.components,n=Object(o.a)(e,["components"]);return Object(a.b)("wrapper",Object(r.a)({},s,n,{components:t,mdxType:"MDXLayout"}),Object(a.b)("p",null,"NodeGui supports drag and drop functionality."),Object(a.b)("p",null,"In order to enable a widget to accept drops you need call"),Object(a.b)("pre",null,Object(a.b)("code",Object(r.a)({parentName:"pre"},{className:"language-js"}),"widget.setAcceptDrops(true);\n")),Object(a.b)("p",null,"Following this you can then listen to few QEvents like ",Object(a.b)("inlineCode",{parentName:"p"},"DragEnter"),", ",Object(a.b)("inlineCode",{parentName:"p"},"DragMove"),", ",Object(a.b)("inlineCode",{parentName:"p"},"DragLeave")," and ",Object(a.b)("inlineCode",{parentName:"p"},"Drop")),Object(a.b)("p",null,"The complete code would look something like this:"),Object(a.b)("pre",null,Object(a.b)("code",Object(r.a)({parentName:"pre"},{className:"language-js"}),"widget.setAcceptDrops(true);\n\nwidget.addEventListener(WidgetEventTypes.DragEnter, (e) => {\n let ev = new QDragMoveEvent(e);\n console.log('dragEnter', ev.proposedAction());\n let mimeData = ev.mimeData();\n mimeData.text(); //Inspection of text works\n console.log('mimeData', {\n hasColor: mimeData.hasColor(),\n hasHtml: mimeData.hasHtml(),\n hasImage: mimeData.hasImage(),\n hasText: mimeData.hasText(),\n hasUrls: mimeData.hasUrls(),\n html: mimeData.html(),\n text: mimeData.text(),\n }); //Inspection of MIME data works\n let urls = mimeData.urls(); //Get QUrls\n for (let url of urls) {\n let str = url.toString();\n console.log('url', str); //Log out Urls in the event\n }\n ev.accept(); //Accept the drop event, which is crucial for accepting further events\n});\nwidget.addEventListener(WidgetEventTypes.DragMove, (e) => {\n let ev = new QDragMoveEvent(e);\n console.log('dragMove');\n});\nwidget.addEventListener(WidgetEventTypes.DragLeave, (e) => {\n console.log('dragLeave', e);\n let ev = new QDragLeaveEvent(e);\n ev.ignore(); //Ignore the event when it leaves\n console.log('ignored', ev);\n});\nwidget.addEventListener(WidgetEventTypes.Drop, (e) => {\n let dropEvent = new QDropEvent(e);\n let mimeData = dropEvent.mimeData();\n console.log('dropped', dropEvent.type());\n let urls = mimeData.urls();\n for (let url of urls) {\n let str = url.toString();\n console.log('url', str); //Example of inspection of dropped data.\n }\n});\n")))}p.isMDXComponent=!0},469:function(e,t,n){"use strict";n.d(t,"a",(function(){return d})),n.d(t,"b",(function(){return m}));var r=n(0),o=n.n(r);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=o.a.createContext({}),p=function(e){var t=o.a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},d=function(e){var t=p(e.components);return o.a.createElement(s.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return o.a.createElement(o.a.Fragment,{},t)}},g=o.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,i=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),d=p(n),g=r,m=d["".concat(i,".").concat(g)]||d[g]||u[g]||a;return n?o.a.createElement(m,l(l({ref:t},s),{},{components:n})):o.a.createElement(m,l({ref:t},s))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,i=new Array(a);i[0]=g;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l.mdxType="string"==typeof e?e:r,i[1]=l;for(var s=2;s