wxGetClientDisplayRect

70 messages Options
Embed this post
Permalink
1 2 3 4
Ed Musgrove

wxGetClientDisplayRect

Reply Threaded More More options
Print post
Permalink
Delving into the source code for wxRect wxGetClientDisplayRect() I learned some interesting things. Given that my concern was solely with width and height, that is where I focused my inspection. I found that to determine width and height 2 conditions for the Microsoft case exist; for other platforms things are a little confusing to me.
 
In file wx2.8.10\src\common\gdicmn.cpp (line 848):
wxRect wxGetClientDisplayRect()
{
    int x, y, width, height;
    wxClientDisplayRect(&x, &y, &width, &height);  // call plat-specific version
    return wxRect(x, y, width, height);
}
 
and in file wx2.8.10\src\msw\utilsgui.cpp (line 337; i.e. building for msw):
void wxClientDisplayRect(int *x, int *y, int *width, int *height)
{
#if defined(__WXMICROWIN__)
    *x = 0; *y = 0;
    wxDisplaySize(width, height);
#else
    // Determine the desktop dimensions minus the taskbar and any other
    // special decorations...
    RECT r;
    SystemParametersInfo(SPI_GETWORKAREA, 0, &r, 0);
    if (x)      *x = r.left;
    if (y)      *y = r.top;
    if (width)  *width = r.right - r.left;
    if (height) *height = r.bottom - r.top;
#endif
}
 
and in file wx2.8.10\src\unix\displayx11.cpp (line 327):
#if defined(__WXGTK__) || defined(__X__)
[... at line 348]:
// NB: this function is implemented using X11 and not GDK calls as it's shared
//     by wxGTK[12], wxX11 and wxMotif ports
void wxClientDisplayRect(int *x, int *y, int *width, int *height)
{
    Display * const dpy = (Display *)wxGetDisplay();
    wxCHECK_RET( dpy, _T("can't be called before initializing the GUI") );
    const Atom atomWorkArea = XInternAtom(dpy, "_NET_WORKAREA", True);
    if ( atomWorkArea )
    {
        [...]
        if ( XGetWindowProperty
             (
                 [...]
             ) == Success && workareas )
        {
            wxX11Ptr x11ptr(workareas); // ensure it will be freed
                 [...]
            if ( actualType != XA_CARDINAL ||
                    format != 32 ||
                        numItems != 4 )
            {
                wxLogDebug(_T("XGetWindowProperty(\"_NET_WORKAREA\") failed"));
                return;
            }
                 [...]
        }
    }
    // if we get here, _NET_WORKAREA is not supported so return the entire
    // screen size as fall back
                 [...]
    wxDisplaySize(width, height);
}
#else // !(wxGTK or X)
void wxClientDisplayRect(int *x, int *y, int *width, int *height)
{
                 [...]
    wxDisplaySize(width, height);
}
#endif // wxGTK or X
 
