Kirix Support Forums

Can't restore frame while minimized

Please post all general questions, comments, bug reports, and any other wxAUI feedback here.

Can't restore frame while minimized

Postby kobevaliant on Thu Mar 09, 2006 10:57 am

Hi!
First of all, I'd like to applaud the wonderful wxAUI:)
I find that when I make a panel float and dock it , the frame can't restore after minimizd. I guess it is a bug, because it happens in the demo - "wxauitest.exe".
My OS is windowsXP.
regards
kobevaliant
Registered User
 
Posts: 4
Joined: Thu Mar 09, 2006 3:23 am

Postby kobevaliant on Thu Mar 09, 2006 10:59 am

Yes, I think I find how to fix this bug!
In manager.cpp line 2985:
m_hint_wnd = new wxFrame(m_frame, -1, wxEmptyString, pt, size,
wxFRAME_FLOAT_ON_PARENT |
wxFRAME_NO_TASKBAR |
wxNO_BORDER);
I replace it with:
m_hint_wnd = new wxDialog(m_frame, -1, wxEmptyString, pt, size, wxDIALOG_MODELESS|wxNO_BORDER|wxTRANSPARENT_WINDOW);

Then everything work properly. I hope this would be helpful.
kobevaliant
Registered User
 
Posts: 4
Joined: Thu Mar 09, 2006 3:23 am

Postby Ben on Sat Mar 11, 2006 6:41 pm

Hi, thanks for pointing this out. I'll try it out before the next release is made.

Thanks,
Ben
User avatar
Ben
Kirix Support Team
 
Posts: 522
Joined: Mon Dec 19, 2005 6:29 am

Postby Ben on Wed Apr 19, 2006 6:00 am

Hello,

I've just fixed the problem. Your fix hadn't worked for me (it made the transparency effect not work anymore), so I had to try out some other stuff. After reviewing the possible wxFrame flags, I tried out the wxFRAME_TOOL_WINDOW flag, and that delivered the solution to the problem. Check out the upcoming wxAUI 0.9.2 release for the fix (should be a day or so from now);.

Best,
Ben
User avatar
Ben
Kirix Support Team
 
Posts: 522
Joined: Mon Dec 19, 2005 6:29 am

Postby kobevaliant on Sun Apr 23, 2006 10:28 am

hi,
That's great! I'm glad that wxAUI 0.9.2 is released. Thank you for so wonderful job.
Here's a patch to fix a focus problem :)

wxAUI 0.9.2 manager.cpp line 4130
Code: Select all
void wxFrameManager::OnChildFocus(wxChildFocusEvent& event)
{
    // when a child pane has it's focus set, we should change the
    // pane's active state to reflect this. (this is only true if
    // active panes are allowed by the owner)
    if (GetFlags() & wxAUI_MGR_ALLOW_ACTIVE_PANE)
    {
        if (GetPane(event.GetWindow()).IsOk())
        {
            SetActivePane(m_panes, event.GetWindow());
            m_frame->Refresh();
        }
    }
}

change to
Code: Select all
void wxFrameManager::OnChildFocus(wxChildFocusEvent& event)
{
    // when a child pane has it's focus set, we should change the
    // pane's active state to reflect this. (this is only true if
    // active panes are allowed by the owner)
    if (GetFlags() & wxAUI_MGR_ALLOW_ACTIVE_PANE)
    {

      wxWindow *win = event.GetWindow();
      for (;;)
      {
         if(win==NULL||GetPane(win).IsOk())
         {
            if(win!=NULL)
            {
               SetActivePane(m_panes, win);
               //m_frame->Refresh();
               Repaint();
            }
            break;
         }
         win = win->GetParent();
      }
    }
}
kobevaliant
Registered User
 
Posts: 4
Joined: Thu Mar 09, 2006 3:23 am

Postby Ben on Sun Apr 23, 2006 3:19 pm

Thanks.

I'll apply it.

Ben
User avatar
Ben
Kirix Support Team
 
Posts: 522
Joined: Mon Dec 19, 2005 6:29 am

Return to wxAUI Questions, Thoughts & Feedback