Re: [PUSHED] [PATCH] Object Catalog in Dialog Editor
the Layout class has some virtual methods with no implementation, this sounds like these need to be pure virtual making Layout an abstract class ( which makes sense ) When I looked a little close at some of those methods I notice IMO, not all empty virtual functions need to be pure virtual. Pure virtual functions are needed when the derived class really need to do something (e.g. returning a value). But GetState() is not that case. This function is virtual only to give the derived classes the possibility to modify the state of some buttons in the toolbar, but it isn't required (in other words, it's a listener function). And Layout was still abstract -- in the sense that it can only be instantiated by a derived class, because its ctor and dtor are protected. Layout::ConfigurationChanged is not used at all either in Layout itself of in any of the classed derived from it Yes, I forgot to remove that. A working ConfigurationChanged() is in ModulWindowLayout::SyntaxChanged. similarly ExcuteGlobal GetState I'd prefer if those were pure virtual, actually ExecuteGlobal isn't used in either class :-) so, it's not clear whether you actually intend to use them for something or not but it's confusing when you have like basides1.cxx:701 if (pLayout) pLayout-ExecuteGlobal(rReq); which does nothing It did something, but then I refactored ObjectCatalog to BasicIDEShell, and ExecuteGlobal became empty. But it may do something useful later, e.g. when we'll have buttons to toggle StackWindow and/or WatchWindow. virtual void UpdateDebug (bool bBasicStopped = false); virtuals with defaults are not really recommended, I removed the default, actually for this method, would be greate if we could remove it from this base class altogether, it doesn't really fit since Dialog has no concept of the debugger. The Layout class is a container and that method depends on assumptions about the contents of the container. Anyway I didn't see an easy way out of removing it at this point, probably something to keep in mind to try and remove from here in the future, it wont do any harm to leave it there. It's name is UpdateDebug() because it updates the StackWindow and WatchWindow -- both are needed to debug Basic. I'm not very good at inventing names. This function allowed to remove GetStackWindow() and GetWatchWindow(), which both violate encapsulation and disallow BasicIDEShell to handle layouts generally. It's better not to be pure virtual since only ModulWindowLayout does something useful -- all other classes (currently there is only one other class) just do nothing, so an empty body is suitable for default implementation. Uray M. János ___ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice
Re: [PATCH] [PUSHED] IDE: PTR_CAST, ISA - dynamic_cast
Sorry, but I forgot to compile before patching. Please, push this fix too. Uray M. János 2012/8/7 Tor Lillqvist t...@iki.fi Thanks, puxhed. --tml From aef47b5e204067ae406eca664a504155cc699ef8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Uray=20M.=20J=C3=A1nos?= uray.ja...@gmail.com Date: Tue, 7 Aug 2012 15:22:25 +0200 Subject: [PATCH] IDE: dynamic_cast fix Change-Id: Ia8826be6e6fe7c09adb4f0104b52ceba6b89163b --- .../accessibility/accessibledialogwindow.cxx | 12 ++-- basctl/source/basicide/baside2b.cxx| 10 +- basctl/source/basicide/basides1.cxx|6 +++--- basctl/source/basicide/basidesh.cxx|4 ++-- basctl/source/basicide/basobj3.cxx |6 +++--- basctl/source/basicide/bastype3.cxx|2 +- basctl/source/basicide/localizationmgr.cxx |2 +- basctl/source/basicide/tbxctl.cxx |5 +++-- basctl/source/dlged/dlgedobj.cxx |2 +- 9 files changed, 25 insertions(+), 24 deletions(-) diff --git a/basctl/source/accessibility/accessibledialogwindow.cxx b/basctl/source/accessibility/accessibledialogwindow.cxx index 2982cda..4621e7e 100644 --- a/basctl/source/accessibility/accessibledialogwindow.cxx +++ b/basctl/source/accessibility/accessibledialogwindow.cxx @@ -513,15 +513,15 @@ awt::Rectangle AccessibleDialogWindow::implGetBounds() throw (RuntimeException) void AccessibleDialogWindow::Notify( SfxBroadcaster, const SfxHint rHint ) { -if (SdrHint* pSdrHint = dynamic_castSdrHint*(rHint)) +if (SdrHint const* pSdrHint = dynamic_castSdrHint const*(rHint)) { switch ( pSdrHint-GetKind() ) { case HINT_OBJINSERTED: { -if (DlgEdObj* pDlgEdObj = dynamic_castDlgEdObj*(pSdrHint-GetObject())) +if (DlgEdObj const* pDlgEdObj = dynamic_castDlgEdObj const*(pSdrHint-GetObject())) { -ChildDescriptor aDesc( pDlgEdObj ); +ChildDescriptor aDesc(const_castDlgEdObj*(pDlgEdObj)); if ( IsChildVisible( aDesc ) ) InsertChild( aDesc ); } @@ -529,14 +529,14 @@ void AccessibleDialogWindow::Notify( SfxBroadcaster, const SfxHint rHint ) break; case HINT_OBJREMOVED: { -if (DlgEdObj* pDlgEdObj = dynamic_castDlgEdObj*(pSdrHint-GetObject())) -RemoveChild( ChildDescriptor( pDlgEdObj ) ); +if (DlgEdObj const* pDlgEdObj = dynamic_castDlgEdObj const*(pSdrHint-GetObject())) +RemoveChild( ChildDescriptor(const_castDlgEdObj*(pDlgEdObj)) ); } break; default: ; } } -else if (DlgEdHint* pDlgEdHint = dynamic_castDlgEdHint*(rHint)) +else if (DlgEdHint const* pDlgEdHint = dynamic_castDlgEdHint const*(rHint)) { switch ( pDlgEdHint-GetKind() ) { diff --git a/basctl/source/basicide/baside2b.cxx b/basctl/source/basicide/baside2b.cxx index dee5e00..533e759 100644 --- a/basctl/source/basicide/baside2b.cxx +++ b/basctl/source/basicide/baside2b.cxx @@ -54,10 +54,10 @@ long nVirtToolBoxHeight;// inited in WatchWindow, used in Stackwindow long nHeaderBarHeight; // Returns pBase converted to SbxVariable if valid and is not an SbxMethod. -SbxVariable const* IsSbxVariable (SbxBase const* pBase) +SbxVariable* IsSbxVariable (SbxBase* pBase) { -if (SbxVariable const* pVar = dynamic_castSbxVariable const*(pBase)) -if (!dynamic_castSbxMethod const*(pVar)) +if (SbxVariable* pVar = dynamic_castSbxVariable*(pBase)) +if (!dynamic_castSbxMethod*(pVar)) return pVar; return 0; } @@ -1933,7 +1933,7 @@ sal_Bool WatchTreeListBox::EditingEntry( SvLBoxEntry* pEntry, Selection ) { // No out of scope entries bool bArrayElement; -SbxBase const* pSbx = ImplGetSBXForEntry( pEntry, bArrayElement ); +SbxBase* pSbx = ImplGetSBXForEntry( pEntry, bArrayElement ); if (IsSbxVariable(pSbx) || bArrayElement) { // Accept no objects and only end nodes of arrays for editing @@ -1970,7 +1970,7 @@ bool WatchTreeListBox::ImplBasicEntryEdited( SvLBoxEntry* pEntry, const String bool bArrayElement; SbxBase* pSBX = ImplGetSBXForEntry( pEntry, bArrayElement ); -if (SbxVariable const* pVar = IsSbxVariable(pSBX)) +if (SbxVariable* pVar = IsSbxVariable(pSBX)) { SbxDataType eType = pVar-GetType(); if ( (sal_uInt8)eType != (sal_uInt8)SbxOBJECT diff --git a/basctl/source/basicide/basides1.cxx b/basctl/source/basicide/basides1.cxx index d85e382..7228a6d 100644 --- a/basctl/source/basicide/basides1.cxx +++ b/basctl/source/basicide/basides1.cxx @@ -160,7 +160,7 @@ void BasicIDEShell::ExecuteCurrent( SfxRequest rReq ) { IDEBaseWindow*
Re: [PATCH] [PUSHED] IDE: PTR_CAST, ISA - dynamic_cast
http://wiki.services.openoffice.org/wiki/Writer/Code_Conventions#Vetoed_Conventionssays that C++ RTTI is preferred over tools/rtti.hxx. In my opinion, the best would be not using casts at all (using e.g. virtual functions instead). Uray M. János 2012/8/7 Caolán McNamara caol...@redhat.com On Tue, 2012-08-07 at 16:00 +0300, Tor Lillqvist wrote: Thanks, puxhed. Btw, isn't there some issue that dynamic_cast/typeinfo stuff is quite slow under msvc or some such ?, i.e. no biggy for the occasional cast, but a potential problem for say, mass converting the ISA uses in the sw layout code. C. ___ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice
Re: [PATCH] Cleanup in Tools - Options - User Data
For me, it doesn't crash, so I've no idea how to fix it. I don't understand this DELETEZ thing... DELETEZ deletes than zeros a pointer. This is now done automatically by boost::shared_ptr::~shared_ptr(). Uray M. János Nice work! :) I wanted to push this, but it seems it causes a crash here when I do the followings: - start ./soffice.bin - open tools - options - user data - don't change anything, just click OK - file - exit - abort Here is the backtrace: ... And it's really DELETEZ(pUserOptions); -- so hopefully not a false positive. :) Please fix this crash-on-exit, then I'm happy to push this one. ___ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice
[PATCH] fdo#42492: fixing Basic HEX command
The patch solves this bug: https://bugs.freedesktop.org/show_bug.cgi?id=42492 There was a buffer overflow: char aBuffer[16] had no room for the terminating null character. But the hex command was still wrong, because the printf used %X and %lX, which are very platform-dependent. Actually the integer is only 16-bit, and long is only 32-bit. I've corrected this by using %SAL_PRIXUINT32 as described in http://wiki.documentfoundation.org/Development/Sal_Types (and there is no SAL_PRIXUINT16, so both were converted to sal_uInt32). Regards, Uray M. János From d7a39a31a9b39edab1c3354748c5383b1b57b924 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Uray=20M.=20J=C3=A1nos?= uray.ja...@gmail.com Date: Tue, 31 Jul 2012 08:04:06 +0200 Subject: [PATCH] fdo#42492: fixing Basic HEX command Change-Id: I133590c9f2a34d8daab031da0c77bd049d275c29 --- basic/source/runtime/methods.cxx | 11 ++- 1 files changed, 6 insertions(+), 5 deletions(-) diff --git a/basic/source/runtime/methods.cxx b/basic/source/runtime/methods.cxx index 7050093..c06e0d7 100644 --- a/basic/source/runtime/methods.cxx +++ b/basic/source/runtime/methods.cxx @@ -871,12 +871,13 @@ RTLFUNC(Hex) StarBASIC::Error( SbERR_BAD_ARGUMENT ); else { -char aBuffer[16]; +char aBuffer[17]; SbxVariableRef pArg = rPar.Get( 1 ); -if ( pArg-IsInteger() ) -snprintf( aBuffer, sizeof(aBuffer), %X, pArg-GetInteger() ); -else -snprintf( aBuffer, sizeof(aBuffer), %lX, static_castlong unsigned int(pArg-GetLong()) ); +// converting value to unsigned +sal_uInt32 nVal = pArg-IsInteger() ? +static_castsal_uInt16(pArg-GetInteger()) : +static_castsal_uInt32(pArg-GetLong()); +snprintf( aBuffer, sizeof(aBuffer), %SAL_PRIXUINT32, nVal ); rPar.Get(0)-PutString( rtl::OUString::createFromAscii( aBuffer ) ); } } -- 1.7.7 ___ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice
Re: fdo#47907: fix flickering scrolling in Basic IDE
Again? Oh, yes. Now here it is. On Tue, Jul 31, 2012 at 11:10 AM, Noel Power nopo...@suse.com wrote: Hi János you forgot to attach the patch :-) On 30/07/12 19:04, János Uray wrote: This patch solves this bug: https://bugs.freedesktop.org/show_bug.cgi?id=47907 The text was flickering because Window::Invalidate() clears the client area by default. To prevent this, I've added an INVALIDATE_NOERASE parameter to Invalidate() calls. On the other hand, the background still needed to be erased outside the text: the indentation space and the rest of the line. (Note: both svtools and basctl must be rebuilt.) Regards, Uray M. János ___ LibreOffice mailing listLibreOffice@lists.freedesktop.orghttp://lists.freedesktop.org/mailman/listinfo/libreoffice From 52553e121656d3eaf429148f930362489dcd762f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Uray=20M.=20J=C3=A1nos?= uray.ja...@gmail.com Date: Mon, 30 Jul 2012 19:41:03 +0200 Subject: [PATCH] fdo#47907: fix flickering scrolling in Basic IDE Change-Id: I745a8284e4d361872c5c0c0c54500e0d36158fb0 --- basctl/source/basicide/baside2b.cxx |6 ++-- svtools/source/edit/texteng.cxx | 50 +-- 2 files changed, 33 insertions(+), 23 deletions(-) diff --git a/basctl/source/basicide/baside2b.cxx b/basctl/source/basicide/baside2b.cxx index 3e96c22..610d779 100644 --- a/basctl/source/basicide/baside2b.cxx +++ b/basctl/source/basicide/baside2b.cxx @@ -357,7 +357,7 @@ void EditorWindow::Resize() } InitScrollBars(); if ( nVisY != pEditView-GetStartDocPos().Y() ) -Invalidate(); +Invalidate(INVALIDATE_NOERASE); } } @@ -655,7 +655,7 @@ void EditorWindow::DataChanged(DataChangedEvent const rDCEvt) != rDCEvt.GetOldSettings()-GetStyleSettings().GetFieldColor()) { SetBackground(Wallpaper(aColor)); -Invalidate(); +Invalidate(INVALIDATE_NOERASE); } if (pEditEngine != 0) { @@ -685,7 +685,7 @@ void EditorWindow::Notify( SfxBroadcaster /*rBC*/, const SfxHint rHint ) ( 0, pModulWindow-GetBreakPointWindow().GetCurYOffset() - pEditView-GetStartDocPos().Y() ); pModulWindow-GetLineNumberWindow().DoScroll ( 0, pModulWindow-GetLineNumberWindow().GetCurYOffset() - pEditView-GetStartDocPos().Y() ); -pModulWindow-Invalidate(); +pModulWindow-Invalidate(INVALIDATE_NOERASE); } else if( rTextHint.GetId() == TEXT_HINT_TEXTHEIGHTCHANGED ) { diff --git a/svtools/source/edit/texteng.cxx b/svtools/source/edit/texteng.cxx index efce793..a7e7d32 100644 --- a/svtools/source/edit/texteng.cxx +++ b/svtools/source/edit/texteng.cxx @@ -1983,6 +1983,8 @@ void TextEngine::ImpPaint( OutputDevice* pOutDev, const Point rStartPos, Rectan if ( !IsFormatted() ) FormatDoc(); +Size const aOutSize = pOutDev-GetOutputSizePixel(); + bool bTransparent = false; Window* pOutWin = dynamic_castWindow*(pOutDev); bTransparent = (pOutWin pOutWin-IsPaintTransparent()); @@ -2140,30 +2142,24 @@ void TextEngine::ImpPaint( OutputDevice* pOutDev, const Point rStartPos, Rectan break; case PORTIONKIND_TAB: { -// Bei HideSelection() nur Range, pSelection = 0. -if ( pSelStart || pPaintRange ) +Rectangle aTabArea( aTmpPos, Point( aTmpPos.X()+nTxtWidth, aTmpPos.Y()+mnCharHeight-1 ) ); +sal_Bool bDone = sal_False; +if ( pSelStart ) { -Rectangle aTabArea( aTmpPos, Point( aTmpPos.X()+nTxtWidth, aTmpPos.Y()+mnCharHeight-1 ) ); -sal_Bool bDone = sal_False; -if ( pSelStart ) +// liegt der Tab in der Selektion??? +TextPaM aTextStart( nPara, nIndex ); +TextPaM aTextEnd( nPara, nIndex+1 ); +if ( ( aTextStart *pSelEnd ) ( aTextEnd *pSelStart ) ) { -// liegt der Tab in der Selektion??? -TextPaM aTextStart( nPara, nIndex ); -TextPaM aTextEnd( nPara, nIndex+1 ); -if ( ( aTextStart *pSelEnd ) ( aTextEnd *pSelStart ) ) -{ -Color aOldColor = pOutDev-GetFillColor
Re: [PATCH] fdo#42492: fixing Basic HEX command
Yes, that is what I was trying to say: length 15 and length 16 were both wrong. There were two mistakes: the buffer overflow, and the non-compatible types and printf-strings. Fixing the latter one (which resulted in 16 characters on 64-bit platforms, where C++ long is 64-bit) makes the former one (the 15 characters) irrelevant. The patch prints at most 4 (integer) or 8 (long) characters. The integer and long in LibreOffice Basic are described here: http://help.libreoffice.org/Basic/Using_Variables#Integer_Variables Microsoft Visual Basic uses double sizes (4 and 8 bytes): http://msdn.microsoft.com/en-US/library/47zceaw7%28v=vs.110%29 Uray M. János On Tue, Jul 31, 2012 at 11:08 AM, Noel Power nopo...@suse.com wrote: On 31/07/12 07:13, János Uray wrote: The patch solves this bug: https://bugs.freedesktop.org/** show_bug.cgi?id=42492https://bugs.freedesktop.org/show_bug.cgi?id=42492 There was a buffer overflow: char aBuffer[16] had no room for the terminating null character. But the hex command was still wrong, because the printf used %X and %lX, which are very platform-dependent. Actually the integer is only 16-bit, and long is only 32-bit. I've corrected this by using %SAL_PRIXUINT32 as described in http://wiki.** documentfoundation.org/**Development/Sal_Typeshttp://wiki.documentfoundation.org/Development/Sal_Types(and there is no SAL_PRIXUINT16, so both were converted to sal_uInt32). hmm, not looking at the patch in detail yet I am not sure if a length of 16 is sensible, if the size of the type for the hex output is 2 (integer) or 4 bytes (long) I would expect the max display from HEX to be or respectively :/ I'd like to see what MS vba does here, we should try to remain compatible if possible. Noel ___ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice
Re: [PATCH] fdo#42492: fixing Basic HEX command
I also like to avoid C-style string handling, but valueOf() doesn't support unsigned integers (it should support all C++ integer types), and converting to sal_Int64 didn't come into my mind. Why did you extend the comment: // converting value to unsigned *and limit to 2 or 4 byte representation*? GetInteger() and GetLong() return sal_Int16 and sal_Int32, respectively, so the static_casts only convert them to unsigned. Uray M. János On Tue, Jul 31, 2012 at 3:38 PM, Noel Power nopo...@suse.com wrote: Ok, pushed now and also with a further tweak to avoid sprintf and the hardcoded buffersize ( 'cause 17 is too big anyway ) http://cgit.freedesktop.org/libreoffice/core/commit/?id=02a7dfb729799f9e1437a718951566640d0fde02 l ___ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice
[PATCH] fdo#46968: fixing undo of textbox resizing
This patch indends to solve this bug: http://bugs.freedesktop.org/show_bug.cgi?id=46968 The undo just assigned to SdrTextObj::aRect its previous value. Now it calls NbcSetLogicRect() for this task. This function calls -- among others -- NbcSetMinTextFrameHeight(), which is neccessary to avoid this bug. Regards, Uray M. János From ab1e14c564a49e3eb05e3dd9ca4d9d9d537c101a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Uray=20M.=20J=C3=A1nos?= uray.ja...@gmail.com Date: Mon, 30 Jul 2012 11:42:16 +0200 Subject: [PATCH] fdo#46968 fixing undo of textbox resizing Change-Id: Ic647e5c337987985f749b67113892a01f74ee8f9 --- svx/source/svdraw/svdotext.cxx |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/svx/source/svdraw/svdotext.cxx b/svx/source/svdraw/svdotext.cxx index d214f548..76b5b34 100644 --- a/svx/source/svdraw/svdotext.cxx +++ b/svx/source/svdraw/svdotext.cxx @@ -1457,7 +1457,7 @@ void SdrTextObj::RestGeoData(const SdrObjGeoData rGeo) { // RectsDirty is called by SdrObject SdrAttrObj::RestGeoData(rGeo); SdrTextObjGeoData rTGeo=(SdrTextObjGeoData)rGeo; -aRect =rTGeo.aRect; +NbcSetLogicRect(rTGeo.aRect); aGeo =rTGeo.aGeo; SetTextSizeDirty(); } -- 1.7.7 ___ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice
fdo#47907: fix flickering scrolling in Basic IDE
This patch solves this bug: https://bugs.freedesktop.org/show_bug.cgi?id=47907 The text was flickering because Window::Invalidate() clears the client area by default. To prevent this, I've added an INVALIDATE_NOERASE parameter to Invalidate() calls. On the other hand, the background still needed to be erased outside the text: the indentation space and the rest of the line. (Note: both svtools and basctl must be rebuilt.) Regards, Uray M. János ___ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice
[PATCH] fdo#40152: replace with empty string in Basic IDE
This patch solves https://bugs.freedesktop.org/show_bug.cgi?id=40152 . Uray M. János From d10f4ddea22d332fee1a642d076bbce25ac4b10a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Uray=20M.=20J=C3=A1nos?= uray.ja...@gmail.com Date: Wed, 25 Jul 2012 09:42:12 +0200 Subject: [PATCH] fdo#40152 replace with empty string in Basic IDE Change-Id: I2ee41160e5cb10694ccdb5a1cdaf7d4abfeb23bb --- svtools/source/edit/textview.cxx |4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/svtools/source/edit/textview.cxx b/svtools/source/edit/textview.cxx index 1b62541..5d6d988 100644 --- a/svtools/source/edit/textview.cxx +++ b/svtools/source/edit/textview.cxx @@ -1369,7 +1369,7 @@ void TextView::InsertNewText( const rtl::OUString rStr, sal_Bool bSelect ) */ sal_Int32 nLen = rStr.getLength(); sal_Int32 nPos = 0; -while( nLen ) +do { sal_Int32 nChunkLen = nLen 65534 ? 65534 : nLen; String aChunk( rStr.copy( nPos, nChunkLen ) ); @@ -1392,6 +1392,8 @@ void TextView::InsertNewText( const rtl::OUString rStr, sal_Bool bSelect ) nLen -= nChunkLen; nPos += nChunkLen; } +while( nLen ); + mpImpl-mpTextEngine-UndoActionEnd(); mpImpl-mpTextEngine-FormatAndUpdate( this ); -- 1.7.7 ___ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice
Re: [PATCH] fdo#40152: replace with empty string in Basic IDE
It still works for me. Am I doing something wrong? On Wed, Jul 25, 2012 at 11:36 AM, Noel Power nopo...@suse.com wrote: On 25/07/12 08:48, János Uray wrote: This patch solves https://bugs.freedesktop.org/**show_bug.cgi?id=40152https://bugs.freedesktop.org/show_bug.cgi?id=40152. weirdly this doesn't seem to work for me ( no effect ) could you check again? Noel ___ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice
[PATCH] fixed Replace all message in Basic IDE
In Basic IDE, Replace all said Search key replaced times, so without the number. This patch fixes it. (The nFound was treated as a character instead of an integer.) Uray M. János From e6266f1374ccb193314dcb8ac882897b2b5150a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Uray=20M.=20J=C3=A1nos?= uray.ja...@gmail.com Date: Wed, 25 Jul 2012 16:06:39 +0200 Subject: [PATCH] fixed Replace all message in Basic IDE Change-Id: I3e4fdb07ea5a1d1d47bcf190a5ee96800b44f89b --- basctl/source/basicide/basides1.cxx |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/basctl/source/basicide/basides1.cxx b/basctl/source/basicide/basides1.cxx index 48befb7..940bf80 100644 --- a/basctl/source/basicide/basides1.cxx +++ b/basctl/source/basicide/basides1.cxx @@ -147,7 +147,7 @@ void BasicIDEShell::ExecuteCurrent( SfxRequest rReq ) { // memorize item because of the adjustments... BasicIDEGlobals::GetExtraData()-SetSearchItem( (const SvxSearchItem)rItem ); -sal_uInt16 nFound = 0; +int nFound = 0; sal_Bool bCanceled = sal_False; if ( ((const SvxSearchItem)rItem).GetCommand() == SVX_SEARCHCMD_REPLACE_ALL ) { -- 1.7.7 ___ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice
[PATCH] fdo#50632 IDE: update Object Catalog when closing a document
This patch fixed this bug: https://bugs.freedesktop.org/show_bug.cgi?id=50632 The Object Catalog was not updated, because at the point when onDocumentClosed() event was generated in BasicTreeListBox, the to-be-closed document is still alive, so UpdateEntries() doesn't remove the entry. I removed this entry manually in onDocumentClosed(). Uray M. János From 133c979a15bbba5bc78400edb9e1dc1cbff9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Uray=20M.=20J=C3=A1nos?= uray.ja...@gmail.com Date: Tue, 24 Jul 2012 19:27:25 +0200 Subject: [PATCH] fdo#50632 IDE: update Object Catalog when closing a document Change-Id: Ia635aee1611eaff663906e2238bf23a5013242a3 --- basctl/source/basicide/bastype2.cxx | 34 +++--- basctl/source/basicide/bastype2.hxx |2 ++ 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/basctl/source/basicide/bastype2.cxx b/basctl/source/basicide/bastype2.cxx index 087651e..4c72181 100644 --- a/basctl/source/basicide/bastype2.cxx +++ b/basctl/source/basicide/bastype2.cxx @@ -559,9 +559,12 @@ void BasicTreeListBox::onDocumentSaveAsDone( const ScriptDocument /*_rDocument* UpdateEntries(); } -void BasicTreeListBox::onDocumentClosed( const ScriptDocument /*_rDocument*/ ) +void BasicTreeListBox::onDocumentClosed( const ScriptDocument rDocument ) { UpdateEntries(); +// The document is not yet actually deleted, so we need to remove its entry +// manually. +RemoveEntry(rDocument); } void BasicTreeListBox::onDocumentTitleChanged( const ScriptDocument /*_rDocument*/ ) @@ -578,7 +581,7 @@ void BasicTreeListBox::UpdateEntries() { BasicEntryDescriptor aCurDesc( GetEntryDescriptor( FirstSelected() ) ); - +// removing the invalid entries SvLBoxEntry* pLastValid = 0; SvLBoxEntry* pEntry = First(); while ( pEntry ) @@ -586,19 +589,36 @@ void BasicTreeListBox::UpdateEntries() if ( IsValidEntry( pEntry ) ) pLastValid = pEntry; else -{ -delete (BasicEntry*)pEntry-GetUserData(); -GetModel()-Remove( pEntry ); -} +RemoveEntry(pEntry); pEntry = pLastValid ? Next( pLastValid ) : First(); } - ScanAllEntries(); SetCurrentEntry( aCurDesc ); } +// Removes the entry from the tree. +void BasicTreeListBox::RemoveEntry (SvLBoxEntry* pEntry) +{ +// removing the associated user data +delete (BasicEntry*)pEntry-GetUserData(); +// removing the entry +GetModel()-Remove( pEntry ); +} + +// Removes the entry of rDocument. +void BasicTreeListBox::RemoveEntry (ScriptDocument const rDocument) +{ +// finding the entry of rDocument +for (SvLBoxEntry* pEntry = First(); pEntry; pEntry = Next(pEntry)) +if (rDocument == GetEntryDescriptor(pEntry).GetDocument()) +{ +RemoveEntry(pEntry); +break; +} +} + SvLBoxEntry* BasicTreeListBox::CloneEntry( SvLBoxEntry* pSource ) { SvLBoxEntry* pNew = SvTreeListBox::CloneEntry( pSource ); diff --git a/basctl/source/basicide/bastype2.hxx b/basctl/source/basicide/bastype2.hxx index 5a3374d..66b031e 100644 --- a/basctl/source/basicide/bastype2.hxx +++ b/basctl/source/basicide/bastype2.hxx @@ -195,6 +195,8 @@ public: SvLBoxEntry*AddEntry( const ::rtl::OUString rText, const Image rImage, SvLBoxEntry* pParent, bool bChildrenOnDemand, std::auto_ptr BasicEntry aUserData ); +voidRemoveEntry (SvLBoxEntry*); +voidRemoveEntry (ScriptDocument const); ::rtl::OUString GetRootEntryName( const ScriptDocument rDocument, LibraryLocation eLocation ) const; voidGetRootEntryBitmaps( const ScriptDocument rDocument, Image rImage ); -- 1.7.7 ___ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice
[PATCH] fdo#50633 IDE: select current module in Object Catalog on open
This patch solves this bug: https://bugs.freedesktop.org/show_bug.cgi?id=50633 Uray M. János ___ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice
Re: [PATCH] fdo#50633 IDE: select current module in Object Catalog on open
Oh, yes, I'm sorry. On Tue, Jul 24, 2012 at 11:33 AM, Noel Grandin n...@peralex.com wrote: I think you forgot to attach it. On 2012-07-24 11:31, János Uray wrote: This patch solves this bug: https://bugs.freedesktop.org/show_bug.cgi?id=50633 Uray M. János ___ LibreOffice mailing listLibreOffice@lists.freedesktop.orghttp://lists.freedesktop.org/mailman/listinfo/libreoffice -- Disclaimer: http://www.peralex.com/disclaimer.html From 122a8b70bbf966381bfb930d2021eb641d851839 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Uray=20M.=20J=C3=A1nos?= uray.ja...@gmail.com Date: Tue, 24 Jul 2012 11:29:57 +0200 Subject: [PATCH] fdo#50633 IDE: select current module in Object Catalog on open Change-Id: Ieea731b0ed8eefdab616ed1f778b445aae14191c --- basctl/source/basicide/basides1.cxx |1 + basctl/source/basicide/basidesh.cxx |6 +- basctl/source/basicide/objdlg.cxx |7 +-- basctl/source/basicide/objdlg.hxx |2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/basctl/source/basicide/basides1.cxx b/basctl/source/basicide/basides1.cxx index ae9443f..48befb7 100644 --- a/basctl/source/basicide/basides1.cxx +++ b/basctl/source/basicide/basides1.cxx @@ -1205,6 +1205,7 @@ void BasicIDEShell::SetCurWindow( IDEBaseWindow* pNewWin, sal_Bool bUpdateTabBar GetViewFrame()-GetWindow().SetHelpId( HID_BASICIDE_MODULWINDOW ); SfxObjectShell::SetCurrentComponent( NULL ); } +pModulLayout-GetObjectCatalog().SetCurrentEntry(pCurWin); SetUndoManager( pCurWin ? pCurWin-GetUndoManager() : 0 ); InvalidateBasicIDESlots(); EnableScrollbars( pCurWin ? sal_True : sal_False ); diff --git a/basctl/source/basicide/basidesh.cxx b/basctl/source/basicide/basidesh.cxx index 885f7af..e2e1c5a 100644 --- a/basctl/source/basicide/basidesh.cxx +++ b/basctl/source/basicide/basidesh.cxx @@ -543,11 +543,7 @@ void BasicIDEShell::ShowObjectDialog( sal_Bool bShow, sal_Bool bCreateOrDestroy if ( pObjectCatalog ) { pObjectCatalog-SetCancelHdl( LINK( this, BasicIDEShell, ObjectDialogCancelHdl ) ); -BasicEntryDescriptor aDesc; -IDEBaseWindow* pCurWin_ = GetCurWindow(); -if ( pCurWin_ ) -aDesc = pCurWin_-CreateEntryDescriptor(); -pObjectCatalog-SetCurrentEntry( aDesc ); +pObjectCatalog-SetCurrentEntry(pCurWin); } } diff --git a/basctl/source/basicide/objdlg.cxx b/basctl/source/basicide/objdlg.cxx index 1043594..64935bb 100644 --- a/basctl/source/basicide/objdlg.cxx +++ b/basctl/source/basicide/objdlg.cxx @@ -223,9 +223,12 @@ void ObjectCatalog::UpdateEntries() aMacroTreeList.UpdateEntries(); } -void ObjectCatalog::SetCurrentEntry( BasicEntryDescriptor rDesc ) +void ObjectCatalog::SetCurrentEntry (IDEBaseWindow* pCurWin) { -aMacroTreeList.SetCurrentEntry( rDesc ); +BasicEntryDescriptor aDesc; +if (pCurWin) +aDesc = pCurWin-CreateEntryDescriptor(); +aMacroTreeList.SetCurrentEntry(aDesc); } ObjectCatalogToolBox_Impl::ObjectCatalogToolBox_Impl( diff --git a/basctl/source/basicide/objdlg.hxx b/basctl/source/basicide/objdlg.hxx index c0c3c45..f82ae0e 100644 --- a/basctl/source/basicide/objdlg.hxx +++ b/basctl/source/basicide/objdlg.hxx @@ -64,7 +64,7 @@ public: virtual ~ObjectCatalog(); voidUpdateEntries(); -voidSetCurrentEntry( BasicEntryDescriptor rDesc ); +voidSetCurrentEntry (IDEBaseWindow* pCurWin); voidSetCancelHdl( const Link rLink ) { aCancelHdl = rLink; } }; -- 1.7.7 ___ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice
Re: [PATCH] fdo#50633 IDE: select current module in Object Catalog on open
Oh, yes, I'm sorry. On Tue, Jul 24, 2012 at 11:35 AM, Korrawit Pruegsanusak detective.conan.1...@gmail.com wrote: Hello, On Tue, Jul 24, 2012 at 4:31 PM, János Uray uray.ja...@gmail.com wrote: This patch solves this bug: Seems you forgot to attach the patch? :-) Bets Regards, -- Korrawit Pruegsanusak From 122a8b70bbf966381bfb930d2021eb641d851839 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Uray=20M.=20J=C3=A1nos?= uray.ja...@gmail.com Date: Tue, 24 Jul 2012 11:29:57 +0200 Subject: [PATCH] fdo#50633 IDE: select current module in Object Catalog on open Change-Id: Ieea731b0ed8eefdab616ed1f778b445aae14191c --- basctl/source/basicide/basides1.cxx |1 + basctl/source/basicide/basidesh.cxx |6 +- basctl/source/basicide/objdlg.cxx |7 +-- basctl/source/basicide/objdlg.hxx |2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/basctl/source/basicide/basides1.cxx b/basctl/source/basicide/basides1.cxx index ae9443f..48befb7 100644 --- a/basctl/source/basicide/basides1.cxx +++ b/basctl/source/basicide/basides1.cxx @@ -1205,6 +1205,7 @@ void BasicIDEShell::SetCurWindow( IDEBaseWindow* pNewWin, sal_Bool bUpdateTabBar GetViewFrame()-GetWindow().SetHelpId( HID_BASICIDE_MODULWINDOW ); SfxObjectShell::SetCurrentComponent( NULL ); } +pModulLayout-GetObjectCatalog().SetCurrentEntry(pCurWin); SetUndoManager( pCurWin ? pCurWin-GetUndoManager() : 0 ); InvalidateBasicIDESlots(); EnableScrollbars( pCurWin ? sal_True : sal_False ); diff --git a/basctl/source/basicide/basidesh.cxx b/basctl/source/basicide/basidesh.cxx index 885f7af..e2e1c5a 100644 --- a/basctl/source/basicide/basidesh.cxx +++ b/basctl/source/basicide/basidesh.cxx @@ -543,11 +543,7 @@ void BasicIDEShell::ShowObjectDialog( sal_Bool bShow, sal_Bool bCreateOrDestroy if ( pObjectCatalog ) { pObjectCatalog-SetCancelHdl( LINK( this, BasicIDEShell, ObjectDialogCancelHdl ) ); -BasicEntryDescriptor aDesc; -IDEBaseWindow* pCurWin_ = GetCurWindow(); -if ( pCurWin_ ) -aDesc = pCurWin_-CreateEntryDescriptor(); -pObjectCatalog-SetCurrentEntry( aDesc ); +pObjectCatalog-SetCurrentEntry(pCurWin); } } diff --git a/basctl/source/basicide/objdlg.cxx b/basctl/source/basicide/objdlg.cxx index 1043594..64935bb 100644 --- a/basctl/source/basicide/objdlg.cxx +++ b/basctl/source/basicide/objdlg.cxx @@ -223,9 +223,12 @@ void ObjectCatalog::UpdateEntries() aMacroTreeList.UpdateEntries(); } -void ObjectCatalog::SetCurrentEntry( BasicEntryDescriptor rDesc ) +void ObjectCatalog::SetCurrentEntry (IDEBaseWindow* pCurWin) { -aMacroTreeList.SetCurrentEntry( rDesc ); +BasicEntryDescriptor aDesc; +if (pCurWin) +aDesc = pCurWin-CreateEntryDescriptor(); +aMacroTreeList.SetCurrentEntry(aDesc); } ObjectCatalogToolBox_Impl::ObjectCatalogToolBox_Impl( diff --git a/basctl/source/basicide/objdlg.hxx b/basctl/source/basicide/objdlg.hxx index c0c3c45..f82ae0e 100644 --- a/basctl/source/basicide/objdlg.hxx +++ b/basctl/source/basicide/objdlg.hxx @@ -64,7 +64,7 @@ public: virtual ~ObjectCatalog(); voidUpdateEntries(); -voidSetCurrentEntry( BasicEntryDescriptor rDesc ); +voidSetCurrentEntry (IDEBaseWindow* pCurWin); voidSetCancelHdl( const Link rLink ) { aCancelHdl = rLink; } }; -- 1.7.7 ___ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice
[PATCH] fdo#52223: fix Object Catalog in Basic IDE when resizing
This patch fixes this bug: https://bugs.freedesktop.org/show_bug.cgi?id=52223 From ef69583b67ff9f34e615b3595984090515dec501 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Uray=20M.=20J=C3=A1nos?= uray.ja...@gmail.com Date: Mon, 23 Jul 2012 18:48:47 +0200 Subject: [PATCH] fdo#52223 fix Object Catalog in Basic IDE when resizing Change-Id: I96861bfcf7c0da6dd94c50acd673dedb14d15204 --- basctl/source/basicide/baside2.cxx | 28 +--- basctl/source/basicide/baside2.hxx |2 ++ basctl/source/basicide/basides1.cxx | 23 --- basctl/source/basicide/basidesh.cxx |2 -- basctl/source/inc/basidesh.hxx |2 -- 5 files changed, 27 insertions(+), 30 deletions(-) diff --git a/basctl/source/basicide/baside2.cxx b/basctl/source/basicide/baside2.cxx index e419c42..0ece951 100644 --- a/basctl/source/basicide/baside2.cxx +++ b/basctl/source/basicide/baside2.cxx @@ -1508,14 +1508,14 @@ void ModulWindowLayout::ArrangeWindows() if ( ( nVSplitPos nMinPos ) || ( nVSplitPos nMaxPos ) ) nVSplitPos = ( nVSplitPos nMinPos ) ? 0 : ( aSz.Height() - SPLIT_HEIGHT ); -Size aXEWSz; -aXEWSz.Width() = aSz.Width() - OBJCAT_PANE_WIDTH; - -aXEWSz.Height() = nVSplitPos + 1; if ( m_pModulWindow ) { DBG_CHKOBJ( m_pModulWindow, ModulWindow, 0 ); -m_pModulWindow-SetPosSizePixel( Point( OBJCAT_PANE_WIDTH, 0 ), aXEWSz ); +bool const bObjCat = aObjectCatalog.IsVisible(); +m_pModulWindow-SetPosSizePixel( +Point(bObjCat ? OBJCAT_PANE_WIDTH : 0, 0), +Size(bObjCat ? aSz.Width() - OBJCAT_PANE_WIDTH : aSz.Width(), nVSplitPos + 1) +); } aVSplitter.SetDragRectPixel( Rectangle( Point( 0, 0 ), Size( aSz.Width(), aSz.Height() ) ) ); @@ -1540,10 +1540,12 @@ void ModulWindowLayout::ArrangeWindows() if ( !aStackWindow.IsFloatingMode() ) aStackWindow.SetPosSizePixel( aSWPos, aSWSz ); -Size aOCSz( OBJCAT_PANE_WIDTH, aSz.Height() - aSWSz.Height() - 3 ); -Point aOCPos( 0, 0 ); if ( !aObjectCatalog.IsFloatingMode() ) +{ +Size aOCSz( OBJCAT_PANE_WIDTH, aSz.Height() - aSWSz.Height() - 3 ); +Point aOCPos( 0, 0 ); aObjectCatalog.SetPosSizePixel( aOCPos, aOCSz ); +} if ( aStackWindow.IsFloatingMode() aWatchWindow.IsFloatingMode() ) aHSplitter.Hide(); @@ -1733,4 +1735,16 @@ Image ModulWindowLayout::getImage(sal_uInt16 nId) const return m_aImagesNormal.GetImage(nId); } +// shows or hides the Object Catalog window (depending on its state) +void ModulWindowLayout::ToggleObjectCatalog () +{ +// show or hide? +bool const bShow = !aObjectCatalog.IsVisible(); +bShow ? aObjectCatalog.Show() : aObjectCatalog.Hide(); +if (m_pModulWindow) +m_pModulWindow-SetObjectCatalogDisplay(bShow); +// refreshing +ArrangeWindows(); +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/basctl/source/basicide/baside2.hxx b/basctl/source/basicide/baside2.hxx index 9e90a75..e13ce31 100644 --- a/basctl/source/basicide/baside2.hxx +++ b/basctl/source/basicide/baside2.hxx @@ -477,6 +477,8 @@ public: inline Color const getSyntaxColor(TokenTypes eType) const { return m_aSyntaxColors[eType]; } + +void ToggleObjectCatalog (); }; #endif // _BASIDE2_HXX diff --git a/basctl/source/basicide/basides1.cxx b/basctl/source/basicide/basides1.cxx index d11ece3..ae9443f 100644 --- a/basctl/source/basicide/basides1.cxx +++ b/basctl/source/basicide/basides1.cxx @@ -439,26 +439,11 @@ void BasicIDEShell::ExecuteGlobal( SfxRequest rReq ) pWin-EditMacro( rInfo.GetMethod() ); } break; + case SID_BASICIDE_OBJCAT: -{ -if ( bObjectCatalogDisplay ) -{ -pModulLayout-GetObjectCatalog().Hide(); -dynamic_castModulWindow*(pCurWin)-SetPosPixel( Point( 0, 0 ) ); -dynamic_castModulWindow*(pCurWin)-SetSizePixel( Size( pCurWin-GetSizePixel().Width() + OBJCAT_PANE_WIDTH, pCurWin-GetSizePixel().Height() ) ); -dynamic_castModulWindow*(pCurWin)-SetObjectCatalogDisplay( false ); -bObjectCatalogDisplay = sal_False; -} -else -{ -pModulLayout-GetObjectCatalog().Show(); -dynamic_castModulWindow*(pCurWin)-SetPosPixel( Point( OBJCAT_PANE_WIDTH, 0 ) ); -dynamic_castModulWindow*(pCurWin)-SetSizePixel( Size( pCurWin-GetSizePixel().Width() - OBJCAT_PANE_WIDTH, pCurWin-GetSizePixel().Height() ) ); -dynamic_castModulWindow*(pCurWin)-SetObjectCatalogDisplay( true ); -bObjectCatalogDisplay = sal_True; -} -} -break; +pModulLayout-ToggleObjectCatalog(); +break; + case SID_BASICIDE_NAMECHANGEDONTAB: { DBG_ASSERT( rReq.GetArgs(), arguments expected ); diff --git
Re: C++11 in LibreOffice
Thank you again. Unfortunately gcc starts to support C++11 only in 4.3, and MSVC has very little C++11 in 2008 (2010 has much more). Uray M. János On Mon, Jul 16, 2012 at 6:53 PM, Kohei Yoshida kohei.yosh...@gmail.comwrote: On Mon, Jul 16, 2012 at 12:35 PM, János Uray uray.ja...@gmail.com wrote: Thank you. It's not a happy answer though. I hoped that there are at least some little features in the intersection of the C++11-knowledge of the supported compilers. The most problematic ones are the gcc compiler used on Mac OS X (gcc 4.0?), and MSVC 2008 compilers. If you (or someone else equally interested) are willing to research those two compilers to see what subset of C++11 features they support (if at all), then I don't see why we shouldn't use those features. For the record, I'm also eager to start using C++11 too, but since the standard being so new that, we need to be realistic and allow some time for all our major platforms to support it. Kohei ___ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice
License statement
License statement All my current and past contributions made to the LibreOffice project are done under MPL1.1+ / GPLv3+ / LGPLv3+. Until further notice, all my future contributions to the LibreOffice project are available under MPL1.1+ / GPLv3+ / LGPLv3+. Uray M. János ___ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice
C++11 in LibreOffice
I have a simple question. Can I use C++11 in LibreOffice development? Or at least some parts of C++11? Thanks Uray M. János ___ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice