sw/source/uibase/misc/redlndlg.cxx | 3 ++ vcl/qa/cppunit/lifecycle.cxx | 41 +++++++++++++++++++++++++++++++++++++ vcl/source/control/tabctrl.cxx | 2 - 3 files changed, 45 insertions(+), 1 deletion(-)
New commits: commit 4eed8e53313827f51cd97dcac7d2d437f53a2dbb Author: Michael Meeks <[email protected]> Date: Wed Apr 29 17:20:58 2015 +0100 abhortive focus unit test - apparently we need visible windows for that. Change-Id: I64999eb625a4b312997ba78698710bd1acaf8da7 diff --git a/vcl/qa/cppunit/lifecycle.cxx b/vcl/qa/cppunit/lifecycle.cxx index 4a0bebf..e23faa3 100644 --- a/vcl/qa/cppunit/lifecycle.cxx +++ b/vcl/qa/cppunit/lifecycle.cxx @@ -16,6 +16,7 @@ #include <vcl/combobox.hxx> #include <vcl/field.hxx> #include <vcl/virdev.hxx> +#include <vcl/tabctrl.hxx> class LifecycleTest : public test::BootstrapFixture { @@ -31,6 +32,7 @@ public: void testParentedWidgets(); void testChildDispose(); void testPostDispose(); + void testFocus(); CPPUNIT_TEST_SUITE(LifecycleTest); CPPUNIT_TEST(testCast); @@ -40,6 +42,7 @@ public: CPPUNIT_TEST(testParentedWidgets); CPPUNIT_TEST(testChildDispose); CPPUNIT_TEST(testPostDispose); + CPPUNIT_TEST(testFocus); CPPUNIT_TEST_SUITE_END(); }; @@ -143,6 +146,44 @@ void LifecycleTest::testPostDispose() CPPUNIT_ASSERT(!xWin->GetWindow(0)); } +class FocusCrashPostDispose : public TabControl +{ +public: + FocusCrashPostDispose(vcl::Window *pParent) : + TabControl(pParent, 0) + { + } + virtual bool PreNotify( NotifyEvent& ) SAL_OVERRIDE + { + return false; + } + virtual bool Notify( NotifyEvent& ) SAL_OVERRIDE + { +// CPPUNIT_ASSERT(false && "notify"); + return false; + } + virtual void GetFocus() SAL_OVERRIDE + { + CPPUNIT_ASSERT(false && "get focus"); + } + virtual void LoseFocus() SAL_OVERRIDE + { + CPPUNIT_ASSERT(false && "this should never be called"); + } +}; + +void LifecycleTest::testFocus() +{ + ScopedVclPtrInstance<WorkWindow> xWin(nullptr, WB_APP|WB_STDWORK); + ScopedVclPtrInstance< FocusCrashPostDispose > xChild(xWin); + xWin->Show(); + xChild->GrabFocus(); + // process asynchronous ToTop + Scheduler::ProcessTaskScheduling(false); + // FIXME: really awful to test focus issues without showing windows. + // CPPUNIT_ASSERT(xChild->HasFocus()); +} + CPPUNIT_TEST_SUITE_REGISTRATION(LifecycleTest); CPPUNIT_PLUGIN_IMPLEMENT(); commit 3801e50670afaf245e855e450817be8157deca08 Author: Michael Meeks <[email protected]> Date: Wed Apr 29 17:20:21 2015 +0100 Protect against event emission during dispose. Change-Id: I8c97fdb637a8ea4d50bef5815ef3716a4be03688 diff --git a/sw/source/uibase/misc/redlndlg.cxx b/sw/source/uibase/misc/redlndlg.cxx index e0ba28d..49be7d8 100644 --- a/sw/source/uibase/misc/redlndlg.cxx +++ b/sw/source/uibase/misc/redlndlg.cxx @@ -254,6 +254,9 @@ void SwRedlineAcceptDlg::InitAuthors() { SwWrtShell* pSh = ::GetActiveView()->GetWrtShellPtr(); + if (!aTabPagesCTRL) + return; + SvxTPFilter *pFilterPage = aTabPagesCTRL->GetFilterPage(); std::vector<OUString> aStrings; diff --git a/vcl/source/control/tabctrl.cxx b/vcl/source/control/tabctrl.cxx index 72c1357..21e6487 100644 --- a/vcl/source/control/tabctrl.cxx +++ b/vcl/source/control/tabctrl.cxx @@ -1357,7 +1357,7 @@ void TabControl::GetFocus() void TabControl::LoseFocus() { - if( ! mpTabCtrlData->mpListBox ) + if( mpTabCtrlData && ! mpTabCtrlData->mpListBox ) HideFocus(); Control::LoseFocus(); } _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
