Forum
    • Categories
    • Register
    • Login
    1. Home
    2. DanH
    3. Posts
    • Profile
    • Following 1
    • Followers 4
    • Topics 436
    • Posts 3,904
    • Groups 1

    Posts

    Recent Best Controversial
    • RE: Matrix Modulation System - Last Call for bugs fixes & changes!!

      @Christoph-Hart Had Claude Code implement the decoupled label system, whilst retaining original behaviour. Seems solid but needs further testing. Can't comment on the code quality, but happy to pass on the summary if interested.

      posted in General Questions
      DanHD
      DanH
    • Modulation Draggers don't destroy on disconnect via popup menu or matrix

      @Christoph-Hart When using matrixHandler.setSourceSelectionCallback(function(source) {}); which I think triggers the exclusive source mode, draggers don't remove on disconnect. Tested on latest commit.

      As per the gif below... They only disappear on double click

      HiseSnippet 6222.3oc6bszbabjeefjfWSr1Zs2cqToRkTUa3XKPIRH.9RRjki3KQKrhThhfVZ850qcCLM.FyAy.Oy.BBoRo7V0t2ygbwW1ZOr4CPtkbJ9ZNjpRUIe.TRNka62.ke+6ddzy..RJYZKUaEXaXL8y+ue08vc8baJ78c8LxUX+g8DF4di70G5DzYiNbKGiZaRMrCOvy5n8E9AFqOrG22WXZjK24+PZD4l5BFxO+watN2l6zTjzjgwCbsZJ11pqUPRq6t5crrs2haJ12pq1nWX0ZMcc1v01sOflymuhQOdyC3sE2kSC6b4MtM2uiQtKme9FsVZglUuVC90l6FMtwRKciEMmukIet4EMazfOm.cuvhsVxH2qcKSq.Wu5A7.guQtKrtq4v5cbG3n1fGX4a0vVPOT0nN1YUya4ZaRnH0pwFcrrM2MhL4afEc2Dh14UDseZ9crLshaOg38VxNXIyPm.l6boAuymB7ppCdUz.uw.R4z.oKn.o2Ne8ldV8BR5gfmeX9ZNABuVbvmzAE0XMN2Wek7W8xWlsiqYeaN.MEqmINh2smsfc6Z0uEawxUXDfa45Tnv9cr7Y3e4rCEdCYM3dhYa35HhmRPGd.yGHkOCewBbY88oVErtp0tazd4ScZQSpqvI.qn4PGdWqlQif1O+g9AhtkY0ZwF51m0zsaOriX4.HDuitxkumm3PK299IKobIXtsT6d7hFBHyPq3krsY9hPnFCqPW9W35YELLZZMcMELKGVGA1VroeQe+.1F0qytJa601h4GLz1xoMaVEHg+sgnIOBiALXgo0puSSZi41XgmgYxC3.FbfntDwe+BeTMrEfMwkCi0gSKivQ1XaOHrXxb.nenvdH0lqhuvcLYsQi9RRimfaNb1.2YoMuQeHwPvUCa2lG3yZ45QCxaTR66TnPMmLzSItpHydhTTNerFP5Z4BElks8V2Ceu1s2r9d3++.A1IfdEJrF.qQlX.2qsHflX0xr6UeipLxZRg4BeXWqflcJLe3S6IfrUCRVCzNKOPvCF3NlUSBiiHUMCaPGqlcXcEbG+XFKwPaI7jrkV8AWWa47D9t18kDk2+8Y8bsG1qiqCDD862qmqWPYFAIfF4YNJTDKTvYdfi31UwbjiCBkbOXMCrVHg.oHhEzjGJcL.Sl20suSPAHrwY9RAW.MD1Gt.zViMfjHbRQB7scClA74.VigPBNHf31zp94JBx9Rfql4mC8B2dBOcIZGGQSRl5ipU3.G2FDfQcXEYofYEvF.a1PHDPSaKHm3ggCXfaprCvsGCgPQ1ilXGPLrwr.3QKtOHCLkHGsPjpVQHxZWjAiG9kY20MPnLXDoo0f6a0jaCQdf4l.HrTZQXwCFPZGXj9QxnQRDgnhbyIJx6y385I.S.NpdmBW9pE1vEXoSP4t7CDa4gGhsOVpZ0JUlgsTkJSuRgBWE52hfK4yZBnDfFORPSgWdL2FeAnhJ4qlbBpHCclj0HPwgVaWLgPDnIlTaAsleYexpYF6QgbD7S+xzfjzB4BCJkuKFAWoiGBKRs0v8OhUws8cYCfkKwwr5JiGT+.T8HKlPxg1QeWMEERqB8.cIfNMc87vrsGVt.VHHleH2KjTb6PJwGvtkSaKGQYE3sS7VqblTp3GZ61.RLwNYXDS.p+BupEIZcpkqL.o5RyL0E1J3dCPDafXCJEYHsjxNzzrG+jPdUn+gAbXOEnHXFNtAVsrHw1FtPKIgJDxM7mQQRAqiGDvgjKmQbKN7.GQbIQwQgtMhWpIAXyDJONCji2HRca5BOtvT3IXqQTtmGXEQnwJYaWM6QaWe0VoPDtugMDvg.fcJVcoAfgRlRR0Jgxc3lJYFGnt0fbbRZ9lQ9Qap1xoyf3MocYMa6Dr2uTwhgffzHUFs.Xq.hgZt+7i2AXtD1I641qeOXl1oOSZ+CdAklijRhTHF99VscBWLcOWXCUTnQ4MTbJwbkOoX2gzte.7ZB6NEmgUjCwBvUUO+oyDCakrbLEGMFVjp8Xh86H88u4s1p1cqses6c25rO3a0mBJ88AvYvk.opsqzLdRLSNhArV1tbk4cKHZJTw13GZtMwqVWWeRLuaWWGXxwS.SM9DasETJ6C8YM8WadKn0FYJTo1tsKj92108.3+dKgvtTHqsNL6pGS.BbYHqjMGRRASGxJsdTjiT4lBUKksYB5AWkhZCV4IftkqsMvVNQFmUBngQPIM7skkizdImhlwm7r3h94dAfdn7uY4+NE.zSr5ZNXdh5X5h5cDhfREA7hXYIe0D6usGbsZBOvNBaY.PIwfVlAOAkU+lX4MUThkYW5RPmKYxKyd24medpIWOSg2rdbSq99Kylu2Qnwdj2Pm1KypVgd9IpsuVKMhE7boq8MPHiLF3mnaO3QtKBTGQApCNKq54wrBLLUaWO.CKszRqndNBLuap0sb4Kg9w9CxB2CAR83LHwhKtHf2tPmwxAQqG.VVDTmfEKJerivpcGrEyo583P7YsEsBn0oxgcVgHhJn8F23FqnALKubCAn9hiiNOqUWPFVljMKM6rVXXSmt+n095W+5niAVlAcR1XEdEh.XieWoopwQJxrNYv0n0op9iHh5dKyzYv6mjJSfzYQGD4Mr9PLwfNfyoS5CPjG9TJKNAqvdxoP.0zi2Vxn8flR3p9tIOOBqUIelQTb7rsV1hil0zxSI0rLyycvrxfM8ERjKA5HfnsD2Rq8JsLG40zDwUhf2jFmCMcqDjkyNKnFQ58Z2fWBgYE9ukmm3zsvxLaKj6m8PHarMhQ3RIBTxYL2hKNSz+gYcsoSDC38CbGEkWrx6oSW.YIh1zrumOstHDsFMPmDtGAyK2wk7X93HUOXiMPPLt3APoncn.iPxYAWCZR9vxonzMt96M8JOo.BIO.T2SbglfZwTiinol8j0Xn0bWdPGMpxbKjRlNR2HvbFVYkyys4MD1psWSwUwK7sdDV7pQyJ6LhT.mORunrusk4XjNWXgEljzXDjMmhoDBCMZzPeAUVC0ARxVn9.ln0kPXDrllkTToC418QLiWlLb7dSqo+SOOd6MW6ZWijhb8sTpL7FxLEEigxVtuiERcjGCRfP2HcKDPR+yUurJDdB1nXZDx7gXgilIgb7M9x2EYMwMOjRewrvTLlL7CX8oCxVmBe2WlK3AHZNeoxWDZ2keTIIpK+pR4EQ9m5TgXxvLLlbci9jLoTDsYgR2hwSZ5UROoIhRjGBYbIQjvnjPkKKiLEgXwsUd.mR4OoqkSoIx0lgTrmVRv8koG77HxMFA8Agh.MbsMQaAhiBlkaivNWVB6SzK+ld7Ag1qgUPS2AHKBOXPUhHJHSmqSSg3bT.Rv.rlkT+dhlVsnPdBEeSxWGSVQkoHt54K5a5FE8WbLxxJTDFvcCUzENJhYZsAEHrKBolRQlyVm6KVZADbkGEWE47QtIjfUTnVBJzKGStmophFjAFBHgcsfPGSiwfzur30WnbPEa9g9qe+qsT4fMFrU4xOXy6+yuxMZswfpO7ms9l224KJ2Ds2awOd86O+c67kaLvdXkAku+i1YilxwaV996+fxswu2bILFf7GtwfGDPqoS40vZps967fO9WVThhSvaSFeGKLcL8ntHPU5vHoSxYVnJdbNwTF1tNWBwVizHiSfljTnP73JBwXMQLg3TttTXzSI3oKTsC+.UT+RQIlMMBFRQB.gzcxXDtT9YFuq1PuFXwU9jxppfz6mjlxXznRq7jHccuVstjx.HxPqmMBtbT+.xcRK5GnRcUOQW.5WUFqFSAfJSXkCi1Y1DnNjPdMkCbZU1ipbQT5poUazpkAyETYJmBE6B5KlV98PtKByQURjQPG49tYGQyCfI2rVWhvdEsPE7kFsv4RgQRkJwXKe85eGGOUXFbpZkyovwjJhBpVDZkqP5HflOUqWGJTqnT.0xnKrt8II00lpSQ3FUpnpaBnT+hxeZjD9PdUiCpo7yaPtkRx2T0yD3hTwpFHnRR4yBC1wOUYxHSl8fIKZnNCo8KNyeXfymBp1xuixhXHQXDLci3HhOAbNYfIXeRaGGcHYKqKC03DHw5Ch1J8mOdx86P3+ct68VWdhBeaqmPBXSjzsOsY5mLs01aCLk4JCkdMRv9qs29n4YQuqjdve1Cqs492VNkJvMclAr+sqswct6sfuuOfUcgxUvVQM2CO93mrBK8GHJrqUyCnRBGFnfuX4B8JeKGyM38jo5i4UTpLJLKthZJeRQRvipti+W1GljoeEMjOEy9m4Bq1wStAx3wVNY4T6ZIKtMMGjXvgzuhGBMYnJz7.GDnElaLt.jvRV8g35GQR5C1w0Tw0K0dFpDhxxIYSTaHL+AvlUXzNkPekIeGSWFaceDZWo3k9pywtBaNxEkZhNolXkxxjlvWUC+h3cgCEYj.ZWVtM41FbXUujf35DowujLEaUiPQdMulkblQwlmEavhg+F.SLK9JT6JmmVsj3PRM4P7PskGq4zElBH8wL.HfC7CCgF1TsUETkNCX4Dn5xodrJsSS8D7eBaew3FekiVXgsjehGZAZDsPzv2x11BQMThGSgmUmDOKq5zzjdhJf7zq50tVE4GZ.so70FHogRZ0LL9LIxAJhgh5CTcOptxSjADMfr7f31yvF.oOjDtikyCjwKe4DlwLD0XJJ7vrClezHCVReTiNKxN2bIjPMjMBnRiuftMmNNqhheRHrr2rXqpwwipx9tKRoFQf+H3fXTzMZzvrZmxdD.JkZjIfapPa0RgMP9Xh1xziifT3jD.0HIGpVuLziEzoGAc52swj0.odGQCT13yM8PlPVkpYHKmzjthbRJHVGwU+O+xxHFyJ1S.nDs6EMQpu0rk0leeDWUo3scMe5Y4fK1DD.xvpZ4zE4VbwrhbYWrfrqx5xZVVTk3mL.kji9K1DbzIOFc.DlhVjIZYnJwGB3XtN.ZwZoJp.UacDok7rRjgWicTVNGtJLEYDYi+D1jPmYTxgEShcrXzFqJLj5rOJY4zztuYT9VJ0IapJKSOIGLZlSWOdw082DZ4UtMgFiUBm1di3CRtUqQNhHuHYXSas0BxORcEkU08TdUSVDauYXyKcBM5rWS9IrKB5mzri7ikcI1bSMq6iWPQhkpSKjt0PP.u3xrhgZBxNUBj1dw9AV.lDlNi74SBEqny+iNwjnnv03wgQxRxUdBfFpp0VjjGJFW7V5bzb7oaAwIy8ZO1vD.uX7QJrxoxKezfhJH3IMN4gqD+DvKoFt+.55XD4.Oxkt7dKTYYxhi5LYhhFDMfYF9HE8RTbf36XSCxg0.vvAqDsVUSsVUzVnSdtys7wO5XHjjsPuJTKYUjN9inRZ1jin0YiVJp8BiHlO20o+QYKKUjGgyXxpEJQZ8wmnInAbg9Fj0ZHVHFRvRTbFByFIRtQFKwYlgHTYgnX8D1MYTv.sjeXKiGpVU8PBpkDFTnzTcjFExRV19hjhbwhXyFGlG6gAlN2oucfUOaKg4Z185vy31UpRTtosEk+MfJh+Avo70mNCfDSfNEvxSzSvYy8V6C+r509E2BxGyuzJQZ9p5VlpdPjg4D+EIYypkg6IZ2FYIFewGH89M4ARTVSqOvMfa+PYUe+.E1qc1d1Bm1niKyJk.2WQE1g17tBkcUEsPQNZDyHJeaJ44OoxmpnyoZr5mFZ4LUqyiglrSyjP9HPf1liJKosdzM5v7gfAa4H2P0wdoVEktCrSVRV.xLHIkN.0DQfI2Q9k602uSoiJqJuvVdtc2VzJHgBjj3zbSqV5QFa0JpNR4mifVp1ahf9dRnPJZDlnb4n65zVQWJfhJ2VPQanJwNjlXpD8vVb7SdRdrSVnw18wttiShBq23Z94D9ZqigoaOcMB9nZeFUvBJo9OY7kCQcG9fJXA1X+L9YIuGfOuShtIgEm9SA.RxWGPxWQvGDrNXrEeIjpL8Jw5otNz0t5dNkjJlPrfksqVsFaeIUSZrcSW5YuiahkbP.1BX2ScRGQCzH2EReagyO4aKr9kYNrZjZCz0oliUv85IblzUb1HjvZfADBU3WAx6U7ECuWwJAdCKSibuVd4UAWBug2m6U+udz+4MMNEy8GjWxiSMY0mSwje87Jwpry9o2z3ipQx6zUiNDW1UUOXKhzkaSwgVMEpKJ8T42T3ePfaOibEhkhLx8FAg2ra0ttU3ktYeKPhU6spVdFGkru+0qNL9gU6uprL0wM7z+tUUGvXxPbWMD3TPxONe16JmQi1QWH9odMCi+V4zR7MpZ0HSqyo2Lk5znCVRax8j7OFJVEi470LonkOtamGoHVrFcEnvHqHeZK4M34gtdG32i2Tf1aws8Ex9TrJYo1nU91tdVOhVL6hEdBwfO0D6eb9rUpUmr+S0H6e0Zooo+kiPS0VizTWiyVp6u56PpKHeoEt9pecVgKiZqpSgu3Io8NAwX1muZW8WyiO9a5x0F5eN50zzVraXDR5ZvTtBJ0qlVveaFJa0e2+5yFCk8R+5+fr4znmwGOB58wq10EY1WWlfk0gHIqj9tvpouzyz68P7kLOkf2achFlRP1uogt5cF5x0SSWt9wPWfW2d0sdjP+cmwueqVPcOW97HN9LTp+96+EOarBaii9wmeyuKneuQ9j6keJB3O5jMNmPVXdZTvOGTPoDxeV9jxSsqviRDm2VXDQRNe92yXRDymdydIpWF4dy7Zuu.Fw20dpqB4eHb6SExOC0829a2dbzwVsVV1bVBQ5s3aIU94wDHnvZmfjFQ8oORinZ7qdNcobFaz628xykhraENF2cpCgaDil+9eSV90W0JEO4MU7j2LjmHuuSgx1xeWcRVM+pGrJQkHY6PjN51ycGDnouAcWSTuVauVd55sIaHsMgJqJaivDZTq6ZalE7Gtp.QDxkA8k675706bm67ORCIq33Bqll48rm8r+ovfsN0H8bSR1KFo+QghpgmM6YD19adofsyOIVLdPgs+MZpXrjaCOaynpC795sp8ddE35ZeFIJfXKeYPbVXRDmO2Oj37SzINmkhCmkX7nu7juU9XaU5uKmT3CI3SpWfxZQk5U2q9Y1K34oEDeaUPKiGFO2XfQjfz2EvX3qE6al+VsZAA+D.7B425m+cy6.q91+5ps+uHuxwSBgJxsiDV9qxeL9kNl2z4+8S6a5buS8a5b1b6uvoK29S3EU9Bux8hJeZki+IivZ7+dTaK240.y2VAl4yu8V2SBapechPy5pauK0+Vx2CFmlQ8+z+6+smdSRrnVp7BdH+P5N70MrrDwqz1h1jURsV1W.Sz0G5zTe50655R0ZscZgMCiscc6cKGxRoo9hraGtOUDKeQPpkAK69t6voZCtA81Bq2Ys1NtdBUgwzaeC4q8SDBHeY8qirbTwD9I4WZgx3SqqPeeiMvWyeuylmedrdU8344m6TKZB1OKlkSRnuB5HPAkwBduDgxP8meX9srEGIe6vk.3OHu525.0NtNtp2zZcYq8DHpAJRpIncMVTYM5U37.8RDcaJFBskcSQSdzT9p+gm9kqVGxvI14Wc94+Ot4dBaATRRp.f2p6nJpQlMRkX4HMuAcCxzyVUtoizZ31LR6mcB24OkhMuYdEfyj1Pd0Sr9hQvmhf+pG.9F4kr3WUoeHyLkT9qrDvKlOTa3kIILL9wB4i9qXgDzzd74w6+G4K1WklhleT0aMQVCRTYRSafw3ryC2YRNDm+OsygXO29TQ2BSTMW961uq51DgcGovaSG6VtyQA7ndtB8rLpIgio7AjT4yB6rJ8btvNqF0ogZw0NcpvRC.ehSndqJQB0Fq.GY8xh16wxRVq+QgCJVn7eQ11XFahzXtyqyAtXjq65zKVM8WEJI8+0jv12uIHculAH3x8ku8rt9oV35htV6S+QCQuQnzQA+rGI.mJPUW5MAdLc8Gu4V.IG6bpSuu7RMg0j+0YIkj+4++Sb6UjZjj5OBVSE8GAKk1VLjF9GAqjCC5EL9ywhJprfH0Wj+yCxdZ3SH+rZqlUF5E2BubOk2SaxlbMmd8CTOk60N9CwS2BvnGOkgw9xBmE9p9oeldS9TtLtW+fj8Oep8mNVEs823D2enNCo7nsYM+egvyMq0pWU8okRtrvwIWlxn+25DiN2ymL5wUCguejQye7Gn5wKiPEEIkLJ7ZAGCARGCGqr32b1HKdtWxwtLNyeWDdto+FhEdZkpL7zO+RcHYOW2tZ35u+q+5+2atIuaOHMjjS7+yMiOFU8zZ8FNRaOTqb8x0B9VEORnEdKZ8e9lmcBVeeD61eprGc4M8b+rvWrVR340ks.Zqi7fYlB1mvyrpidurfEeqOqYyzK0HSbtWzIN+K5DW3EchK9hNwkdQm30dQm30O4IRACtVeXhW4lyvXmcukpLr4hqAL7a9+wWGeQ5
      

      ScreenRecording2026-02-20at15.19.28-ezgif.com-video-to-gif-converter.gif

      posted in Bug Reports
      DanHD
      DanH
    • RE: Matrix Modulation System - Last Call for bugs fixes & changes!!

      Might take a look at this now but I think it would be nice to have an option to draw the label on obj.clicked rather than auto appearing on hover. There is no .clicked option in getModulatorDragData currently, and my effort to implement one with Claude code hit a wall.

      EDIT - Seemed to have got the clicked behaviour I wanted by drawing it .clicked in drawModulationDragBackground instead :). However, the issue of the label appearing when I don't want it to means that if I click in the label's area the label appears.

      EDIT 2 - I've got it so the label won't appear on click but if the mouse is in the label zone it still activates the hover laf for the dragger, so there's no real workaround here. I think the dragger and label need to be decoupled. Everything I'm doing is pretty hacky....

      @DanH said in Matrix Modulation System - Last Call for bugs fixes & changes!!:

      @Christoph-Hart so with the singleDragger method the dragger knob's label will appear on hover when hovering in it's location, rather than the label only appearing when hovering over the dragger itself. I've drawn the label well away from the dragger in the example below but you can see the label appear on mouse hover:

      ScreenRecording2026-01-16at10.37.46-ezgif.com-video-to-gif-converter.gif

      posted in General Questions
      DanHD
      DanH
    • RE: Matrix Modulation System - Last Call for bugs fixes & changes!!

      @Christoph-Hart said in Matrix Modulation System - Last Call for bugs fixes & changes!!:

      confirm that it works

      Tried it fresh again just now and get the Selectable sources are disabled error when using matrixHandler.setCurrentlySelectedSource(); so I'm not really sure if it works or not!

      Have set "UnselectableExclusiveSource": to both true and false in the ModMatrix floating tile but neither changes anything

      posted in General Questions
      DanHD
      DanH
    • RE: drawAlertWindow / drawAlertWindowIcon

      @dannytaurus sadly not, could be a source thing.. @Christoph-Hart ?

      posted in General Questions
      DanHD
      DanH
    • drawAlertWindow / drawAlertWindowIcon

      Tried drawing an image and from a path and the icon I draw is always lower res than it should be. Is there some limitation here?

      Screenshot 2026-02-19 at 19.27.09.png

      posted in General Questions
      DanHD
      DanH
    • Preset Handler YesNow Window Message

      PresetHandler.cpp line 61:

      	if (presetFile.existsAsFile() && (!MessageManager::getInstance()->isThisTheMessageThread() || PresetHandler::showYesNoWindow("Confirm overwrite", "Do you want to overwrite the preset (Press cancel to create a new user preset?")))
      
      

      The end ) doesn't make it into the window text. Also, does hitting cancel take you to a save as option? The window is appearing for my custom preset browser but I don't need the save as info so will rewrite in my fork...

      posted in Bug Reports
      DanHD
      DanH
    • RE: New LAF Properties for Modulation Display: Selected Source vs Accumulated Range

      @Christoph-Hart PR sent, I'm not being precious about it so feel free to close again, good to get the practice in 😆

      posted in C++ Development
      DanHD
      DanH
    • RE: HISE Transformation to the new age

      @Christoph-Hart Style rules to follow strictly:

      • Tabs for indentation
      • Allman braces
      • 120 character line limit
      • PascalCase for classes
      • camelCase for methods. ???
      posted in AI discussion
      DanHD
      DanH
    • RE: New LAF Properties for Modulation Display: Selected Source vs Accumulated Range

      @Christoph-Hart let me see if I can course correct this PR 😆

      posted in C++ Development
      DanHD
      DanH
    • RE: New LAF Properties for Modulation Display: Selected Source vs Accumulated Range

      @David-Healey setting it up now, have you across the AGENTS.md file at all?

      posted in C++ Development
      DanHD
      DanH
    • RE: HISE Transformation to the new age

      @Christoph-Hart does AGENTS.md exist yet?

      posted in AI discussion
      DanHD
      DanH
    • RE: New LAF Properties for Modulation Display: Selected Source vs Accumulated Range

      @Christoph-Hart looking forward to jumping on the MCP workflow!

      posted in C++ Development
      DanHD
      DanH
    • RE: New LAF Properties for Modulation Display: Selected Source vs Accumulated Range

      @Christoph-Hart on web for now....

      posted in C++ Development
      DanHD
      DanH
    • RE: New LAF Properties for Modulation Display: Selected Source vs Accumulated Range

      @Christoph-Hart bad Claude! 🐶 😆 I'll pass on the feedback!! Obviously it doesn't have access to the whole codebase but it should be able to match the code quality of the files it read.... Will stick with my fork for now.

      posted in C++ Development
      DanHD
      DanH
    • RE: Matrix Modulation System - Last Call for bugs fixes & changes!!

      @Christoph-Hart that's fair enough, there isn't a solution for everyone I guess. Happy to force it myself in the source but Claude couldn't get over the line, here's where we got to:

      Here's the full code we tried with the limitation noted:

      if(auto pp = parent->getParentComponent())
      {
          auto gpp = pp->getParentComponent();
          
          if(gpp != nullptr)
          {
              auto pIndex = gpp->getIndexOfChildComponent(pp);
              gpp->addAndMakeVisible(this, pIndex+1);
              
              auto b = dragAreas.getBounds();
              if(!labelArea.isEmpty())
                  b = b.getUnion(labelArea);
              
              auto topLeft = gpp->getLocalPoint(pp, b.expanded(pd.margin).getTopLeft());
              setBounds(b.expanded(pd.margin).withPosition(topLeft));
          }
          else
          {
              auto pIndex = pp->getIndexOfChildComponent(parent);
              pp->addAndMakeVisible(this, pIndex+1);
              
              auto b = dragAreas.getBounds();
              if(!labelArea.isEmpty())
                  b = b.getUnion(labelArea);
              setBounds(b.expanded(pd.margin));
          }
      }
      
      auto translationToOrigin = AffineTransform::translation(getBoundsInParent().getTopLeft().toFloat() * -1.0f);
      dragAreas.transformAll(translationToOrigin);
      if(!labelArea.isEmpty())
          labelArea = labelArea.transformed(translationToOrigin);
      

      Limitation: This works for slider → panel → panel (grandparent is a panel), but fails for slider → panel → top level UI. In that case gpp is the top level HISE component which doesn't behave like a regular panel for addAndMakeVisible, so the popup either doesn't appear or appears offscreen. We couldn't resolve the coordinate space translation reliably for that case.

      posted in General Questions
      DanHD
      DanH
    • RE: CSS changes on 25th Jan seem to have broken button spacing....

      @Christoph-Hart fixed thanks!

      posted in Bug Reports
      DanHD
      DanH
    • RE: New LAF Properties for Modulation Display: Selected Source vs Accumulated Range

      @Christoph-Hart Done. It also includes a crash fix I was experiencing regarding IntensityTextConverter

      posted in C++ Development
      DanHD
      DanH
    • RE: CSS changes on 25th Jan seem to have broken button spacing....

      @dannytaurus none.

      posted in Bug Reports
      DanHD
      DanH
    • New LAF Properties for Modulation Display: Selected Source vs Accumulated Range

      I had Claude implement some extra obj properties for more flexibility in drawing modulation with LAF:

      I've added three new property pairs to the modulation display system that expose separate ranges for use in LAF callbacks, giving developers full control over how modulation is visualised on knobs.

      New properties available in the LAF obj:

      modSelectedMinValue / modSelectedMaxValue — the range of the currently selected exclusive source only

      modAccumulatedMinValue / modAccumulatedMaxValue — the combined range of all connected sources regardless of selection state

      modAccumulatedLiveValue — the live modulation output of all sources combined (useful for a pointer/indicator that tracks total modulation rather than just the selected source)

      The existing modMinValue / modMaxValue are untouched and continue to work as before.

      Use case: When using exclusive source matrix mode, selecting a source previously caused all modulation display to reflect only that source. With these new properties you can independently draw arcs for the selected source range and the accumulated range simultaneously, giving users a clearer picture of what all modulators are doing while still highlighting the selected one.

      Files modified:

      hi_core/hi_core/MiscToolClasses.h — added new members to ModulationDisplayValue struct

      hi_core/hi_core/MacroControlledComponents.cpp — populated new values in ModUpdater::timerCallback

      @Christoph-Hart how shall I proceed?

      posted in C++ Development
      DanHD
      DanH