MantisBT - Cheat Engine
View Issue Details
0000094Cheat Enginepublic2009-02-01 02:012009-02-06 21:26
ReporterCsimbi 
Assigned To 
PrioritynormalSeverityfeatureReproducibilityalways
StatusacknowledgedResolutionopen 
PlatformOSOS Version
Summary0000094: CE 5.5 Window position/size is not saved
DescriptionWhen you are checking what addresses are changed by a certain piece of code, the 'Changed addresses' window appears.
The problem with this window is that the window position/size is not saved, and on top of that, it is always moved away (and behind the main CE Window) after I ALT+TAB back to CE.
There might be other windows as well, I will report these here later when I encounter them.
Thanks for fixing.
Additional InformationPlease ask if you need any.
TagsNo tags attached.
Attached Files

Notes
(0000202)
442a   
2009-02-01 02:03   
um alt tabbing is so last year use dxwnd it makes the game windowed mode..
like go to google and type in dxwnd download and run of the program get instructions from utube how to use it
(0000203)
Csimbi   
2009-02-01 02:08   
(Last edited: 2009-02-01 02:23)
I wrote:
>it is always moved away (and behind the main CE Window)
It appears that it's not moving; it just feels like that since the window position is not saved.
But, it goes behind the CE window - this is not good because it is not straightforward to bring it forward - I have to click the title bar, or, the CE window first and then inside the 'Changed addresses' window.

@442a:
You mean:
http://forum.cheatengine.org/viewtopic.php?p=605056
right?
Is 1.21A the latest?

@442a:
tried DXWnd 1.21A.
It seems I can't use it - the game just can't handle the mouse anymore (it's jumping around when I move the pointer above the game screen). Tried the DInput and the correct mouse settings too, but it did not help.
So, it's a no-go for me it seems.

(0000205)
Csimbi   
2009-02-01 21:53   
Here are two other windows that do not save their size/position.
 - The access/write code finder windows, "The following opcodes accessed the selected address" and "The following opcodes changed the selected address".
 - The "Extra info" window - this is the one that comes up when you click the "More information" button (or select "More info" from the context menu").
Thanks for fixing.

(0000207)
Dark Byte   
2009-02-02 00:54   
Only mainform ,the memory view and the assembler screen in conjunction with a cheat table edit save their location
(0000209)
Csimbi   
2009-02-02 15:26   
Do you mean that it's the way it's intended and it's not an error?
(Should I make a feature request then?)
Thank you.
(0000220)
Csimbi   
2009-02-05 12:36   
(Last edited: 2009-02-05 12:38)
How about this:
1. Create a class call TWinPosSaver (or something like that), here is a sample pseudo-code:
class TWinPosSaver
{
public:
 TWinPosSaver();
 ~TWinPosSaver();
 Save(object);
 Load(object);
private:
 DoSave(object);
 DoLoad(object);
}
TWinPosSaver::TWinPosSaver()
{
}

TWinPosSaver::~TWinPosSaver()
{
}

TWinPosSaver::Save(object)
{
 if(object&&get_flag_from_config_file()) DoSave(object);
}

TWinPosSaver::DoSave(object)
{
 save_to_config(object, object.pos, object.size);
}

TWinPosSaver::Load(object)
{
 if(object && get_flag_from_config_file()) DoLoad(object);
}

TWinPosSaver::DoLoad(object)
{
 coordinate pos, size;
 if(load_from_config(object, pos, size))
 {
   object.pos=pos;
   object.size=size;
 }
}

2. For each window, put this to the OnCreate event:
WinPosSaver=new TWinPosSaver;
if(WinPosSaver) WinPosSaver->Load();

3. For each window, put this to the OnDestroy event:
if(WinPosSaver)
{
 WinPosSaver->Save();
 delete WinPosSaver;
}

Alternatively, instantiate WinPosSaver only once in the main program, and pass it as a pointer to the created windows (so they can re-use the class without creating their own instances of it).

Would that be easy enough? Doable?
Thanks.

PS. Would it be possible to save other things? (Like divider or column width positions within a window?)

(0000222)
Dark Byte   
2009-02-06 03:07   
it already does that:
loadformposition(self,x)
saveformposition(self,[]);

and yes, it already does save stuff like the devider column using the dynamic array given in the 2nd parameter (so unique for each window)

But do you really want all windows positions stored ?
(0000225)
Csimbi   
2009-02-06 21:26   
(Last edited: 2009-02-06 21:27)
>It already does save stuff like the devider column
Yes, in some windows. I would prefer this work with all windows.

>But do you really want all windows positions stored ?
Yes. I have filed a bug earlier about the UI not scaling properly with the DPI setting. That was not fixed yet (and you said it is unlikely that it will be).
These two combined together means that I have to adjust the windows manually (size and position) every time they open - pretty disturbing after a while, it would be so much better if it was automatic.

PS. I am coding in C++ Builder. The UI in all programs that I have made earlier (with normal DPI settings) are scaled up automatically by the OS - so it works without any issues (and the need to adjust/recompile anything). I am surprised that it is different with apps compiled using Delphi. Anyway, as I said, saving the positions/sizes and restoring them would solve this problem.


Issue History
2009-02-01 02:01CsimbiNew Issue
2009-02-01 02:03442aNote Added: 0000202
2009-02-01 02:08CsimbiNote Added: 0000203
2009-02-01 02:14CsimbiNote Edited: 0000203
2009-02-01 02:15CsimbiNote Edited: 0000203
2009-02-01 02:23CsimbiNote Edited: 0000203
2009-02-01 02:23CsimbiNote Edited: 0000203
2009-02-01 07:54Dark ByteStatusnew => acknowledged
2009-02-01 21:53CsimbiNote Added: 0000205
2009-02-01 21:53CsimbiNote Edited: 0000205
2009-02-02 00:54Dark ByteNote Added: 0000207
2009-02-02 15:26CsimbiNote Added: 0000209
2009-02-03 16:43Dark ByteSeverityminor => feature
2009-02-05 12:36CsimbiNote Added: 0000220
2009-02-05 12:38CsimbiNote Edited: 0000220
2009-02-06 03:07Dark ByteNote Added: 0000222
2009-02-06 21:26CsimbiNote Added: 0000225
2009-02-06 21:27CsimbiNote Edited: 0000225