Skip to content

Add Suport for drag and drop of skill/gems#1964

Open
mataide wants to merge 8 commits into
PathOfBuildingCommunity:devfrom
mataide:feature/draganddrop
Open

Add Suport for drag and drop of skill/gems#1964
mataide wants to merge 8 commits into
PathOfBuildingCommunity:devfrom
mataide:feature/draganddrop

Conversation

@mataide
Copy link
Copy Markdown

@mataide mataide commented May 24, 2026

Fixes #1849.

Description of the problem being solved:

  1. Allow the skills/gems to be ordered with drag and drop.
  2. Make the main active gem always on top.
  3. Do not allow support gems as first pick.
  4. Disabled quality and level for support gems.
  5. Hitting "x" on top level gem open the list to change the gem instead of removing it.

Link to a build that showcases this PR:

eNq9W1t32zgOfm5_hY7fW1_SNJk5Tuc4dtL4nKTx2mm7-9TDSLTNDUV6RMqJ59cPwIsk32LKmd0-tBKFDwBBEARAt_vHS8qjJc0Uk-Ki0f7YakRUxDJhYnbR-P5w_eG88ceX990R0fP76WXOOH7pfHn_rmteopgTpb6RlF40xkTMaNaIiIqpSPrlh29S0EbE6ZJyENGI4jnJSKxpdotDvVzLO5kAnc5yoEsJExMZP1H9NZP5wiA0yWZU__Bqtn7B2JLRZ4sb3o3uxw8NUOpdd8TJimYTTXSk4K-LRl-mj0zQZDCaAIbwHACtRnM38URnBdHZPqIx_bNKd7qPbkBfCqL26SvcqoTnn_cRDoUO0q1Kt5_bgC6lBmMetslDxh5zTQMIpSb86mZUUH46-3h2et5pnXQ6nfNPJ_two_lKsZjwO_LC0jy9YfqBPNFSs897bXfLZnMtwCH3QfcLvWYZrY_qS54cgZoTqerPbkCyJ0GVOmz5MVU0W4KPByNu2ZQGqDBZ0Ph3pB2K-LDDI-F3kTllgtZvSsc0lhB_yCOngYhSxIhmEGpKd2-3Wq-LmlHh5K0O2-iOCFJOuvWqjZC2aqNXme6w0WkgoMaMEbh7xp39U2EZC2JuKXdMpAamxlyuBM1mq8mcUZ4ctnGV2k--TxYB4R-XsooOWtJ1cbVcbExmdb3yaklUNW6fvT4ZSx02jyVJKMQqEQcE-zvKKa2FGGXyvzTWjNeDwTQ4r484UtqATjnCpBgTDQdLMCJUQC9LZZ4FuqIlDlo8f4gOSGp8KsnjsOP9ajrFCS_pJYekK3QaBcoYuxa0pzWJnwYymdVb0VqIdf0m-WIBUQd3QigDzA_gWGWqjE8fTgOo72EXB8UaTCXCBZTUwQKK5ChcygYkfC6Y4GyICSEOFlAs5x1EyRQODVhWmkD2Xx4e-8MOHDew5GOSsFzdUQ3vZc62d0FzcLiQisEQSh1EO5LPMN851jKqHjUkjwVgf0qbUfHXKpj_GnmQgCuR5Blun2AZm4hdYi7z6VRFMZRpRN-CU1w0GtEjjPnnOM8UdS8W8cBSOH2UGhBNImVKxWvGoZ4cABVKQ40iRUkWzz2X8u2acP4IEQhHE1cF_SAZI0J3TLG5Mdj2ztVtmpIXn_qEx8roMhSLXEfC1LkpU_EvVB3LUhCpM1NFX11fX_Ufhj-unPpViHpinP8SefqIlbP9t3TmiT2KIpZADETKCcWzBljnj8p-u2j8gDrYfBxQTRiHVYkl52ShKKCmhCu6gxuUIfakWOdl-FS-BXD6CXbNGDpDldHVC83w_Cy_BrCCfbRDHasLZke47kGMTHRYZ2VPnT5RGg72MC59kwtXmeBI2FSG6YLwDeP6sZAJ4MQfVguKe0ntMIqGbwpSBDZlsaMJW3V__q3ZJoY9RuJVEI9LvmVbNxQAHkmmMCmpov1YiFVngulNq7qxEP-iMVmto91QAPiW0nj-lbAN7YthKW7QXQI4XXHaYxxPsY2V_SaFcXbYNyVBAMM7iDv2hNxgeK_nNCu-BHCCXWK7PWpr9xTjIbYy3YU1M5mRkLmYorsKtSNBu55t7Vg_FrIsazXmWjBb-xLAyqdCVSZ2LHAZXJGwtgRuLGQmvkRcm4QfDNkoJuT2lpIl29Fi6-NbGZrq4R_QC-uDf4BNUQEG8brmRD1t7BY_diT8O1StTK92cDEN8jAmuOHexgH33ds4YNKXBqHHW5nIeDP_2IMsUtFNwTOqjsYXaevRHGxyfTTc5P4haAz94LFY4OyK_eWnwGNkN6-JzsUALBK8Kw6otTt4HDdFd1LunOkejnb_uzb8dmhzH4IDyT5GcIzfhOaLezkVle8NJVzPR1LytzHcuod4CzNsW-YLIhLP7n5Xml57GaRWwNNUWwPsjr7VhoKmqx2MCr26TV_QdR8ySiPiW0cx1mJWELxAERlLkZBs1SuvOIfASDBcFPMmoAwVhONox48lph4VUBQq7PR_Ov1t7ZLUfdcguXLD-QlvQhVwW7kEDutVi4Kds6oKMhq-634f35qHd3OtF-r3ZvP5-fnjgui5nNIXxulHqLGbCxAIc_tgCs8PKLPZgz-Xs575Yxg1PaeuvYdVTfuGi5sxmIUV0y2yQv8BSueXb3aapvwtnpnQ_tnxaq4x6zbRvmYlcAHwYUQyvYrIYgET9mseTebyuZcsMXQ8wE5QxQfgA-UmcakS53ZZTamkIgUobAHKTH-lKZZVAOzd3oKOdkhdrgajyTXmdxsXxs4TbO2tXXtgSnKOsH_lBA9q222ocvJX2SXprb38FjJLi4tO51iOt3HhtltKMxhx8oggeyXeKzUxzmp0YSLmeUKHwvWrCntQgRdqSfVOvcKgEPSuC7ptEhvXQL_CTgkEsYd5LhKa2eZOI_qzOmsoPUH3IXx_cdugOuQUNeMzmiLPO6pJQjRpDjVYq4kmaxqd4GldHm7VXFibu98OdFp-Zl-5fCS841XGZordro5HVDCp0rc9_dK2drYn6dzzdbs4X-pNYQuCb_nWtzXQw7P8n9io8N9SrBG1ZaT2QRuVHKLh8LCFNufpVEHpNax1CVZO_k8mMrKOtY4BBxnGUG5Zo2v92YU1t7tNaLPhyJ8y2LeL_pLSx4aThnn7t7EIPv2n0sac6MzEVIxkYJkBgzMhMwlP9RjrSzFlMxe07IuLWkabYsTFmkgzzakpeTBMudgDaxTTueSwG1yTkprz0_VWyy5lp-VnvA1JaCrFNUS7CbbdVKW1-QrIyMGrlBGe4B5xcgDgbrzgWDc_QCqBZ4dEYTvP98M86PQAxixWSX7eOSSjejXiUa8optiM8fupKQDAdqYy2GgL74KlsH5swRmCcgGnF2RmkBXzVRC6sIbv-xa2b4WI_MkwEaeJWes-7rgJ5dOK5ENGXb-8LIG_fX4F2Z_j1tp0r_30E4xgNejtcvsbsVqqWXvCSC0U5pYMM5i-zLJ8ge3zfrbacoKQDVRLbrmQPqzoXppK5JOEW8r13MvNF-Y6eD-w-q6Ocdiio1UA2menAU6OnvaTEvNLqU1_6IRYd3M7n7YCXKFWTDNRY2sz-l_zBS7iV_iLJLTmOlbvpYMnuHXXHIIsVe7nGSq83mctHf4VHpNYmtPxyF1da1F8B7aI_a3P_g6zWRyttpo0b_j4TWpb4eCwf-kOU0wZIvqC_5hCp1rVdk1O405xfPaVR67oxFSg4L0LKcywy_f3Jwb2ytFy8ef-fkau_OASaAEzeoRSEBMPawZLHrWjyTPe2iOFLV6br-NMIzDq1EDc0lkteqdZp65mfkY1ID3wW6prAG4oT2sBLmWyiry31UBJbDYF04-xTKpjY9PirWeqmqtu_eSkzqQp1zUVatd0w3Zdm9YGnNQ2UR0RUL8sqTpiL9V2jW1Et-kij_3dRgbH0cTUMz8phmBlm28m3n15321u_S-DvwEQaeYW

Before screenshot:

image

After screenshot:

image

@LocalIdentity LocalIdentity added the enhancement New feature, calculation, or mod label May 24, 2026
@mataide
Copy link
Copy Markdown
Author

mataide commented May 26, 2026

@LocalIdentity Final version as requested.

Guard the GemSelectControl focusLost+no-match branch (introduced by
upstream PR PathOfBuildingCommunity#1843) against deleting the main active skill, matching
the X-button handler's slot-1 protection.

Without this guard, clicking X on slot 1 would open the gem picker as
intended, but closing the picker (Escape / click-away / re-click X)
without selecting a gem would trigger
GemSelectControl:OnFocusLost -> UpdateGem(..., focusLost=true) ->
the new "elseif focusLost and not bufMatchesGem" branch in the
nameSpec callback, which calls deleteGem() and removes the main
active skill.

For slot >= 2 the upstream auto-clean behavior is preserved.
@mataide mataide force-pushed the feature/draganddrop branch from 11213ca to 506dc5d Compare May 26, 2026 23:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature, calculation, or mod

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants