/[packages]/cauldron/libreoffice/current/SOURCES/0001-rhbz-1197614-Fix-calculation-of-m_bHasActive-when-re.patch
ViewVC logotype

Contents of /cauldron/libreoffice/current/SOURCES/0001-rhbz-1197614-Fix-calculation-of-m_bHasActive-when-re.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 820286 - (show annotations) (download)
Wed Apr 15 17:56:47 2015 UTC (9 years ago) by tv
File size: 2925 byte(s)
3 more fixes from FC
1 From 97d4c1a8100c63091401736c93d6bbbb371d5b37 Mon Sep 17 00:00:00 2001
2 From: Stephan Bergmann <sbergman@redhat.com>
3 Date: Fri, 10 Apr 2015 15:06:53 +0200
4 Subject: [PATCH] rhbz#1197614: Fix calculation of m_bHasActive when removing
5 active element
6
7 Assume m_vEntries.size() == 2; assume first element (nPos == 0) is m_bActive,
8 gets removed, so m_nActive would have stayed at 0 and m_bHasActive at true; then
9 assume second element (again nPos == 0, due to the removed element) is m_bNew,
10 so nPos <= m_nActive is true and m_nActive gets updated to 1 (and m_bHasActive
11 remains true); then selectEntry(nNewPos) (nNewPos == 0) would have tried to
12 reset m_vEntries[1]->m_bActive but now m_vEntries.size() == 1.
13
14 Change-Id: I31d3bbe97ca99f880aa99bdea015f7c0457f8331
15 ---
16 desktop/source/deployment/gui/dp_gui_extlistbox.cxx | 21 ++++++++++++++-------
17 1 file changed, 14 insertions(+), 7 deletions(-)
18
19 diff --git a/desktop/source/deployment/gui/dp_gui_extlistbox.cxx b/desktop/source/deployment/gui/dp_gui_extlistbox.cxx
20 index 260100f..b9500a1 100644
21 --- a/desktop/source/deployment/gui/dp_gui_extlistbox.cxx
22 +++ b/desktop/source/deployment/gui/dp_gui_extlistbox.cxx
23 @@ -1035,7 +1035,6 @@ long ExtensionBox_Impl::addEntry( const uno::Reference< deployment::XPackage > &
24 //access to m_nActive must be guarded
25 if ( !m_bInCheckMode && m_bHasActive && ( m_nActive >= nPos ) )
26 m_nActive += 1;
27 -
28 guard.clear();
29
30 if ( IsReallyVisible() )
31 @@ -1172,6 +1171,7 @@ void ExtensionBox_Impl::prepareChecking()
32 void ExtensionBox_Impl::checkEntries()
33 {
34 long nNewPos = -1;
35 + long nChangedActivePos = -1;
36 long nPos = 0;
37 bool bNeedsUpdate = false;
38
39 @@ -1195,15 +1195,19 @@ void ExtensionBox_Impl::checkEntries()
40 }
41 else
42 { // remove entry from list
43 + if (nPos < nNewPos) {
44 + --nNewPos;
45 + }
46 + if (nPos < nChangedActivePos) {
47 + --nChangedActivePos;
48 + }
49 if ( nPos < m_nActive )
50 m_nActive -= 1;
51 - else if ( ( nPos == m_nActive ) && ( nPos == (long) m_vEntries.size() - 1 ) )
52 + else if ( nPos == m_nActive )
53 {
54 - m_nActive -= 1;
55 - if (m_nActive == -1)
56 - {
57 - m_bHasActive = false;
58 - }
59 + nChangedActivePos = nPos;
60 + m_nActive = -1;
61 + m_bHasActive = false;
62 }
63 m_vRemovedEntries.push_back( *iIndex );
64 m_vEntries.erase( iIndex );
65 @@ -1219,6 +1223,9 @@ void ExtensionBox_Impl::checkEntries()
66
67 if ( nNewPos != - 1)
68 selectEntry( nNewPos );
69 + else if (nChangedActivePos != -1) {
70 + selectEntry(nChangedActivePos);
71 + }
72
73 if ( bNeedsUpdate )
74 {
75 --
76 2.1.0
77

  ViewVC Help
Powered by ViewVC 1.1.30