in file wx2.8.10\src\msw\utilsgui.cpp (line 278 -- note that as far as I can tell, this is the only definition and declaration of this function even though it's called in file wx2.8.10\src\unix\displayx11.cpp):
// Get size of display
void wxDisplaySize(int *width, int *height)
{
#ifdef __WXMICROWIN__
                 [...]
    if ( width )
        *width = rect.right - rect.left;
    if ( height )
        *height = rect.bottom - rect.top;
#else // !__WXMICROWIN__
                 [...]
    if ( width )
        *width = ::GetDeviceCaps(dc, HORZRES);
    if ( height )
        *height = ::GetDeviceCaps(dc, VERTRES);
#endif // __WXMICROWIN__/!__WXMICROWIN__
---------------------------------------------------------
Note that in file:
Audacity 1.3.9b\src\Project.cpp(527):
// BG: The default size and position of the first window
void GetDefaultWindowRect(wxRect *defRect)
{
[527]   *defRect = wxGetClientDisplayRect();
   defRect->width = 600;
   defRect->height = 400;
[...]
which assumes the platform is capable of supporting a specified resolution.
Please also note that in file wx2.8.10\src\unix\displayx11.cpp (line 389):
                wxLogDebug(_T("XGetWindowProperty(\"_NET_WORKAREA\") failed"));
                return;
the function returns without setting any values for x, y, width or height and might better return a bool that a void.

I suppose that needs to be taken up with the wxWidgets developers. Still, Audacity does rely on the x and y values being correctly filled out.
In fileAudacity 1.3.9b\src\Project.cpp(line 54 7):
  wxRect defWndRect;
  [...]
  GetDefaultWindowRect(&defWndRect);
relies on the default constructor:
wxRect()         : x(0), y(0), width(0), height(0)         { }
which at least seeds the values with a non-random number (0). As a sanity check Audacity might check the value of either width or height to ensure that it is not 0.

-Ed Musgrove


------------------------------------------------------------------------------
Come build with us! The BlackBerry® Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9-12, 2009. Register now!
http://p.sf.net/sfu/devconf
_______________________________________________
audacity-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/audacity-devel
John Colket

Re: wxGetClientDisplayRect

Reply Threaded More More options
Print post
Permalink
Ed Musgrove wrote:
> Delving into the source code for wxRect wxGetClientDisplayRect() I
> learned some interesting things. Given that my concern was solely with
> width and height, that is where I focused my inspection. I found that
> to determine width and height 2 conditions for the Microsoft case
> exist; for other platforms things are a little confusing to me.
>  
>
Please forgive my intrusion.  I have been "lurking" on this list for a
while, but up until now have remained silent.

I had previously looked at the "minimize" bug where a second Audacity
window will come up "minimized" if the original one was also. My
thoughts were the problem was most likely related to wxwidgets.

Perhaps you have come to the heart of this matter.  Or were you already
working on this ? :)

On
http://wiki.audacityteam.org/index.php?title=Release_Notes_1.3.9#Known_Issues_at_Release

the following "intermittent" bug is noted:
(Windows) After a period launching correctly, Audacity may not come up
on top at launch. Workaround: Right-click over Audacity's Taskbar icon >
"Maximize" or "Restore", ALT - tab, or reset the audacity.cfg settings
file by removing all content except "NewPrefsInitialized=1".

I have more info on this problem if you are interested.

- John



------------------------------------------------------------------------------
Come build with us! The BlackBerry® Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9-12, 2009. Register now!
http://p.sf.net/sfu/devconf
_______________________________________________
audacity-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Gale (Audacity Team)

Problem with hidden second project window on Windows WAS: Re: wxGetClientDisplayRect

Reply Threaded More More options
Print post
Permalink

Sorry for the length of this, but essential to address it. Please
delete if you are not interested. See below otherwise.  

| From John Colket <[hidden email]>
| Sun, 27 Sep 2009 13:15:57 -0500
| Subject: [Audacity-devel] wxGetClientDisplayRect

> Ed Musgrove wrote:
> > Delving into the source code for wxRect wxGetClientDisplayRect() I
> > learned some interesting things. Given that my concern was solely with
> > width and height, that is where I focused my inspection. I found that
> > to determine width and height 2 conditions for the Microsoft case
> > exist; for other platforms things are a little confusing to me.
> >  
> >
> Please forgive my intrusion.  I have been "lurking" on this list for a
> while, but up until now have remained silent.
>
> I had previously looked at the "minimize" bug where a second Audacity
> window will come up "minimized" if the original one was also. My
> thoughts were the problem was most likely related to wxwidgets.
>
> Perhaps you have come to the heart of this matter.  Or were you already
> working on this ? :)
>
> On
> http://wiki.audacityteam.org/index.php?title=Release_Notes_1.3.9#Known_Issues_at_Release
>
> the following "intermittent" bug is noted:
> (Windows) After a period launching correctly, Audacity may not come up
> on top at launch. Workaround: Right-click over Audacity's Taskbar icon >
> "Maximize" or "Restore", ALT - tab, or reset the audacity.cfg settings
> file by removing all content except "NewPrefsInitialized=1".
>
> I have more info on this problem if you are interested.

John,

I have not forgotten this, but as I have told you, your steps are not
reproducible here, on a single monitor 1024x768 (but steps other
than the ones you state are - see below).

I'm not actually sure at the moment this is the same as the P3 on the
Checklist, because most of those reports are of trying to launch a
single project window, and there is no indication that these people
ever open multiple windows. Opening a single project window
apparently works for you too, until you go trying to open a new
*project window* by launching a new *instance* of Audacity.

As I explained to you, you cannot have two audacity.exe processes
running at the same time. If you launched Audacity 1.2 and then
double-clicked audacity.exe again, you would get an error. In 1.3,
we try to be more friendly by opening a new project window instead.

If you want to open a new project window, use File > New. If you
are working with restored rather than maximised windows, minimise
the previous window at that stage. You can always Task Switch
(ALT + TAB) to bring either window on top.

In your steps cited below from your previous e-mail, the problem  
arises for you in (H) where audacity.cfg acquires "X=-31975
Y=-31975". That does not happen for me. Here, audacity.cfg acquires  
X=25 Y = 25 for the off-top-left second window and the new window
is always accessible.

But if I exit Audacity maximised (which is how I use it) then:

* re-launch it
* generate a tone
* minimise that window using (_) top right
* double-click audacity.exe

I *can* replicate the new window being hidden behind the old one having
the tone. I can easily task switch to that old window or raise it by
left-clicking the taskbar icon, but I cannot access the new one. If I
raise the old window and File > Exit, I can re-launch Audacity maximised
without any problem.

Now, if I exit Audacity maximised then:

* re-launch it (don't generate a tone)
* minimise that window using (_) top right
* double-click audacity.exe
 
I get the new window hidden as before. If I task switch to the old one,
File  > Exit, then re-launch Audacity, I get the Welcome message with
no window behind it, and then no Audacity real estate at all when I OK
the Welcome message. The audacity.cfg file shows:

X=-1
Y=-1
W=327
H=55
(no maximised status)

Task Switching does not help. However, right-clicking the taskbar
icon > Maximize brings Audacity on top. I can then File > Exit and
Audacity will launch properly next time, maximised.

FWIW when I repeated the only scenario where I can reproduce your
issue as above, the .cfg then read

X=-4
Y=-4
Width=1032
Height=712
Maximized=1

Clearly there is something we can address here with the .cfg getting
garbled, now that (I hope) we can reproduce it. However if you open
a new project window in the proper way, I don't think your issue will
occur. Thanks for your persistence anyway, which nagged me into
experimenting further.




Gale




> The consistency that I do see is that I start up the 2nd Audacity
> instance/project via Windows WHILE THE FIRST PROJECT IS STILL MINIMIZED!
> In the case of the 1.3.9 alpha, I do this by (a) minimizing the original
> project (with the "_" button in the upper-right-hand corner of the
> window), then (b) dbl-clicking on the audacity.exe file. It is just as
> though audacity is deliberately bringing up the second project minimized.
>
> OK, here is what happens with the .cfg file.  Initial contents:
>
> NewPrefsInitialized=1
>
> -
>
> (A) Copy audacity.cfg to audacity.1.txt
>
> (B) In 1.3.9 directory, dbl-click on "audacity.exe". Click OK for
> English. Click OK for intro screen. Alt-F,C to Close window.
>
> (C) Copy audacity.cfg to audacity.2.txt
>
> (D) In 1.3.9 directory, dbl-click on "audacity.exe". Click OK for intro
> screen. In upper right-hand corner, click "_" to minimize.
>
> (E) In 1.3.9 directory, dbl-click on "audacity.exe".
>
> (F) The ONLY obvious change to the screen is the addition of a 2nd
> Audacity icon to the Taskbar. LEFT-clicking on this new Taskbar icon
> does nothing.
>
> (G) LEFT-click on original (1st) Audacity Taskbar icon.  The Audacity
> screen appears.  Alt-F,X to Exit Audacity.
>
> (H) Copy audacity.cfg to audacity.3.txt
>
> (I) In 1.3.9 directory, dbl-click on "audacity.exe". Click OK for intro
> screen. Audacity main window is hidden. LEFT-click on Audacity icon in
> Taskbar.  Nothing happens.
>
> I have attached the .audacity cfg txt files I mentioned.
>
> It MAY be possible to clear the problem by taking the following steps.
> These steps could be easier than having to reset the .cfg file.
>
> (J) RIGHT-Click the Audacity Taskbar icon, Maximize. Alt-F,X to close
> WHILE MAXIMIZED.
>
> (K) In 1.3.9 directory, dbl-click on "audacity.exe". Click OK for intro
> screen.
>
> (L) In the upper right-hand corner of the window, click on the Restore
> Down box between the "_" and the "X". This seems to fix the problem.
> .
>
> - John
>


------------------------------------------------------------------------------
Come build with us! The BlackBerry® Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9-12, 2009. Register now!
http://p.sf.net/sfu/devconf
_______________________________________________
audacity-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Ed Musgrove

Re: Problem with hidden second project window on Windows

Reply Threaded More More options
Print post
Permalink
Some javascript/style in this post has been disabled (why?)
I think I managed to figure out the problem. When a wxWindow reports its size and location in an iconized state the values for x and y are -32,000 (at least on Vista). Since the AudacityProject *CreateNewAudacityProject function does not test with the AudacityProject.IsIconized() function, it does not realize that it could be getting drastically negative numbers. I will play with the code tomorrow and offer a solution.
 
I think there may be another problem as well. After having exercised the bug hundreds of times tonight on one occasion I got the warning that one should not open 2 instances of Audacity at one time. That should not have happened if the client had connected within the 10 iterations provide. I do note that there is no "else" clause so the logic falls through to the error condition.
 
-Ed Musgrove


------------------------------------------------------------------------------
Come build with us! The BlackBerry® Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9-12, 2009. Register now!
http://p.sf.net/sfu/devconf
_______________________________________________
audacity-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Richard Ash (audacity-help)

Re: Problem with hidden second project window on Windows

Reply Threaded More More options
Print post
Permalink
On Mon, 2009-09-28 at 00:35 -0700, Ed Musgrove wrote:
>
> I think I managed to figure out the problem. When a wxWindow reports
> its size and location in an iconized state the values for x and y are
> -32,000 (at least on Vista). Since the AudacityProject
> *CreateNewAudacityProject function does not test with the
> AudacityProject.IsIconized() function, it does not realize that it
> could be getting drastically negative numbers. I will play with the
> code tomorrow and offer a solution.

That sounds reasonable - I know that windows for a long time handled
"minimised" windows by just moving them out of reach. In windows 9x it
wasn't really far enough - if you had a big multi-monitor setup, it was
possible to see "minimised" windows on the screen.

Checking these return values and ignoring silly ones certainly seems to
be a good start, as it means the last non-minimised window position will
be stored.
 
> I think there may be another problem as well. After having exercised
> the bug hundreds of times tonight on one occasion I got the warning
> that one should not open 2 instances of Audacity at one time. That
> should not have happened if the client had connected within the 10
> iterations provide. I do note that there is no "else" clause so the
> logic falls through to the error condition.
An error message (perhaps wxLogDebug) would help track this down, but
probably something is needed to ensure we don't fall through, or that if
we do the behaviour is sensible. Does that warning dialogue just need
changing so that it complains that the existing Audacity process isn't
responding quickly enough?

Richard


------------------------------------------------------------------------------
Come build with us! The BlackBerry® Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9-12, 2009. Register now!
http://p.sf.net/sfu/devconf
_______________________________________________
audacity-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Ed Musgrove

Re: Problem with hidden second project window on Windows

Reply Threaded More More options
Print post
Permalink
Some javascript/style in this post has been disabled (why?)
Hi Richard!
 
Now that I more thoroughly understand the code, adding a test here for radically ridiculous values is just covering up the problem. See my previous post in reply to Gale.
 
-Ed Musgrove



From: Richard Ash [hidden email]

Checking these return values and ignoring silly ones certainly seems to
be a good start


------------------------------------------------------------------------------
Come build with us! The BlackBerry® Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9-12, 2009. Register now!
http://p.sf.net/sfu/devconf
_______________________________________________
audacity-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Ed Musgrove

Re: Problem with hidden second project window on Windows

Reply Threaded More More options
Print post
Permalink
In reply to this post by Ed Musgrove
Some javascript/style in this post has been disabled (why?)
The case of the invisible project window.
 
After reading John and Gale's posts concerning user reports of Audacity opening and displaying an entry on the taskbar but no project window, I decided to get my feet wet and to see if I could resolve the issue. Being a newcomer here, I'm not sure how to present my thoughts on the problem, the steps I went through to test the existing code base and the solution that I came to. I did see somewhere a request to use diff to show the change between the original code and the new code. The example displayed was not created with the Python 3.1 diff that I use. The Python version (even in HTML mode) is not very good for this sort of thing.
 
I have studied the affected code thoroughly and done exhaustive testing for all the scenarios that I can imagine in both the original code and the solution that I am offering. I have attached a report with my notes on the tests and their results; I include my conclusions and testing methods. This is large text file and probably only of historical interest. I would expect at least one senior Audacity programmer to inspect this report before my solution is accepted.
 
Two files will need to be changed: AudacityApp.cpp and Project.cpp. I have attached copies of both new files.
 
My tests show that Audacity can be confused during the application exit process. This leads to a corrupt configuration file with the result that the next time Audacity is started (or a new project is initiated by relaunching Audacity while Audacity is already running) the resulting project window is located way offscreen (x = -32,000, y = -32,000 give or take). To understand why this happens one must examine the application closure modes -- closing the only project window open will cause the Audacity application to exit; with any number of Audacity project windows open, selecting the menu item File/Exit of any project window will cause the application to exit, if only one project window is open and it is iconized right-clicking to bring up the context menu will cause the application to exit (there are also obscure methods for the OS and potentially other programs to send a close message to Audacity causing it to exit but I did not explore those situations).
 
What I found was that there were 2 independent logic chains implemented. One chain was followed if the Files/Exit or context menu was used, the other train was followed if the last open project window's close gadget (the red box with the white X in the top right-hand corner of the window) was clicked. In one case, projectArray[0] was always used to determine which window preferences (x & y screen location, width & height) would be written to the configuration file. In this case, if the window was iconized default values were used. In the other case, projectArray[last] was always used and it's iconized state was ignored. In the 1st case, if multiple project windows were open and project[0] was iconized the code did not look for a non-iconized window to use for the configuration file-- while this might not be a bug it might not be very user friendly. The 2nd case could clearly lead to a bug.
 
Since the major difference in the 2 cases were the conditional clauses and stepping statements that preceded the call to void SaveWindowSize(), I chose to move all of that code into the SaveWindowSize function. This allowed me to step through the projectArray looking for a project window that was not iconized, starting at [0] and counting up until I found one. If I got through the entire array without finding a non-iconized project window I used the default built-in to Audacity for project windows when no configuration values were available. I created a new static Boolean to determine if the project window location and size have already been written to preferences because SaveWindowSize might be called multiple times during the exit process.
Please find attached Invisible.zip which includes a copy of this text, the aforementioned report and new versions of AudacityApp.cpp and Project.cpp. I have also included an HTML version of each of the diff files--am.html (AudacityApp.cpp) and pm.html (Project.cpp) even though I find them less than useful.

 Hmm...This new version of Yahoo! Mail does not seem to be allowing me to attach a file. If the attachment fails I will upload Invisible.zip to my website and post another message with a link.
 
-Ed Musgrove


------------------------------------------------------------------------------
Come build with us! The BlackBerry® Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9-12, 2009. Register now!
http://p.sf.net/sfu/devconf
_______________________________________________
audacity-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Ed Musgrove

Re: Problem with hidden second project window on Windows

Reply Threaded More More options
Print post
Permalink
In reply to this post by Ed Musgrove
Some javascript/style in this post has been disabled (why?)

The new Yahoo! Mail requires Flash which is not available for 64-bit computers. Please find Invisible.zip as referenced in my previous message attached here.


 
-Ed Musgrove



------------------------------------------------------------------------------
Come build with us! The BlackBerry® Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9-12, 2009. Register now!
http://p.sf.net/sfu/devconf
_______________________________________________
audacity-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/audacity-devel

Invisible.zip (310K) Download Attachment
Markus Meyer

Re: Problem with hidden second project window on Windows

Reply Threaded More More options
Print post
Permalink
In reply to this post by Ed Musgrove
Hi Ed,

glad to see you volunteering to work on stuff and thank you for your
fix. However, your message does not have an attachment.

I hope you don't mind when I give you a few suggestions what would be
the best way to submit your changes.

First, it would make reading and archiving your mailing list email
easier if you sent it in text format (rather than HTML format as you do
now). Does Yahoo Mail have a preference to change that? If not, what
about using an email client like Thunderbird?

Second, the preferred way to submit changes would be a diff against the
current CVS HEAD. (It does not really make sense to fix bugs in source
code downloaded from the website, be it an old version or the current
version, because the code in question may have changed a lot since
then.) With diff I do not mean an HTML diff or something created by
graphical diff tools, but the "unified diff" format used in source code
version control. If you use Linux, you can create a diff simply by
calling the command "cvs diff -u" on the command line. If you use
Windows, you can create a diff with the graphical CVS utility you are
using. For example, when you use TortoiseCVS (which I recommend for use
on Windows), there's a "Create Patch" command which creates a diff which
you can send to the developer list as a simple text file. This makes it
easy for us to see which changes you made, plus a developer with write
access can then apply your changes in the diff using a simple CVS command.

Thanks again for your contributions!

Markus

Ed Musgrove schrieb:

> The case of the invisible project window.
>  
> After reading John and Gale's posts concerning user reports of Audacity
> opening and displaying an entry on the taskbar but no project window, I
> decided to get my feet wet and to see if I could resolve the issue.
> Being a newcomer here, I'm not sure how to present my thoughts on the
> problem, the steps I went through to test the existing code base and the
> solution that I came to. I did see somewhere a request to use diff to
> show the change between the original code and the new code. The example
> displayed was not created with the Python 3.1 diff that I use. The
> Python version (even in HTML mode) is not very good for this sort of thing.
>  
> I have studied the affected code thoroughly and done exhaustive testing
> for all the scenarios that I can imagine in both the original code and
> the solution that I am offering. I have attached a report with my notes
> on the tests and their results; I include my conclusions and testing
> methods. This is large text file and probably only of historical
> interest. I would expect at least one senior Audacity programmer to
> inspect this report before my solution is accepted.
>  
> Two files will need to be changed: AudacityApp.cpp and Project.cpp. I
> have attached copies of both new files.
>  
> My tests show that Audacity can be confused during the application exit
> process. This leads to a corrupt configuration file with the result that
> the next time Audacity is started (or a new project is initiated by
> relaunching Audacity while Audacity is already running) the resulting
> project window is located way offscreen (x = -32,000, y = -32,000 give
> or take). To understand why this happens one must examine the
> application closure modes -- closing the only project window open will
> cause the Audacity application to exit; with any number of Audacity
> project windows open, selecting the menu item File/Exit of any project
> window will cause the application to exit, if only one project window is
> open and it is iconized right-clicking to bring up the context menu will
> cause the application to exit (there are also obscure methods for the OS
> and potentially other programs to send a close message to Audacity
> causing it to exit but I did not explore those situations).
>  
> What I found was that there were 2 independent logic chains implemented.
> One chain was followed if the Files/Exit or context menu was used, the
> other train was followed if the last open project window's close gadget
> (the red box with the white X in the top right-hand corner of the
> window) was clicked. In one case, projectArray[0] was always used to
> determine which window preferences (x & y screen location, width &
> height) would be written to the configuration file. In this case, if the
> window was iconized default values were used. In the other case,
> projectArray[last] was always used and it's iconized state was ignored.
> In the 1st case, if multiple project windows were open and project[0]
> was iconized the code did not look for a non-iconized window to use for
> the configuration file-- while this might not be a bug it might not be
> very user friendly. The 2nd case could clearly lead to a bug.
>  
> Since the major difference in the 2 cases were the conditional clauses
> and stepping statements that preceded the call to void SaveWindowSize(),
> I chose to move all of that code into the SaveWindowSize function. This
> allowed me to step through the projectArray looking for a project window
> that was not iconized, starting at [0] and counting up until I found
> one. If I got through the entire array without finding a non-iconized
> project window I used the default built-in to Audacity for project
> windows when no configuration values were available. I created a new
> static Boolean to determine if the project window location and size have
> already been written to preferences because SaveWindowSize might be
> called multiple times during the exit process.
> Please find attached Invisible.zip which includes a copy of this text,
> the aforementioned report and new versions of AudacityApp.cpp and
> Project.cpp. I have also included an HTML version of each of the diff
> files--am.html (AudacityApp.cpp) and pm.html (Project.cpp) even though I
> find them less than useful.
>
>  Hmm...This new version of Yahoo! Mail does not seem to be allowing me
> to attach a file. If the attachment fails I will upload Invisible.zip to
> my website and post another message with a link.
>  
> -Ed Musgrove
>
>
> ------------------------------------------------------------------------
>
> ------------------------------------------------------------------------------
> Come build with us! The BlackBerry® Developer Conference in SF, CA
> is the only developer event you need to attend this year. Jumpstart your
> developing skills, take BlackBerry mobile applications to market and stay
> ahead of the curve. Join us from November 9-12, 2009. Register now!
> http://p.sf.net/sfu/devconf
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> audacity-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/audacity-devel

------------------------------------------------------------------------------
Come build with us! The BlackBerry® Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9-12, 2009. Register now!
http://p.sf.net/sfu/devconf
_______________________________________________
audacity-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Ed Musgrove

Re: Problem with hidden second project window on Windows

Reply Threaded More More options
Print post
Permalink
Some javascript/style in this post has been disabled (why?)
Hi Markus!
 
Thank you for you help! I hope you saw my 2nd post with the attachment. I used to like Yahoo! Mail but last week they forced the move from Classic to the new look. Even though I have it set to run in plain text mode it seems to really be a rich text mode. I always compose my e-mails in a text editor which only does plain text mode. I have no idea why you would see anything with HTML markup.
 
As recommended on the Audacity Wiki I always use the command:
cvs -d:pserver:[hidden email]:/cvsroot/audacity checkout audacity
before posting any differences. My rough notes might refer to a checkout as much as 2 days earlier.
 
Tortoise will not install on 64-bit Vista. I'll check on the CVS client I am using to see how to do a diff with it. This new Yahoo! Mail does not allow attachments in a 64-bit browser. I will fire off a 32 bit browser and attach a unified diff for the 2 files as created by the Python diff tool that I use. Could I impose upon you to inspect them and see if they are what you want. I sent the HTML version because that is what is displayed on the Audacity Wiki.
 
-Ed Musgrove



From: Markus Meyer [hidden email]
...
your message does not have an attachment.

First, it would make reading and archiving your mailing list email
easier if you sent it in text format (rather than HTML format as you do
now).

Second, the preferred way to submit changes would be a diff against the
current CVS HEAD. With diff I do not mean an HTML diff or something created by
graphical diff tools, but the "unified diff" format used in source code
version control.


------------------------------------------------------------------------------
Come build with us! The BlackBerry® Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9-12, 2009. Register now!
http://p.sf.net/sfu/devconf
_______________________________________________
audacity-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Ed Musgrove

Re: Problem with hidden second project window on Windows

Reply Threaded More More options
Print post
Permalink
In reply to this post by Markus Meyer
Hi Markus!
After exploring Yahoo! Mail's new version note that it has a switch to turn off HTML but it also has a switch to change between rich text and plain text
Please find attached "Unified diffs.zip". If that is not what you want, let me know and I will explore alternatives. Again, thank you very much for guiding me through this process!. I switched to plain text, I hope the change will stick.
 -Ed Musgrove




------------------------------------------------------------------------------
Come build with us! The BlackBerry® Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9-12, 2009. Register now!
http://p.sf.net/sfu/devconf
_______________________________________________
audacity-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/audacity-devel

Unified diffs.zip (4K) Download Attachment
Markus Meyer

Re: Problem with hidden second project window on Windows

Reply Threaded More More options
Print post
Permalink
Hi Ed,

thanks for the diffs. These are just what we need, though having one
diff for both files would be even more comfortable.

Also, the text-only mode seems to work now.

One additional nitpick: Audacity's policy is to have a tab size of 3,
represented as spaces (not as an actual tab). I think this is a setting
in Visual Studio's editor.

As to your actual code, that looks good to me and I think I will commit
it this evening. Thanks again.


Markus


Ed Musgrove schrieb am 30.09.2009 18:21:

> Hi Markus!
> After exploring Yahoo! Mail's new version note that it has a switch to turn off HTML but it also has a switch to change between rich text and plain text
> Please find attached "Unified diffs.zip". If that is not what you want, let me know and I will explore alternatives. Again, thank you very much for guiding me through this process!. I switched to plain text, I hope the change will stick.
>  -Ed Musgrove
>
>
>      
>
>
> ------------------------------------------------------------------------
>
> ------------------------------------------------------------------------------
> Come build with us! The BlackBerry® Developer Conference in SF, CA
> is the only developer event you need to attend this year. Jumpstart your
> developing skills, take BlackBerry mobile applications to market and stay
> ahead of the curve. Join us from November 9-12, 2009. Register now!
> http://p.sf.net/sfu/devconf
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> audacity-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/audacity-devel

------------------------------------------------------------------------------
Come build with us! The BlackBerry® Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9-12, 2009. Register now!
http://p.sf.net/sfu/devconf
_______________________________________________
audacity-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Gale (Audacity Team)

Re: Problem with hidden second project window on Windows WAS: Re: wxGetClientDisplayRect

Reply Threaded More More options
Print post
Permalink
In reply to this post by Gale (Audacity Team)

Hi Ed

Many thanks for your patience and thoroughness with this.  
I haven't tested every possible permutation of scenarios
on Windows XP, but after your patch I cannot now reproduce
my scenario that reliably led to the problem, and John's
creates no issue here.

I notice that when I now (A) launch Audacity with default
x,y position (restored window), minimise it then relaunch
the executable, the new window comes on top but the old
one stays minimised. That isn't the behaviour I got before
when following those steps; what happened then was that
both windows came up on relaunching the executable,
with the old one behind at top left and the new one offset
and on top. So I guess that's better too, because it respects
the iconisation of the old window.

I note however that if (B) I have one window restored,
don't minimise it but just task switch to the 1.3.10
directory and re-launch, the old window is also minimised,
not respecting the state of the old window. This is also
different behaviour from (C) clicking File > New in a
restored window, where the old is visible without focus
behind the new.      

So although it's a small point I guess we may as well
discuss it:

In case (C), is it best behaviour as now to leave the old
window restored, or minimise it, as John seems to
want to do? I think leave as is, as this seems more
normal behaviour? If so, is there any case for (B)
behaving as (C)?

Reading your discussion, your changes may hopefully
have fixed the other scenarios we don't know about
where users launch Audacity but it is minimised  
"P3 (Windows only) After a period launching correctly,
Audacity opens minimised."

John, can you test out Ed's work please if you have a
moment:  
http://www.gaclrecords.org.uk/audacity-win-unicode-1.3.10-alpha.zip



Thanks


Gale




| From Gale Andrews <[hidden email]>
| Sun, 27 Sep 2009 21:50:31 +0100
| Subject: Problem with hidden second project window on Windows WAS: Re: [Audacity-devel] wxGetClientDisplayRect

>
> Sorry for the length of this, but essential to address it. Please
> delete if you are not interested. See below otherwise.  
>
> | From John Colket <[hidden email]>
> | Sun, 27 Sep 2009 13:15:57 -0500
> | Subject: [Audacity-devel] wxGetClientDisplayRect
> > Ed Musgrove wrote:
> > > Delving into the source code for wxRect wxGetClientDisplayRect() I
> > > learned some interesting things. Given that my concern was solely with
> > > width and height, that is where I focused my inspection. I found that
> > > to determine width and height 2 conditions for the Microsoft case
> > > exist; for other platforms things are a little confusing to me.
> > >  
> > >
> > Please forgive my intrusion.  I have been "lurking" on this list for a
> > while, but up until now have remained silent.
> >
> > I had previously looked at the "minimize" bug where a second Audacity
> > window will come up "minimized" if the original one was also. My
> > thoughts were the problem was most likely related to wxwidgets.
> >
> > Perhaps you have come to the heart of this matter.  Or were you already
> > working on this ? :)
> >
> > On
> > http://wiki.audacityteam.org/index.php?title=Release_Notes_1.3.9#Known_Issues_at_Release
> >
> > the following "intermittent" bug is noted:
> > (Windows) After a period launching correctly, Audacity may not come up
> > on top at launch. Workaround: Right-click over Audacity's Taskbar icon >
> > "Maximize" or "Restore", ALT - tab, or reset the audacity.cfg settings
> > file by removing all content except "NewPrefsInitialized=1".
> >
> > I have more info on this problem if you are interested.
>
> John,
>
> I have not forgotten this, but as I have told you, your steps are not
> reproducible here, on a single monitor 1024x768 (but steps other
> than the ones you state are - see below).
>
> I'm not actually sure at the moment this is the same as the P3 on the
> Checklist, because most of those reports are of trying to launch a
> single project window, and there is no indication that these people
> ever open multiple windows. Opening a single project window
> apparently works for you too, until you go trying to open a new
> *project window* by launching a new *instance* of Audacity.
>
> As I explained to you, you cannot have two audacity.exe processes
> running at the same time. If you launched Audacity 1.2 and then
> double-clicked audacity.exe again, you would get an error. In 1.3,
> we try to be more friendly by opening a new project window instead.
>
> If you want to open a new project window, use File > New. If you
> are working with restored rather than maximised windows, minimise
> the previous window at that stage. You can always Task Switch
> (ALT + TAB) to bring either window on top.
>
> In your steps cited below from your previous e-mail, the problem  
> arises for you in (H) where audacity.cfg acquires "X=-31975
> Y=-31975". That does not happen for me. Here, audacity.cfg acquires  
> X=25 Y = 25 for the off-top-left second window and the new window
> is always accessible.
>
> But if I exit Audacity maximised (which is how I use it) then:
>
> * re-launch it
> * generate a tone
> * minimise that window using (_) top right
> * double-click audacity.exe
>
> I *can* replicate the new window being hidden behind the old one having
> the tone. I can easily task switch to that old window or raise it by
> left-clicking the taskbar icon, but I cannot access the new one. If I
> raise the old window and File > Exit, I can re-launch Audacity maximised
> without any problem.
>
> Now, if I exit Audacity maximised then:
>
> * re-launch it (don't generate a tone)
> * minimise that window using (_) top right
> * double-click audacity.exe
>  
> I get the new window hidden as before. If I task switch to the old one,
> File  > Exit, then re-launch Audacity, I get the Welcome message with
> no window behind it, and then no Audacity real estate at all when I OK
> the Welcome message. The audacity.cfg file shows:
>
> X=-1
> Y=-1
> W=327
> H=55
> (no maximised status)
>
> Task Switching does not help. However, right-clicking the taskbar
> icon > Maximize brings Audacity on top. I can then File > Exit and
> Audacity will launch properly next time, maximised.
>
> FWIW when I repeated the only scenario where I can reproduce your
> issue as above, the .cfg then read
>
> X=-4
> Y=-4
> Width=1032
> Height=712
> Maximized=1
>
> Clearly there is something we can address here with the .cfg getting
> garbled, now that (I hope) we can reproduce it. However if you open
> a new project window in the proper way, I don't think your issue will
> occur. Thanks for your persistence anyway, which nagged me into
> experimenting further.
>
>
>
>
> Gale
>
>
>
>
> > The consistency that I do see is that I start up the 2nd Audacity
> > instance/project via Windows WHILE THE FIRST PROJECT IS STILL MINIMIZED!
> > In the case of the 1.3.9 alpha, I do this by (a) minimizing the original
> > project (with the "_" button in the upper-right-hand corner of the
> > window), then (b) dbl-clicking on the audacity.exe file. It is just as
> > though audacity is deliberately bringing up the second project minimized.
> >
> > OK, here is what happens with the .cfg file.  Initial contents:
> >
> > NewPrefsInitialized=1
> >
> > -
> >
> > (A) Copy audacity.cfg to audacity.1.txt
> >
> > (B) In 1.3.9 directory, dbl-click on "audacity.exe". Click OK for
> > English. Click OK for intro screen. Alt-F,C to Close window.
> >
> > (C) Copy audacity.cfg to audacity.2.txt
> >
> > (D) In 1.3.9 directory, dbl-click on "audacity.exe". Click OK for intro
> > screen. In upper right-hand corner, click "_" to minimize.
> >
> > (E) In 1.3.9 directory, dbl-click on "audacity.exe".
> >
> > (F) The ONLY obvious change to the screen is the addition of a 2nd
> > Audacity icon to the Taskbar. LEFT-clicking on this new Taskbar icon
> > does nothing.
> >
> > (G) LEFT-click on original (1st) Audacity Taskbar icon.  The Audacity
> > screen appears.  Alt-F,X to Exit Audacity.
> >
> > (H) Copy audacity.cfg to audacity.3.txt
> >
> > (I) In 1.3.9 directory, dbl-click on "audacity.exe". Click OK for intro
> > screen. Audacity main window is hidden. LEFT-click on Audacity icon in
> > Taskbar.  Nothing happens.
> >
> > I have attached the .audacity cfg txt files I mentioned.
> >
> > It MAY be possible to clear the problem by taking the following steps.
> > These steps could be easier than having to reset the .cfg file.
> >
> > (J) RIGHT-Click the Audacity Taskbar icon, Maximize. Alt-F,X to close
> > WHILE MAXIMIZED.
> >
> > (K) In 1.3.9 directory, dbl-click on "audacity.exe". Click OK for intro
> > screen.
> >
> > (L) In the upper right-hand corner of the window, click on the Restore
> > Down box between the "_" and the "X". This seems to fix the problem.
> > .
> >
> > - John
> >



------------------------------------------------------------------------------
Come build with us! The BlackBerry® Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9-12, 2009. Register now!
http://p.sf.net/sfu/devconf
_______________________________________________
audacity-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Ed Musgrove

Re: Problem with hidden second project window on Windows WAS: Re: wxGetClientDisplayRect

Reply Threaded More More options
Print post
Permalink
Hi Gale!

In regard to your situation (A), the code could be modified I suppose to operate the other way but I do not think that is good GUI implementation. As you point out the current way respects the users choice to have that window iconized.

As for situation (B), here on Vista 64-bit I did not seem to get the behavior you do. The discrepancy may well involve a semantic difference. My working definition of "restored" and "minimized" may not coincide with yours! I did try as many variations as I could possibly figure out just now. One thing I recall from previous posts of yours is that you always start Audacity in an "maximize" window. I tested in this configuration but still did not achieve the behavior you note. (I did find another trivial issue that I would like to deal with -- if you start with a maximized window, "restore down" then size the window so that it only covers a small portion of the screen, then maximize the window, then exit Audacity; then restart Audacity -- it will open maximized -- then "restore down" the window will now be the default size. It would be cool to store the "restored down" size and location in the configuration file; but I digress!)

These are my working definitions for the buttons and conditions involving window sizing based on Microsoft Windows operating systems:
the button which looks like an _ (underscore) is the "iconize" button -- it has only one state
the button in the middle has 2 states -- when it looks like a single rectangle it is the "maximize" button; when it looks like 2 smaller rectangles superimpose it is the "restore down" button
when a window is "maximized" it occupies the entire screen with the exception of the taskbar -- it can not be resized nor dragged
a window can be "minimized" only from the "maximize" condition -- it has been "restored down" -- it can be resized and dragged
when a window is "iconized" the only visual representation of that window is on the taskbar; the typical user interface is via the mouse -- either a left click to "restore up" space or a right-click to activate the context menu (obviously, pressing <ALT> + <TAB> and cycling to the app is the same as a left mouse click).

 So, given my definitions, your " I have one window restored, don't minimise it but just task switch" I can't quite pin down the state of the originally open window. I think the confusion comes from the term "minimize" -- it could mean make smaller after having been "maximized" or it could mean "iconize". Still, I just now tested every permutation I could imagine, I could not get your "the old window is also minimised, not respecting the state of the old window". Again, we may be having problem with the term "minimized".

At your discretion and convenience please try to give me more explicit instructions for re-creating your situation (B). Please pardon the length of this post, beta testing and bug hunting are tedious, require meticulous attention to detail and require that both parties speak the same vernacular!

 As for situation (C), best GUI implementation IMHO is to leave it as is -- I cannot speak for John but I expect him to chime in here!

I have no way to determine if this solves the bug "P3 (Windows only) After a period launching correctly, Audacity opens minimised." As I have not figured out how to gain access to the actual user reports. Do we have any way of contacting those specific users? If so, I would be happy to join in a dialogue with them off the developer's mailing list to get the new code installed and tested by those users who most likely would experience the problem. Since changing the code, I have exercised Audacity (with many different configurations of open project windows) at least 200 times without experiencing this problem.

 Thank you very much for allowing me this opportunity to contribute!
 -Ed Musgrove



----- Original Message ----
From: Gale Andrews [hidden email]

I notice that when I now (A) launch Audacity with default
x,y position (restored window), minimise it then relaunch
the executable, the new window comes on top but the old
one stays minimised. That isn't the behaviour I got before
when following those steps; what happened then was that
both windows came up on relaunching the executable,
with the old one behind at top left and the new one offset
and on top. So I guess that's better too, because it respects
the iconisation of the old window.

I note however that if (B) I have one window restored,
don't minimise it but just task switch to the 1.3.10
directory and re-launch, the old window is also minimised,
not respecting the state of the old window. This is also
different behaviour from (C) clicking File > New in a
restored window, where the old is visible without focus
behind the new.     

So although it's a small point I guess we may as well
discuss it:

In case (C), is it best behaviour as now to leave the old
window restored, or minimise it, as John seems to
want to do? I think leave as is, as this seems more
normal behaviour? If so, is there any case for (B)
behaving as (C)?

Reading your discussion, your changes may hopefully
have fixed the other scenarios we don't know about
where users launch Audacity but it is minimised 
"P3 (Windows only) After a period launching correctly,
Audacity opens minimised."


     

------------------------------------------------------------------------------
Come build with us! The BlackBerry® Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9-12, 2009. Register now!
http://p.sf.net/sfu/devconf
_______________________________________________
audacity-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/audacity-devel
John Colket

Re: Problem with hidden second project window on Windows WAS: Re: wxGetClientDisplayRect

Reply Threaded More More options
Print post
Permalink
In reply to this post by Gale (Audacity Team)
Gale Andrews wrote:

> Hi Ed
>
> Many thanks for your patience and thoroughness with this.  
> I haven't tested every possible permutation of scenarios
> on Windows XP, but after your patch I cannot now reproduce
> my scenario that reliably led to the problem, and John's
> creates no issue here.
>
> I notice that when I now (A) launch Audacity with default
> x,y position (restored window), minimise it then relaunch
> the executable, the new window comes on top but the old
> one stays minimised. That isn't the behaviour I got before
> when following those steps; what happened then was that
> both windows came up on relaunching the executable,
> with the old one behind at top left and the new one offset
> and on top. So I guess that's better too, because it respects
> the iconisation of the old window.
>
> I note however that if (B) I have one window restored,
> don't minimise it but just task switch to the 1.3.10
> directory and re-launch, the old window is also minimised,
> not respecting the state of the old window. This is also
> different behaviour from (C) clicking File > New in a
> restored window, where the old is visible without focus
> behind the new.      
>
> So although it's a small point I guess we may as well
> discuss it:
>
> In case (C), is it best behaviour as now to leave the old
> window restored, or minimise it, as John seems to
> want to do? I think leave as is, as this seems more
> normal behaviour? If so, is there any case for (B)
> behaving as (C)?
>
> Reading your discussion, your changes may hopefully
> have fixed the other scenarios we don't know about
> where users launch Audacity but it is minimised  
> "P3 (Windows only) After a period launching correctly,
> Audacity opens minimised."
>
> John, can you test out Ed's work please if you have a
> moment:  
> http://www.gaclrecords.org.uk/audacity-win-unicode-1.3.10-alpha.zip
>
>  
Gale, Ed,

I am quite happy with what I see.  Ed's fix seems to correct the problem
where the .cfg file gets garbled causing subsequent attempts to access
Audacity to be futile.  Congratulations, Ed!  And thank you!

Gale, when I run through your scenarios, I get slightly different
behaviors on my XP SP3 machine:
In case (A), the new 1.3.10 works properly as you describe, but with
1.3.9, as before, both windows became minimized, and led to the .cfg damage.
In case (B), with 1.3.10, the second windows appears properly, perhaps
exactly as I would expect, exactly the same size as the old window, on
top of the it with the focus, and down and to the right about 1/4". The
top and left edges of the old window are visible behind the new one.
In case (C) with 1.3.10, the results are identical to my case (B), which
I would think is a good thing.

In all of the above cases, the new 1.3.10 passes with flying colors for me.

Now I have a new case in 1.3.10, which I will call case (M), which
doesn't seem quite exactly right, but is perfectly acceptable as is.
This case is identical to case (B), with the exception that the original
window was Maximized.  In this case the second window comes up maximized
as one would expect, but if I then click on the box to "Restore" it, it
comes up in the upper-left hand corner of the screen.  This would be OK
except, unfortunately, in my case, I run my task bar on the left edge of
the screen, so the left 1/2" of the new Audacity window is hidden by the
task bar.  As I said before, this is a situation I can deal with. The
behavior under 1.3.9 puts the two windows exactly on top of each other
and does not have this issue.

The only other case I would bring up is the desirability of arming
Audacity to defend against a corrupted .cfg file.  This could happen if,
as you say, (1) there are "other scenarios we don't know about", (2)  
there is other prior .cfg damage from perhaps running a beta, or (3)  
the possible case where the Audacity window is left on a second monitor
screen which is subsequently removed. Since each of these cases are
hopefully one-time events, they could be manually dealt with; besides
one might question making additional changes this close to the 2.0
release. Another advantage of postponing this effort is that the longer
we wait, the less of an issue it becomes (assuming it was one to begin
with). (I cling to the belief that there might be an Audacity user out
there with a damaged file, who has given up on Audacity, but nonetheless
later installs 2.0 only to find out that this install apparently fails
as well).

In summary, I am quite happy - mostly for Audacity's sake - that this
problem was reproduced and corrected prior to the new stable release.
Ed, Gale, thank you very much for your interest in pursuing this issue,
as well as the corrections you have brought forth!

- John





------------------------------------------------------------------------------
Come build with us! The BlackBerry® Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9-12, 2009. Register now!
http://p.sf.net/sfu/devconf
_______________________________________________
audacity-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Ed Musgrove

Re: Problem with hidden second project window on Windows WAS: Re: wxGetClientDisplayRect

Reply Threaded More More options
Print post
Permalink
Hi John!

Let me take your points in reverse order. Personally, no thanks are necessary; I am thoroughly enjoying renewing my C++ skills with Audacity -- after a 5 year hiatus, not only am I rusty, but the language has matured greatly and the IDE of Visual Studio (especially the 2010 version) is beyond acceptable.

As for repairing the configuration file, I beta test another commercial program which has a way of dealing with this. This program is a 3-D CAD program and is normally started by double-clicking on the program icon or a project icon. However, when run from the command line one may add switches one of which deletes the configuration file and one of which restores all Windows registry settings to their default value. Given the Audacity does not use registry settings anymore it would be a trivial matter to add this code for any OS which has a command line (I know UNIX does and Windows does what I do not know about Mac or any other OSes that Audacity might run on).

As for case (M), as I understand your explanation, what you are saying is that Audacity does not respect alternate Taskbar positions (across the bottom being the "normal"). Once again, I have no knowledge of UNIX or the Mac OS, do they have Taskbar's and if so where are they "normally" and are they adjustable by the user? Currently, Audacity hard codes a "default" window size and location -- off the top of my head I do not recall what the exact figures are but they are a few pixels down and right from 0, 0.

I am sure that on Windows there is a function built into the operating system which returns the size and location of the Taskbar. I could "repair" Audacity for case (M), but it would be specific to Windows. Making this a cross platform change would require other programmers to write code for those other OSes.
 -Ed Musgrove



----- Original Message ----
From: John Colket [hidden email]

Gale, when I run through your scenarios, I get slightly different
behaviors on my XP SP3 machine[...]

Now I have a new case in 1.3.10, which I will call case (M), which
doesn't seem quite exactly right, but is perfectly acceptable as is.
This case is identical to case (B), with the exception that the original
window was Maximized.  In this case the second window comes up maximized
as one would expect, but if I then click on the box to "Restore" it, it
comes up in the upper-left hand corner of the screen.  This would be OK
except, unfortunately, in my case, I run my task bar on the left edge of
the screen, so the left 1/2" of the new Audacity window is hidden by the
task bar.  As I said before, this is a situation I can deal with. The
behavior under 1.3.9 puts the two windows exactly on top of each other
and does not have this issue.

The only other case I would bring up is the desirability of arming
Audacity to defend against a corrupted .cfg file.


     

------------------------------------------------------------------------------
Come build with us! The BlackBerry® Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9-12, 2009. Register now!
http://p.sf.net/sfu/devconf
_______________________________________________
audacity-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Gale (Audacity Team)

Re: Problem with hidden second project window on Windows WAS: Re: wxGetClientDisplayRect

Reply Threaded More More options
Print post
Permalink
In reply to this post by Ed Musgrove

| From Ed Musgrove <[hidden email]>
| Thu, 1 Oct 2009 10:00:18 -0700 (PDT)
| Subject: [Audacity-devel] Problem with hidden second project window on Windows WAS: Re: wxGetClientDisplayRect
> As for situation (B), here on Vista 64-bit I did not seem to get the
> behavior you do. The discrepancy may well involve a semantic difference.
> My working definition of "restored" and "minimized" may not coincide
> with yours! ...

To me, "restored" means any window that is neither maximised nor
minimised ("iconised" as seems the more geekish term).

"Restored" however implies nothing to me about any previous state
of the window. Is there a better term?

My (B) scenario (reproduces 100% for me):

1. Exit Audacity and initialise .cfg
2. Launch Audacity, choose language, OK welcome,
    exit
3. Launch Audacity, OK welcome, Task switch to Explorer,
     relaunch Audacity
4. I now have the window I just created by relaunching
    Audacity, offset from top left. The first is minimised
    (accessible by the taskbar icon or Task Switcher), but
    I did not actually ask to minimise it. I think it might be
    less confusing if it behaved just as File > New does,
    leaving the first window visible top left but without focus.


> (I did find another trivial issue that I would like to deal with -- if
> you start with a maximized window, "restore down" then size the window
> so that it only covers a small portion of the screen, then maximize the
> window, then exit Audacity; then restart Audacity -- it will open
> maximized -- then "restore down" the window will now be the default size.
> It would be cool to store the "restored down" size and location in the
> configuration file; but I digress!)

You mean so it stores the last "restored down" setting where Audacity
was reduced to a small portion of the screen?  Would be very clever,
but complex? It would have to cope with the possibility of a number of
different "restored" settings in a session, plus the possibility that
the last time a "restored" setting was used may be several sessions
ago.  

 
>  As for situation (C), best GUI implementation IMHO is to leave it
> as is -- I cannot speak for John but I expect him to chime in here!

I agree, better "as is", and (B) should I think do the same. John seems
to agree, the only issue being why is (B) behaving differently for me
instead of doing the same as (C) ?  

 
> I have no way to determine if this solves the bug "P3 (Windows only)
> After a period launching correctly, Audacity opens minimised." As I have
> not figured out how to gain access to the actual user reports. Do we
> have any way of contacting those specific users? If so, I would be happy
> to join in a dialogue with them off the developer's mailing list to get
> the new code installed and tested by those users who most likely would
> experience the problem. Since changing the code, I have exercised
> Audacity (with many different configurations of open project windows) at
> least 200 times without experiencing this problem.

I admire your patience :=). I could contact a sample of the complainants
who wrote to feedback@ about it, and that might actually be a very good
way of testing the new code. I have no information at all about the
previous exiting (or other) scenarios by which the users launched
Audacity and found it iconised. However none of them mentioned the
issue of opening multiple project windows, only John raised that.

 

> [John:] Now I have a new case in 1.3.10, which I will call case (M), which
> doesn't seem quite exactly right, but is perfectly acceptable as is.
> This case is identical to case (B), with the exception that the original
> window was Maximized.  In this case the second window comes up maximized
> as one would expect, but if I then click on the box to "Restore" it, it
> comes up in the upper-left hand corner of the screen.  This would be OK
> except, unfortunately, in my case, I run my task bar on the left edge of
> the screen, so the left 1/2" of the new Audacity window is hidden by the
> task bar.  As I said before, this is a situation I can deal with. The
> behavior under 1.3.9 puts the two windows exactly on top of each other
> and does not have this issue.

If your window had previously been "restored down" to upper left in that
session, that really would be correct behaviour, I think. If I understand
him correctly , Ed would like to save that last restored down position
so it persists across sessions.

The issue you raise with the Audacity window not sticking to the taskbar
if it is on the left edge of the screen is one of my "locally stored P4
issues" (i.e. I know about it). From a cursory test some time ago, that
left edge is the only edge where this issue occurs.    


> [John] The only other case I would bring up is the desirability of arming
> Audacity to defend against a corrupted .cfg file.  This could happen if,
> as you say, (1) there are "other scenarios we don't know about", (2)  
> there is other prior .cfg damage from perhaps running a beta, or (3)  
> the possible case where the Audacity window is left on a second monitor
> screen which is subsequently removed. Since each of these cases are
> hopefully one-time events, they could be manually dealt with; besides
> one might question making additional changes this close to the 2.0
> release. Another advantage of postponing this effort is that the longer
> we wait, the less of an issue it becomes (assuming it was one to begin
> with). (I cling to the belief that there might be an Audacity user out
> there with a damaged file, who has given up on Audacity, but nonetheless
> later installs 2.0 only to find out that this install apparently fails
> as well).

(3) has already been specifically dealt with for the metadata editor
window:
http://sourceforge.net/mailarchive/forum.php?thread_name=E1M9wiU-0001tN-Km%4023jxhf1.ch3.sourceforge.com&forum_name=audacity-cvs

Apart from (1) and (2) there is no doubt the .cfg can and does get
"garbled" in other ways than window placement. I've very strong
suspicions that the P3 "AIFF files created by Audacity from recorded
or generated data import intermittently (but at times very frequently)
as noise - files play fine in other software" is tied up with .cfg
problems. Initialising .cfg almost always cures this problem (even if
the user had default settings in the first place). Plus I've seen
occasional reports of the same issue with most of the other formats
too.

While we should address these issues if we can figure them out, I do
think we need an easier way for user to initialise preferences than
editing .cfg themselves with a text editor. I'd suggest one way might
be a checkbox like we have for rescan of VST effects (as default
would be "off", it would automatically be unchecked when restarting
after initialisation).
   



Gale


 

> ----- Original Message ----
> From: Gale Andrews [hidden email]
>
> I notice that when I now (A) launch Audacity with default
> x,y position (restored window), minimise it then relaunch
> the executable, the new window comes on top but the old
> one stays minimised. That isn't the behaviour I got before
> when following those steps; what happened then was that
> both windows came up on relaunching the executable,
> with the old one behind at top left and the new one offset
> and on top. So I guess that's better too, because it respects
> the iconisation of the old window.
>
> I note however that if (B) I have one window restored,
> don't minimise it but just task switch to the 1.3.10
> directory and re-launch, the old window is also minimised,
> not respecting the state of the old window. This is also
> different behaviour from (C) clicking File > New in a
> restored window, where the old is visible without focus
> behind the new.     
>
> So although it's a small point I guess we may as well
> discuss it:
>
> In case (C), is it best behaviour as now to leave the old
> window restored, or minimise it, as John seems to
> want to do? I think leave as is, as this seems more
> normal behaviour? If so, is there any case for (B)
> behaving as (C)?




------------------------------------------------------------------------------
Come build with us! The BlackBerry® Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9-12, 2009. Register now!
http://p.sf.net/sfu/devconf
_______________________________________________
audacity-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Ed Musgrove

Re: Problem with hidden second project window on Windows WAS: Re: wxGetClientDisplayRect

Reply Threaded More More options
Print post
Permalink
Hi Gale!

I have had the pleasure <GRIN> I'm doing telephone software support for many years. On numerous occasions I have had clients to use the term "restored" to mean different things (for the sake of brevity I will use the term "small window" to mean any window that does not cover the entire screen IE is not maximized):
window is maximized, iconized then "restored" -- now maximize
small window is iconized them "restored" -- now is a small window
small window is maximized then "restored" -- now it is a small window again
[you get the picture -- there are many permutations]

When you say "initialize .cfg", how do you do that now? For my tests I will rename my configuration file audacity.cfg.OLD so that Audacity builds a new configuration file upon launch. I will test this in reply to you in a separate e-mail. I will also give some thought to an interface. I am not sure your checkbox idea is the best solution as it would appear the process would only activate (after exiting Audacity) the next time Audacity is run. I also see 2 potential cases:
restore the Audacity configuration file to all defaults
repair the Audacity configuration file saving all sensible settings

As for your comment about saving the last "restored down" needing to be clever, you're right! I had not given it that much thought -- let me consider the permutations and make a matrix of potential situation.

Please do consider contacting complainants who wrote to feedback@; feel free to give them my @dress ([hidden email]). Please consider including the following information in your contact e-mail:
     developers have only been able to re-create this situation when Audacity's configuration file was <garbled/hosed/damage/messed up>
     it seemed to be related to closing Audacity while having multiple project windows open with one of them being minimized (iconized to the taskbar) or closing Audacity while having one or more project windows on a 2nd monitor
     Please mention that the case involving iconized project windows has been addressed in the most recent beta release and ask that they download that release (insert a URL) and try to make the problem happen.

In the case of a 2nd monitor (I use 2 monitors) again, I will do some tests and reply on a separate e-mail.
 -Ed Musgrove



----- Original Message ----
From: Gale Andrews [hidden email]

To me, "restored" means any window that is neither maximised nor
minimised ("iconised" as seems the more geekish term).

"Restored" however implies nothing to me about any previous state
of the window. Is there a better term?

My (B) scenario (reproduces 100% for me):

> [Ed] (I did find another trivial issue ...
> It would be cool to store the "restored down" size and location in the
> configuration file

You mean so it stores the last "restored down" setting where Audacity
was reduced to a small portion of the screen?  Would be very clever,
but complex?

I could contact a sample of the complainants

 
> [John] The only other case I would bring up is the desirability of arming
> Audacity to defend against a corrupted .cfg file.  This could happen if,
> as you say, (1) there are "other scenarios we don't know about", (2) 
> there is other prior .cfg damage from perhaps running a beta, or (3) 
> the possible case where the Audacity window is left on a second monitor
> screen which is subsequently removed....

(3) has already been specifically dealt with for the metadata editor
window:
http://sourceforge.net/mailarchive/forum.php?thread_name=E1M9wiU-0001tN-Km%4023jxhf1.ch3.sourceforge.com&forum_name=audacity-cvs

While we should address these issues if we can figure them out, I do
think we need an easier way for user to initialise preferences than
editing .cfg themselves with a text editor. I'd suggest one way might
be a checkbox like we have for rescan of VST effects (as default
would be "off", it would automatically be unchecked when restarting
after initialisation).


     

------------------------------------------------------------------------------
Come build with us! The BlackBerry® Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9-12, 2009. Register now!
http://p.sf.net/sfu/devconf
_______________________________________________
audacity-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Ed Musgrove

Re: Problem with hidden second project window on Windows

Reply Threaded More More options
Print post
Permalink
In reply to this post by Ed Musgrove
While investigating Gale's disappearing project window problem I discovered the following information:
In my registry, even though I had uninstalled Audacity 1.2.6, I find settings  from Audacity 1.2.6;
I removed those settings. Removing those entries eliminated 2 problems. Audacity 1.3.10  Beta seems to
be picking up those registry entry values one of which was Language the other one had to do  with starting
window location and size. The latter may very well be critical to the "hidden 2nd project window" bug!
 
In my case, I experienced a different inconsistency. After having deleted the configuration file, starting Audacity
resulting in the project window opening near the center of the screen and much larger than the expected default.
I recognized this size and location as that which I would commonly work. Recalling that I had used Audacity
1.2.6 for a few days before switching to 1.3.x, I inspected my Windows Registry.
 
As I understand it, Audacity 1.3.x no longer uses registry values; if this is the case, a user who had accidentally
created the mysterious disappearing window problem in version 1.2.6 then installed version 1.3.x in an effort
to repair the problem might have been leaving a time bomb!
I am familiar with other programs which have a function or program which cleans the registry of old values
for that specific program. Perhaps, after the launch of 2.0 we might consider writing a helper application for
Windows which performs this service. Unfortunately, I know nothing about Windows Registry programming
so I doubt that I would be of much assistance in such a project.
 -Ed Musgrove


     

------------------------------------------------------------------------------
Come build with us! The BlackBerry® Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9-12, 2009. Register now!
http://p.sf.net/sfu/devconf
_______________________________________________
audacity-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/audacity-devel
John Colket

Re: Problem with hidden second project window on Windows WAS: Re: wxGetClientDisplayRect

Reply Threaded More More options
Print post
Permalink
In reply to this post by Gale (Audacity Team)
Some javascript/style in this post has been disabled (why?)
Gale Andrews wrote:
| From Ed Musgrove [hidden email] 
| Thu, 1 Oct 2009 10:00:18 -0700 (PDT)
| Subject: [Audacity-devel] Problem with hidden second project window on Windows WAS: Re: wxGetClientDisplayRect
  
As for situation (B), here on Vista 64-bit I did not seem to get the
behavior you do. The discrepancy may well involve a semantic difference.
My working definition of "restored" and "minimized" may not coincide
with yours! ... 
    

To me, "restored" means any window that is neither maximised nor
minimised ("iconised" as seems the more geekish term).

"Restored" however implies nothing to me about any previous state 
of the window. Is there a better term?

My (B) scenario (reproduces 100% for me):

1. Exit Audacity and initialise .cfg 
2. Launch Audacity, choose language, OK welcome,
    exit
3. Launch Audacity, OK welcome, Task switch to Explorer,
     relaunch Audacity
4. I now have the window I just created by relaunching 
    Audacity, offset from top left. The first is minimised 
    (accessible by the taskbar icon or Task Switcher), but 
    I did not actually ask to minimise it. I think it might be 
    less confusing if it behaved just as File > New does,
    leaving the first window visible top left but without focus. 


  
(I did find another trivial issue that I would like to deal with -- if
you start with a maximized window, "restore down" then size the window
so that it only covers a small portion of the screen, then maximize the
window, then exit Audacity; then restart Audacity -- it will open
maximized -- then "restore down" the window will now be the default size.
It would be cool to store the "restored down" size and location in the
configuration file; but I digress!)
    

You mean so it stores the last "restored down" setting where Audacity
was reduced to a small portion of the screen?  Would be very clever, 
but complex? It would have to cope with the possibility of a number of 
different "restored" settings in a session, plus the possibility that 
the last time a "restored" setting was used may be several sessions
ago.   

 
  
 As for situation (C), best GUI implementation IMHO is to leave it
as is -- I cannot speak for John but I expect him to chime in here! 
    

I agree, better "as is", and (B) should I think do the same. John seems
to agree, the only issue being why is (B) behaving differently for me
instead of doing the same as (C) ?  

  
Ed, Gale, as I stated ealier, "In case (C) with 1.3.10, the results are identical to my case (B), which I would think is a good thing."
  
  
I have no way to determine if this solves the bug "P3 (Windows only) 
After a period launching correctly, Audacity opens minimised." As I have
not figured out how to gain access to the actual user reports. Do we
have any way of contacting those specific users? If so, I would be happy
to join in a dialogue with them off the developer's mailing list to get
the new code installed and tested by those users who most likely would
experience the problem. Since changing the code, I have exercised
Audacity (with many different configurations of open project windows) at
least 200 times without experiencing this problem.
    

I admire your patience :=). I could contact a sample of the complainants
who wrote to feedback@ about it, and that might actually be a very good 
way of testing the new code. I have no information at all about the 
previous exiting (or other) scenarios by which the users launched
Audacity and found it iconised. However none of them mentioned the 
issue of opening multiple project windows, only John raised that. 

 
  
[John:] Now I have a new case in 1.3.10, which I will call case (M), which 
doesn't seem quite exactly right, but is perfectly acceptable as is. 
This case is identical to case (B), with the exception that the original 
window was Maximized.  In this case the second window comes up maximized 
as one would expect, but if I then click on the box to "Restore" it, it 
comes up in the upper-left hand corner of the screen.  This would be OK 
except, unfortunately, in my case, I run my task bar on the left edge of 
the screen, so the left 1/2" of the new Audacity window is hidden by the 
task bar.  As I said before, this is a situation I can deal with. The 
behavior under 1.3.9 puts the two windows exactly on top of each other 
and does not have this issue.
    

If your window had previously been "restored down" to upper left in that
session, that really would be correct behaviour, I think. If I understand
him correctly , Ed would like to save that last restored down position
so it persists across sessions. 

The issue you raise with the Audacity window not sticking to the taskbar
if it is on the left edge of the screen is one of my "locally stored P4
issues" (i.e. I know about it). From a cursory test some time ago, that 
left edge is the only edge where this issue occurs.    

  
Case (M) is not an issue for me (other than being "pretty", see below).
  
[John] The only other case I would bring up is the desirability of arming 
Audacity to defend against a corrupted .cfg file.  This could happen if, 
as you say, (1) there are "other scenarios we don't know about", (2)  
there is other prior .cfg damage from perhaps running a beta, or (3)  
the possible case where the Audacity window is left on a second monitor 
screen which is subsequently removed. Since each of these cases are 
hopefully one-time events, they could be manually dealt with; besides 
one might question making additional changes this close to the 2.0 
release. Another advantage of postponing this effort is that the longer 
we wait, the less of an issue it becomes (assuming it was one to begin 
with). (I cling to the belief that there might be an Audacity user out 
there with a damaged file, who has given up on Audacity, but nonetheless 
later installs 2.0 only to find out that this install apparently fails 
as well).
    

(3) has already been specifically dealt with for the metadata editor
window:
http://sourceforge.net/mailarchive/forum.php?thread_name=E1M9wiU-0001tN-Km%4023jxhf1.ch3.sourceforge.com&forum_name=audacity-cvs

  
This is very curious indeed.  I wonder why the fix for this didn't correct the problem I was having originally. If it had, that might have been the end of this whole mess.
Apart from (1) and (2) there is no doubt the .cfg can and does get
"garbled" in other ways than window placement. I've very strong 
suspicions that the P3 "AIFF files created by Audacity from recorded 
or generated data import intermittently (but at times very frequently)
as noise - files play fine in other software" is tied up with .cfg 
problems. Initialising .cfg almost always cures this problem (even if
the user had default settings in the first place). Plus I've seen 
occasional reports of the same issue with most of the other formats 
too. 

While we should address these issues if we can figure them out, I do 
think we need an easier way for user to initialise preferences than 
editing .cfg themselves with a text editor. I'd suggest one way might
be a checkbox like we have for rescan of VST effects (as default
would be "off", it would automatically be unchecked when restarting 
after initialisation).
  
To me, there are three issues here.

(1) The "pretty", including exactly where a windows comes up on the screen, and whether or not it is partially obscured. This issue has been addressed somewhat by Ed. While it is nice to get everything looking pretty and polished, it might also be nice to rewrite major sections of Audacity.

(2) The "irritant", that a second project window comes up hidden, which may lead to .cfg file corruption, and which Ed has corrected.

(3) The "catastrophe", that once the .cfg file gets corrupted, no simple, "Normal" recovery procedure can be used to ever get the program running again. These simple recovery procedures would include a reboot, a re-install, and installing a new release. (Of course, I now include "Maximize" in my toolkit).  Although I imagine an uninstall could purge all of the .cfg file, but I do not know if it does this.

To correct the catastrophe, I was thinking that all Audacity would have to do is during initialization, at the time it is reading the .cfg file and is loading up it's X,Y coordinates, that it could check this one time that the coordinates are reasonable for the current screen, and if not, to revert to the defaults.

While I personally favor the former, a system to re-initialize the .cfg file, as you suggest, would undoubtly provide a better return for the effort. In terms of re-initializing the .cfg file, there are three other ideas listed here:
http://forum.audacityteam.org/viewtopic.php?f=20&t=13361

- John






------------------------------------------------------------------------------
Come build with us! The BlackBerry® Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9-12, 2009. Register now!
http://p.sf.net/sfu/devconf
_______________________________________________
audacity-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/audacity-devel
1 2 3 4