Hi Mikhail, Thanks very much for your instructions, I have made a patch to /embeddedobj/source/general/docholder.cxx. By far the modification did not cause obvious problems on my machine. Please check if it is right. And I'm looking forward to do the rest of work for this issue asap. :-)
I might need your instructions on the projects and classes related to this issue: - What are the functions for modules embeddedobj and embedserv, respectively?( while most of the modules in framework are described briefly on the main page of the project, these two are not in the list) - What is the function of class DocumentHolder in embeddedobj? I find a class with the same name in embedserv, while the first one implements: ======================= util::XCloseListener, frame::XTerminateListener, util::XModifyListener, document::XEventListener, frame::XBorderResizeListener, embed::XHatchWindowController. ----------------------- The latter one implements: ======================= util::XCloseListener, frame::XTerminateListener, util::XModifyListener, ui::XDockingAreaAcceptor ----------------------- Could you please explain the relationship between the two classes, and why they do not implement the exactly same interfaces? The last question may not be related to this issue, but something I don't understand with our previous issues: While Running ======================= $ ./regview.exe services.rdb |grep OLESimpleStorage ----------------------- displays: ======================= / com.sun.star.comp.embed.OLESimpleStorage / com.sun.star.embed.OLESimpleStorage / com.sun.star.comp.embed.OLESimpleStorage / com.sun.star.embed.OLESimpleStorage Data = 0 = "com.sun.star.comp.embed.OLESimpleStorage" / com.sun.star.comp.embed.OLESimpleStorage Data = 0 = "com.sun.star.comp.embed.OLESimpleStorage" ----------------------- Running ======================= $ ./regview.exe services.rdb |grep TempFile ----------------------- displays: ======================= / com.sun.star.io.comp.TempFile / com.sun.star.io.TempFile / com.sun.star.io.TempFile Data = 0 = "com.sun.star.io.comp.TempFile" ----------------------- - What does the "comp" in the namespace of a service stand for? - Why the "comp"s in the two are inserted in different position, with the first before "embed", and the latter after "io"? Thanks and Best Regards, Felix. Mikhail Voitenko 写道: > Hi Felix, > > Good that the problem with the breakpoint is solved. I must confess I > could not reproduce the problem in our environment, the breakpoint is > reachable after the file in sfx2 is built with debug information. It > probably depends from the office build that is used. > > Thank you for the stack. It shows that the final resize of the inner > document size happens asynchronously based on the outer window. But that > mean that at this point the outer window should already have the correct > size and can be centered. > > The window can be centered only after the document is loaded. To avoid > the flickering of the window let it be created invisible, to do this > please insert a new property "MakeVisible" set to false into > m_aOutplaceFrameProps sequence. That should be done in the > embeddedobj/source/general/docholder.cxx in the constructor of the > "DocumentHolder". > > To let the document be visible please call the method > XWindow::setVisible( sal_True ) on the container window of the frame > retrieved by XFrame::getContainerWindow() method. That should be done at > the end of the DocumentHolder::GetDocFrame() method. > > Please implement this and in case it works well, we will introduce the > centering after the document is loaded and the layout manager is unlocked. > > Best Regards, > Mikhail. > > Zhang Xiaofei wrote: > >> Hi Mikhail, >> >> The breakpoint starts to work after I built the 'desktop' project with >> debug information as well.With the call stack of the last call of >> SetVisArea() in the attachment, I'm trying to dig into the related >> functions, could you give me any hints, please? >> >> With Best Regards, >> Felix. >> >> Zhang Xiaofei 写道: >> >>> Hi Mikhail, >>> >>> I'm trying to debug around the issue but the application does not break >>> in the method as anticipated, below are the steps I took, could you >>> point out what I have done wrong please? (the steps are taken on a >>> source that has been built completely without debug information) >>> >>> - Remove the output directories of 'embeddedobj' and 'dbaccess' projects. >>> - 'touch source/doc/objembed.cxx' in '$SOURCE_PATH/sfx2/'. >>> - 'build debug=true' in all the three projects above. >>> - Copy all the generated .dll files in the three projects to >>> '$INSTALL_PATH/program/'. >>> >>> Best Regards, >>> Felix. >>> >>> >>> ------------------------------------------------------------------------ >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>> For additional commands, e-mail: [EMAIL PROTECTED] >>> >>> ------------------------------------------------------------------------ >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>> For additional commands, e-mail: [EMAIL PROTECTED] >>> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > >
--- @embeddedobj/source/general/docholder.cxx 2007-07-30 12:42:04.000000000 +0800 +++ embeddedobj/source/general/docholder.cxx 2007-11-02 11:42:12.000000000 +0800 @@ -271,13 +271,17 @@ DocumentHolder::DocumentHolder( const un m_nNoBorderResizeReact( 0 ), m_nNoResizeReact( 0 ) { - m_aOutplaceFrameProps.realloc( 2 ); + m_aOutplaceFrameProps.realloc( 3 ); beans::NamedValue aArg; aArg.Name = ::rtl::OUString::createFromAscii("TopWindow"); aArg.Value <<= sal_True; m_aOutplaceFrameProps[0] <<= aArg; + aArg.Name = ::rtl::OUString::createFromAscii("MakeVisible"); + aArg.Value <<= sal_False; + m_aOutplaceFrameProps[1] <<= aArg; + const ::rtl::OUString aServiceName ( RTL_CONSTASCII_USTRINGPARAM ( "com.sun.star.frame.Desktop" ) ); uno::Reference< frame::XDesktop > xDesktop( m_xFactory->createInstance( aServiceName ), uno::UNO_QUERY ); if ( xDesktop.is() ) @@ -294,10 +298,10 @@ DocumentHolder::DocumentHolder( const un aArg.Name = ::rtl::OUString::createFromAscii("ParentFrame"); aArg.Value <<= xDesktop; //TODO/LATER: should use parent document frame - m_aOutplaceFrameProps[1] <<= aArg; + m_aOutplaceFrameProps[2] <<= aArg; } else - m_aOutplaceFrameProps.realloc( 1 ); + m_aOutplaceFrameProps.realloc( 2 ); } //--------------------------------------------------------------------------- @@ -1025,6 +1029,9 @@ uno::Reference< frame::XFrame > Document xOwnLM->unlock(); } + uno::Reference< awt::XWindow > xHWindow = m_xFrame->getContainerWindow(); + xHWindow->setVisible( sal_True ); + return m_xFrame; }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]