 And the merge request for the panels was done. It's actually ready, it's there, it's on KDIS GitLab and we can go and see it, it's this one. And you can see that I described how it works and why it works and why I choose to implement it as I did. There's the API, the known bugs. And as you know, if you've developed for any open source community, actually making the merge request is just the first step of many where you have to actually read all the code proposals to actually change what you wrote, which so far are very actually insightful, very interesting, I've read through them, but also of course participate into discussion on whether the feature is actually neither needed or not and if it needs changes. But now that this is done, is there anything else that I'm working on whilst, you know, the patch gets discussed on KDIS GitLab and actually there is a couple of things. So the first one is that I'm trying to rewrite KD panels as a whole to make them much faster and let me give you a couple of good examples after we've seen what actually missed from last video to actually make the merge request for the floating panel. So let's go dive into the code. If you've seen yesterday's video, you know that everything was really bad for a weird sizing issue with the panel when it was on the left side, it was like 60 pixels instead of being 44. So I tried it, you can see me in the last video finding a weird line and remove that and actually replacing Plasma Shell with a new one, it actually works nicely out of the box. But there was still one more issue that some of you pointed out seeing the last video which is when I open Kegel on a floating panel, it flows higher than the panel itself, which is weird. And I managed to fix that. How did I do that? Well, the general idea is instead of making the window, sorry, let me get back to my face instead of making the window like this big and then inside of it, there's the panel. I make this big and then I actually keep the top border the same so that when the windows, the kickoff applets get positioned, they're actually positioned in the right spot. How do I do that in code? Well, it's pretty easy. I basically say the top margin, where is it? The top margin, this one, well, it doesn't quite, it only makes sense if the panel is not a bottom one because if it's a bottom one, there's no need to actually have a top margin. The left margin doesn't make sense on a right panel, the right margin doesn't make sense on a left panel and so on. In this way, it actually works. I also had to adjust the panel view C++ code. Do you remember that function that we wrote last time which was called something like thickness, something? Can I type today? Thickness, this one. You can see that I changed this case to be if it's a top edge, use the top padding, if it's the left edge, use the left padding and so on. And that pretty much works. I also had to animate a bit, moving the panel a bit down when there's a maximized window because you can see that it makes sense if we actually go and look at the floating panel as is. Look at here, now we dem Maximize and it becomes floating and we maximize it. It goes down a bit to make sure it's always at the center and it's such a small change that it won't affect clickability, it's not like the content is running away from your mouse, the actual click areas actually don't change at all but it looks pretty nice, like a normal panel when it's maximized and a nice floating panel when it's not. So we can simply say that it works and that is how we did the first patch. Then what are we going to work next? I am slowly but surely rewriting a lot of panel code like my and target would be throwing away half of it like not kidding, half of panel's code which I think is pretty old comes from 20 something, hold 20 something and many of the stuff that's in it is quite slow I think I'll make you a practical example. So you remember I did a video trying to understand why the panel felt slow to me and one of the reasons that could cause it and after a bit of testing, I think it was it had some factor is this one we have a current layout and in this current layout we have two properties which are layout preferred width and preferred height, which makes sense it just says this is the width that I want to have and this is the height I want to have this current layout object is simply the container for all outlets in the panel so kickoff, task manager, system tree and so on. So how do we determine actually the size that they should be? Well, what do we do? We start with a width of zero and then we iterate over each single children and then for each one of them we actually get the corresponding applet and then if that applet has a size we add to the width property the maximum of the minimum width and the preferred width and then we do the same exact thing with the height. Now a fair question here would be why doesn't QML actually handle this automatically? And in theory, yes but in practice apparently no but after a bit of rewriting that I won't go into too much details because it was already a bit of time ago I actually managed to fix that so I had to write quite a bunch of code to do that and where the hell is the command to? Yeah, as I was saying, sorry, but that now you can see the current layout has a much simpler width and height. It's just, it has a zeta spacer then it's just total width otherwise it's the implicit width which is the one that QML actually handles automatically and this code is much smaller, much faster and in theory shouldn't break because I actually tested it and then I also checked out other things about the current version of the panel. As an example, we have this startup timer I don't see other ways at the moment to see when the UI is really really and that's weird what this does is just open up a timer with a four second interval why would you do that? That's ugly, it affects me for a reason and my goal is to fix this I already tried to take this off in the right way didn't quite manage to but I'm on a good way and then there's also this the containment size sync timer which plays every 0.15 seconds and I do think that running a timer every 0.15 seconds is not a good idea I don't know how much resource intensity it is but I would try to avoid it if I can and that's what I'm trying to do I actually managed, I think I managed to take this off without any regression that I could see of course not just taking it off randomly I also added some changes then we have a couple of objects which look a bit weird as an example the dn did not, the dn, the spacer is right the last spacer what is the last spacer? well basically if there's no spacers in your panel of course you want everything to float left because it would be weird if all of your widgets were like justified in all equal distances so you want some spacer that just pushes everything left and it's I think a not very pretty solution and after a bit of working I actually managed to get rid of this one effortlessly without any issue of course adding some code here and there which is actually less good than just this spacer so that is nice I think the dn, this spacer actually makes sense is the space that you have when you drag something into the panel but and I think there is some effort from other developers already I think there was some effort to actually making it more visible where is the applet going and if there's any better way to convey the user action of actually dragging the applet because dragging things doesn't actually always work from a usability standpoint then there is this bunch of code which is very ugly and I wrote those my fault I won't refactor that I am not yet and then here this code is from applets each applet has this code and it says every time the position change check if we're moving for a size and if so it's false and stop if animation are enabled start up timer start then do a translation and then animate that translation and then save the old positions and then we have this translate which gets animated with a long duration and all of this is to do a number animation on the coordinates but only if we are not moving for a size or animations are enabled I hate this code like it makes sense but I hate it so I'm trying to get rid of this one and then at the very top we have something like this long mass which I think I simplified nicely and then we have a toolbox which looks so weird it's a bit outdated I want to actually get rid of that entirely and then we have more and more stuff there's some very weird JavaScript stuff again last piece I refactor this to actually get rid of it and to see all of the changes stay tuned for a video that will be about this specifically when I show you all that I've done and I'll actually keep working on this secondly there is another code thing and that's floating applets it's like when you actually take a kick off and do like this but with shadows on the bottom too and by default so that would look nice and I think it would be a good companion merge request for the panel one of course if the panel one gets rejected I won't probably do the one for the applets as well but if both are accepted I think it would look cool for themes to have that and code wise I did a video about that you can see me actually trying to make everything working it wasn't working my mic screwed up hopefully you're still hearing me but anyway I did a video about that and if you want to see it you can see me trying to implement it but I didn't manage to I did do the merge request but the code was very ugly and it didn't work so another video will be about implementing that and that's everything so you've seen that I've mostly done what I had to do with the floating panels now of course I'll follow the discussions and keep working on this to address the feedback then I'm going to work on the new two merge requests that I'm working on that the centers was so weird and that's pretty much about it so if you do want to support me into doing this kind of things there's like these guys over there which help me already and you can join the list by doing a one-time donation on PayPal or a monthly one on Patreon also on YouTube and LibrePay etc etc whatever you prefer and that's about it I'm trying my best also the audio of the last video was like screwed up I listened to it and it was so bad compared to the other ones and nobody told me and that's a pretty big deal if I do a video where I screwed up something on the technical side especially now that I'm changing all of my setup tell me right away like the volume is too low start bitching about these things in the comments they always make me happy because I can actually address those concerns and that's it what is it 15 minutes that's enough for our video see you next time