That's not the problem.
I can just use SHGetPathFromIDList() and FindXXXChangeNotification() to detect these, but this means I'd update all icons too, which is a costly operation. I need to implement an icon cache instead, but I've no time just now. ![]()
That's not the problem.
I can just use SHGetPathFromIDList() and FindXXXChangeNotification() to detect these, but this means I'd update all icons too, which is a costly operation. I need to implement an icon cache instead, but I've no time just now. ![]()
Same thing I am experiencing with TaskList Docklet, an Icon cache would be better than recreating all icons every time the stack is shown. Do you plan to implement it or should I create my own?
That's not the problem.I can just use SHGetPathFromIDList() and FindXXXChangeNotification() to detect these, but this means I'd update all icons too, which is a costly operation. I need to implement an icon cache instead, but I've no time just now.
That's not the problem.I can just use SHGetPathFromIDList() and FindXXXChangeNotification() to detect these, but this means I'd update all icons too, which is a costly operation. I need to implement an icon cache instead, but I've no time just now.
I understand. I'm not going to pretend to know exactly how you programmed this, but wouldn't it be possible to implement a timer, so that several notifications in a row won't force a refresh? You could just set it to refresh on change notifications within X minutes of each other, right?
@Smaky:
??? you don't need to recreate icons... unless you're listing apps again on each click event.
In your case you'd need your own implementation anyway:
struct {
HWND hwnd;
struct {
int width, int height;
unsigned * pixels;
} icon;
int unused;
} * icon_cache;
So, each time you update task list:
1. Iterate all cache items and assign unused = 1 to each of them.
2. Get a list of all tasks.
3. For each task which has an entry in the cache, put unused = 0.
4. For each task not in the cache, add it to the cache, with unused = 0, and retrieve icon and store it in the cache.
5. Finally, iterate all cache items and remove every item where unused == 1.
I forgot to mention, by * icon_cache I mean a dynamic array (you may use C++ vector/array/list classes there). Also icon_cache should be part of PDockletData or whatever it's called (i.e. local to each docklet instance, not global vars).
I'm unsure if you're listing PIDs or top-level windows (I guess the second). If you're listing PIDs, replace HWND hwnd with HANDLE processID of course. ![]()
This has the effect you just retrieve icons for apps which weren't in previous click of tasklist. This accelerates stuff a lot. This is how Stacks Docklet 1.0 worked. ![]()
I know I need to implement this into SD 2 asap, but no time yet, have some other priorities first ![]()
@Mancho:
Don't worry, it would work like this:
Whenever the folder updates, it would set a flag: must_update_folder = True
Then, when you click the docklet, it would check this flag.
So all the hard work is done just when you click, and not continuosly all the time. This is how SD 1.0 worked and it seems it was fine because no one complained. ![]()
So all the hard work is done just when you click, and not continuosly all the time. This is how SD 1.0 worked and it seems it was fine because no one complained.![]()
Exactly
If it hadn't been there in 1.0 nobody would have complained here either! 
Matonga, I managed to use Stack Docklet 2.0, but I had a problem with the icon for the stack. In Stack Docklet 1.0 I can use any icon I choose for be always visible for the docklet, but in version 2.0 I can only see the icon when I press the docklet...
I couldn't see or find the option to leave the icon in SHOW ALWAYS.
...Whenever the folder updates, it would set a flag: must_update_folder = True
Then, when you click the docklet, it would check this flag.
So all the hard work is done just when you click, and not continuosly all the time. This is how SD 1.0 worked and it seems it was fine because no one complained.
Oh, duh. Much better implementation. Thanks for the response, Matonga.
with all the knowledge and the way m-nga wrote stack docklets, I'm waiting if he will decide to write whole dock ![]()
with all the knowledge and the way m-nga wrote stack docklets, I'm waiting if he will decide to write whole dock![]()
I agree! It's a great idea! ![]()
Hi
Congratulation, your docklet is very good
, i used it every day
.
I have a bug when i use Stacks Docklet 2.0 on Rocket Dock 1.3.5
My dock is on top to my screen and when i use option "Show stack as a fan", the fan no go down but go up.... Result i do not view icons on my screen... 
For information, with option "Show stack as a grid" it's ok, and when i use "Show stack as a fan" the fan go up always, even when i place my dock on right, left, top or bottom to my screen. ![]()
@cokinou:
Not a bug really, but a missing feature. Making the fan pop in every direction is much more complicated than you thi... oh, wait, I have an idea! Oh my God I'm getting all the good ideas now that I can't use my computer!!! F******ng Intel Express BIOS Update I'll find whoever coded it and burn him/her/them in hot vegetal oil. 
![]()

![]()
![]()
![]()
![]()
I use Stack 1.0 on my laptop (in both Avedesk and ObjectDock) and each time I connect a monitor to extend my desktop the stack doesnt work properly (it opens and closes rapidly) it requires me to disconnect my screen and restart objectdock/avedesk to get it to function properly again.
Any ideas as to why this is happening?
Thanks!!
It was a bug in version 1.0; it was fixed in version 2.0 (which this thread refers to).
Well mmmm Matonga, anyway to fix the icon problem I described before???
Well mmmm Matonga, anyway to fix the icon problem I described before???
That's not a problem. That is stack behavior. You can choose 'Use icon as stack icon' which will show your icon when stack is closed, but shows the default stack icon when it is open, or you can choose 'Use icon as box overlay' which shows your icon with other icons underneath when it is closed, but shows only your icon when it is open. Of course you could choose not to use an icon at all....
Mmm damn =/... I like the way it was before, when the icon was allways active...
xNoFrostx, I believe you can just rename/delete the Stack.png icon included with the docklet - this may do the job.
Cheers,
James
x
Wow... Thanks!!!! I will try that...
Wow jmbattle2, thanks for the idea!! Now it works the way I want ![]()
xNoFrostx, I believe you can just rename/delete the Stack.png icon included with the docklet - this may do the job.Cheers,
James
x
That's all well and good if all you have is one stack. But it will show that same icon for every stack.
That's all well and good if all you have is one stack. But it will show that same icon for every stack.
If you rename/get rid of it, then StackDocklet can't reference to it, thus the icon does not change when you click on it. This just keeps the icon as the one chosen even after it is clicked instead of changing to the gray box with the arrow...
If you rename/get rid of it, then StackDocklet can't reference to it, thus the icon does not change when you click on it. This just keeps the icon as the one chosen even after it is clicked instead of changing to the gray box with the arrow...
Ah. I wasn't reading right. I was thinking of renaming the desired icon, instead. Nevermind. Interesting.
ok i have 4 bugs.
1. Some icons dont display correctly. And i get an ugly generic icon :S
2. I have my stack dock pointing to a folder full of shortcuts, if i put in a new shortcut the stack docklet doesnt update till i restart object dock (ie reboot my pc).
3. Would still like to see an animation time in ms in the global options so i can set this to zero
or a check box to disable animation.
4. Still want right click support :'(
I know that stackdocklet & stacklib are pre-beta, but I second the right-click support... it would be great to have such a feature when used in the tasklist docklet.
cool, new release