Hello!
I thought of a window lapping feature, as I wrote of on the curse forums.
The Feature Request
The main thing about this feature, is that the windows no longer interfare with frame strata (always being on the same layer of your UI). With this option, you can just click on the window / box, and it overlaps the other frames / windows / boxes with this option enabled.
Lets show an example:
You're at the Auction House. You search for something on AH and while scrolling down the massive lists of leather, you get a whisper. But because the AH box is so big, and you have chosen to disable the WIM option "Keep windows on top", you can't find the WIM whisper box as it appeared behind the Auction House window.
Facts
All frames with Toplevel == 1 appear above of everything with framestrata (main level of the object) equal or lower than the frame itself. This means that, if we follow my example, the WIM Whisper box appear above the AH window, and above all frames and objects that have FrameStrata > WIM Whisper Box Strata.
A suggestion
Let the options frame always have this option enabled. This helps people get other things above this frame again (for example, a you get a whisper and WIM opens up a new chat box). This is easily fixed, by doing this (line 5 in WIM_Options.xml).
<Frame name="WIM_Options" movable="true" enableMouse="true" Toplevel="true" parent="UIParent" hidden="true" clampedToScreen="true">
An example of the Chat box code
Around line 1013 in WIM.lua
if (WIM_Data.windowOnTop == 1) then
theWin:SetFrameStrata("DIALOG");
WIM_TabStrip:SetFrameStrata("DIALOG");
theWin:SetToplevel(0);
WIM_TabStrip:SetToplevel(0);
elseif (WIM_Data.windowOnTop == 2) then
theWin:SetFrameStrata("MEDIUM");
WIM_TabStrip:SetFrameStrata("MEDIUM");
theWin:SetToplevel(1);
WIM_TabStrip:SetToplevel(1);
elseif (WIM_Data.windowOnTop == 0) then
theWin:SetFrameStrata("LOW");
WIM_TabStrip:SetFrameStrata("LOW");
theWin:SetToplevel(0);
WIM_TabStrip:SetToplevel(0);
end
This means that the variable you use to save the "Keep windows on top." checkbutton must return either of the values 0, 1 or 2.
That is just an example on how you can fix it, but i think you understand what my request is by now.
Thanks!
Regards,
Trysor
Creator of MusicPlayer
Grim Batol - EU