Jump to content

Stacks Docklet 2.0


Recommended Posts

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. :(

Link to post
  • Replies 525
  • Created
  • Last Reply

Top Posters In This Topic

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. :(

Link to post
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?

Link to post

@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. :)

Link to post
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 :P If it hadn't been there in 1.0 nobody would have complained here either! :lol:

Link to post

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.

Link to post
...

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.

Link to post

Hi

Congratulation, your docklet is very good ;) , i used it every day :wub: .

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... :huh:

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. :(

Link to post

@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. :angry:-_-:huh::o:ph34r::ph34r::ph34r:

Link to post

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!!

Link to post
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....

Link to post
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.

Link to post
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...

Link to post
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.

Edited by Mancho
Link to post

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 :'(

Edited by Gibbz
Link to post

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×
×
  • Create New...