diff options
author | BlackNoxis <steven.darklight@gmail.com> | 2015-01-14 02:34:45 +0200 |
---|---|---|
committer | BlackNoxis <steven.darklight@gmail.com> | 2015-01-14 02:34:45 +0200 |
commit | f86d4e7da4d5a21761cc8764306908503d291ded (patch) | |
tree | 833bc4e00ff876524dbdeb16f67ea6093816e337 /app-office/libreoffice/files | |
parent | 40937953b3c8a564ba569bf767b08e0cb16a5170 (diff) |
Added Libreoffice with our artwork theme
Diffstat (limited to 'app-office/libreoffice/files')
5 files changed, 371 insertions, 0 deletions
diff --git a/app-office/libreoffice/files/libreoffice-3.7-system-pyuno.patch b/app-office/libreoffice/files/libreoffice-3.7-system-pyuno.patch new file mode 100644 index 00000000..fe93728c --- /dev/null +++ b/app-office/libreoffice/files/libreoffice-3.7-system-pyuno.patch @@ -0,0 +1,44 @@ +diff --git a/desktop/scripts/soffice.sh b/desktop/scripts/soffice.sh +index a259bf6..672fa23 100755 +--- a/desktop/scripts/soffice.sh ++++ b/desktop/scripts/soffice.sh +@@ -129,6 +129,9 @@ if echo "$checks" | grep -q "cc" ; then + exit 1; + fi + ++PYTHONPATH=$sd_prog${PYTHONPATH+:$PYTHONPATH} ++export PYTHONPATH ++ + case "`uname -s`" in + NetBSD|OpenBSD|FreeBSD|DragonFly) + # this is a temporary hack until we can live with the default search paths +diff --git a/pyuno/source/module/uno.py b/pyuno/source/module/uno.py +index 4ff2606..6a05eed 100644 +--- a/pyuno/source/module/uno.py ++++ b/pyuno/source/module/uno.py +@@ -16,8 +16,12 @@ + # except in compliance with the License. You may obtain a copy of + # the License at http://www.apache.org/licenses/LICENSE-2.0 . + # ++import os + import sys + ++sys.path.append('%eprefix%/usr/%libdir%/libreoffice/program') ++if getattr(os.environ, 'URE_BOOTSTRAP', None) is None: ++ os.environ['URE_BOOTSTRAP'] = "vnd.sun.star.pathname:%eprefix%/usr/%libdir%/libreoffice/program/fundamentalrc" + import pyuno + + try: +diff --git a/scripting/source/pyprov/officehelper.py b/scripting/source/pyprov/officehelper.py +index 99d3b03..704edab 100755 +--- a/scripting/source/pyprov/officehelper.py ++++ b/scripting/source/pyprov/officehelper.py +@@ -44,7 +44,7 @@ def bootstrap(): + if "UNO_PATH" in os.environ: + sOffice = os.environ["UNO_PATH"] + else: +- sOffice = "" # lets hope for the best ++ sOffice = "%eprefix%/usr/%libdir%/libreoffice/program" + sOffice = os.path.join(sOffice, "soffice") + if platform.startswith("win"): + sOffice += ".exe" diff --git a/app-office/libreoffice/files/libreoffice-4.1.3.2-kde-calchang.patch b/app-office/libreoffice/files/libreoffice-4.1.3.2-kde-calchang.patch new file mode 100644 index 00000000..8cf3a2b3 --- /dev/null +++ b/app-office/libreoffice/files/libreoffice-4.1.3.2-kde-calchang.patch @@ -0,0 +1,74 @@ +From 95f60222e75486336b6569afa8f34d60b51c94ad Mon Sep 17 00:00:00 2001 +From: Jan-Marek Glogowski <glogow@fbihome.de> +Date: Thu, 21 Nov 2013 12:40:57 +0100 +Subject: [PATCH] fdo#67011: Run Display::Yield through KDEXLib::Yield. + +Drag'n'Drop is handled in a second thread, which tries to "yield +the display" while the main Qt thread probably is already +yielding. Both need the YieldMutex, which freezes the application +until the D'n'D thread times out. + +Trying to yield the display throught the application yield +results in a recursive loop. + +So this catches and breaks the recursion, but just inside the Qt +thread, so other processes can "yield on the display", instead +of simply disabling the Display::Yield. + +Change-Id: Ifba91aa89fe5b0a89cc94820935dc996a065112f +Reviewed-on: https://gerrit.libreoffice.org/6750 +Tested-by: Jan-Marek Glogowski <glogow@fbihome.de> +Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de> +--- + vcl/unx/kde4/KDESalDisplay.cxx | 22 ++++++++++++++++------ + 1 file changed, 16 insertions(+), 6 deletions(-) + +diff --git a/vcl/unx/kde4/KDESalDisplay.cxx b/vcl/unx/kde4/KDESalDisplay.cxx +index 21440fc..ee330e7 100644 +--- a/vcl/unx/kde4/KDESalDisplay.cxx ++++ b/vcl/unx/kde4/KDESalDisplay.cxx +@@ -25,6 +25,8 @@ + #include <assert.h> + #include <unx/saldata.hxx> + ++#include <qthread.h> ++ + SalKDEDisplay* SalKDEDisplay::selfptr = NULL; + + SalKDEDisplay::SalKDEDisplay( Display* pDisp ) +@@ -48,18 +50,26 @@ SalKDEDisplay::~SalKDEDisplay() + + void SalKDEDisplay::Yield() + { +- if( DispatchInternalEvent() ) ++ // We yield the display throught the main Qt thread. ++ // Actually this Yield may call the Display::Yield, which results in an ++ // unlimited cycle. ++ static bool break_cyclic_yield_recursion = false; ++ bool is_qt_gui_thread = ( qApp->thread() == QThread::currentThread() ); ++ ++ if( DispatchInternalEvent() || break_cyclic_yield_recursion ) + return; + ++ if( is_qt_gui_thread ) ++ break_cyclic_yield_recursion = true; ++ + DBG_ASSERT( static_cast<SalYieldMutex*>(GetSalData()->m_pInstance->GetYieldMutex())->GetThreadId() == + osl::Thread::getCurrentIdentifier(), + "will crash soon since solar mutex not locked in SalKDEDisplay::Yield" ); + +- XEvent event; +- XNextEvent( pDisp_, &event ); +- if( checkDirectInputEvent( &event )) +- return; +- qApp->x11ProcessEvent( &event ); ++ static_cast<KDEXLib*>(GetXLib())->Yield( true, false ); ++ ++ if( is_qt_gui_thread ) ++ break_cyclic_yield_recursion = false; + } + + // HACK: When using Qt event loop, input methods (japanese, etc.) will get broken because +-- +1.8.5.1 + diff --git a/app-office/libreoffice/files/libreoffice-4.1.3.2-kde-recursiverepaint.patch b/app-office/libreoffice/files/libreoffice-4.1.3.2-kde-recursiverepaint.patch new file mode 100644 index 00000000..7067c019 --- /dev/null +++ b/app-office/libreoffice/files/libreoffice-4.1.3.2-kde-recursiverepaint.patch @@ -0,0 +1,141 @@ +Minor modification for libreoffice-4.1: in line 137, reset Q_EMIT to +emit... dilfridge@gentoo.org + +From 13a34f4c6307d1bd2443cbf3fbd83bfdd8cdbafb Mon Sep 17 00:00:00 2001 +From: Jan-Marek Glogowski <glogow@fbihome.de> +Date: Fri, 15 Nov 2013 13:42:15 +0000 +Subject: Rewrite Qt4 based nested yield mutex locking. + +The Qt event loop may start a nested event loop, when checking for +clipboard and Drag'n'Drop events. + +Previously this was handled by running this nested yield loop +inside the main glib loop using + qApp->clipboard()->property( "useEventLoopWhenWaiting" ); + +But this results in nested paint events which crash LO: + QWidget::repaint: Recursive repaint detected + +To prevend yield mutex deadlocks, check for nested event loops +and always release the yield lock before starting the nested Yield +event loop. + +This fixes fdo#69002. + +Change-Id: I7e827abd3489783053ec7123372742a32555875d +Reviewed-on: https://gerrit.libreoffice.org/6685 +Reviewed-by: Michael Meeks <michael.meeks@collabora.com> +Reviewed-by: Thorsten Behrens <thb@documentfoundation.org> +Tested-by: Thorsten Behrens <thb@documentfoundation.org> +--- +diff --git a/vcl/unx/kde4/KDE4FilePicker.cxx b/vcl/unx/kde4/KDE4FilePicker.cxx +index ee4a6e3..cb20be4 100644 +--- a/vcl/unx/kde4/KDE4FilePicker.cxx ++++ b/vcl/unx/kde4/KDE4FilePicker.cxx +@@ -58,6 +58,8 @@ + + #undef Region + ++#include "generic/geninst.h" ++ + using namespace ::com::sun::star; + using namespace ::com::sun::star::ui::dialogs; + using namespace ::com::sun::star::ui::dialogs::TemplateDescription; +@@ -253,28 +255,16 @@ sal_Int16 SAL_CALL KDE4FilePicker::execute() + _dialog->setFilter(_filter); + _dialog->filterWidget()->setEditable(false); + +- // At this point, SolarMutex is held. Opening the KDE file dialog here +- // can lead to QClipboard asking for clipboard contents. If LO core +- // is the owner of the clipboard content, this will block for 5 seconds +- // and timeout, since the clipboard thread will not be able to acquire +- // SolarMutex and thus won't be able to respond. If the event loops +- // are properly integrated and QClipboard can use a nested event loop +- // (see the KDE VCL plug), then this won't happen, but otherwise +- // simply release the SolarMutex here. The KDE file dialog does not +- // call back to the core, so this should be safe (and if it does, +- // SolarMutex will need to be re-acquired). +- long mutexrelease = 0; +- if( !qApp->clipboard()->property( "useEventLoopWhenWaiting" ).toBool()) +- mutexrelease = Application::ReleaseSolarMutex(); +- //block and wait for user input ++ // We're entering a nested loop. ++ // Release the yield mutex to prevent deadlocks. + int result = _dialog->exec(); ++ + // HACK: KFileDialog uses KConfig("kdeglobals") for saving some settings + // (such as the auto-extension flag), but that doesn't update KGlobal::config() + // (which is probably a KDE bug), so force reading the new configuration, + // otherwise the next opening of the dialog would use the old settings. + KGlobal::config()->reparseConfiguration(); +- if( !qApp->clipboard()->property( "useEventLoopWhenWaiting" ).toBool()) +- Application::AcquireSolarMutex( mutexrelease ); ++ + if( result == KFileDialog::Accepted) + return ExecutableDialogResults::OK; + +diff --git a/vcl/unx/kde4/KDEXLib.cxx b/vcl/unx/kde4/KDEXLib.cxx +index 8e0eb67..67d7a4d 100644 +--- a/vcl/unx/kde4/KDEXLib.cxx ++++ b/vcl/unx/kde4/KDEXLib.cxx +@@ -225,9 +225,6 @@ void KDEXLib::setupEventLoop() + eventLoopType = GlibEventLoop; + old_gpoll = g_main_context_get_poll_func( NULL ); + g_main_context_set_poll_func( NULL, gpoll_wrapper ); +- // set QClipboard to use event loop, otherwise the main thread will hold +- // SolarMutex locked, which will prevent the clipboard thread from answering +- m_pApplication->clipboard()->setProperty( "useEventLoopWhenWaiting", true ); + return; + } + #endif +@@ -244,9 +241,6 @@ void KDEXLib::setupEventLoop() + eventLoopType = QtUnixEventLoop; + QInternal::callFunction( QInternal::GetUnixSelectFunction, reinterpret_cast< void** >( &qt_select )); + QInternal::callFunction( QInternal::SetUnixSelectFunction, reinterpret_cast< void** >( lo_select )); +- // set QClipboard to use event loop, otherwise the main thread will hold +- // SolarMutex locked, which will prevent the clipboard thread from answering +- m_pApplication->clipboard()->setProperty( "useEventLoopWhenWaiting", true ); + return; + } + #endif +@@ -300,6 +294,9 @@ void KDEXLib::socketNotifierActivated( int fd ) + + void KDEXLib::Yield( bool bWait, bool bHandleAllCurrentEvents ) + { ++ // Nested yield loop counter. ++ static int loop_depth = 0; ++ + if( eventLoopType == LibreOfficeEventLoop ) + { + if( qApp->thread() == QThread::currentThread()) +@@ -310,13 +307,24 @@ void KDEXLib::Yield( bool bWait, bool bHandleAllCurrentEvents ) + } + return SalXLib::Yield( bWait, bHandleAllCurrentEvents ); + } ++ + // if we are the main thread (which is where the event processing is done), + // good, just do it +- if( qApp->thread() == QThread::currentThread()) ++ if( qApp->thread() == QThread::currentThread()) { ++ // Release the yield lock before entering a nested loop. ++ if (loop_depth > 0) ++ SalYieldMutexReleaser aReleaser; ++ loop_depth++; + processYield( bWait, bHandleAllCurrentEvents ); +- else +- { // if this deadlocks, event processing needs to go into a separate thread +- // or some other solution needs to be found ++ loop_depth--; ++ } ++ else { ++ // we were called from another thread; ++ // release the yield lock to prevent deadlock. ++ SalYieldMutexReleaser aReleaser; ++ ++ // if this deadlocks, event processing needs to go into a separate ++ // thread or some other solution needs to be found + emit processYieldSignal( bWait, bHandleAllCurrentEvents ); + } + } +-- +cgit v0.9.0.2-2-gbebe diff --git a/app-office/libreoffice/files/libreoffice-4.2.0.4-curl-config.patch b/app-office/libreoffice/files/libreoffice-4.2.0.4-curl-config.patch new file mode 100644 index 00000000..e07f5ad9 --- /dev/null +++ b/app-office/libreoffice/files/libreoffice-4.2.0.4-curl-config.patch @@ -0,0 +1,60 @@ +--- a/configure.ac 2014-01-27 22:35:34.000000000 +0100 ++++ b/configure.ac 2014-02-02 23:27:50.911033565 +0100 +@@ -8606,39 +8606,31 @@ + AC_MSG_RESULT([external]) + SYSTEM_CURL=YES + +- curl_version="" +- if test "$cross_compiling" = "yes"; then +- dnl At least the OBS mingw32-libcurl-devel package +- dnl comes with a proper .pc file +- PKG_CHECK_MODULES(CURL, libcurl,, [:]) +- if test -n "$CURL_PKG_ERRORS"; then +- AC_MSG_RESULT([no]) +- else +- curl_version=`$PKG_CONFIG --modversion libcurl` +- fi +- fi +- if test -z "$curl_version"; then ++ AC_MSG_CHECKING([whether libcurl is >= 7.13.1]) ++ ++ # First try PKGCONFIG and then fall back ++ PKG_CHECK_MODULES(CURL, libcurl >= 7.13.1,, [:]) ++ ++ if test -n "$CURL_PKG_ERRORS"; then + AC_PATH_PROG(CURLCONFIG, curl-config) + if test -z "$CURLCONFIG"; then +- AC_MSG_ERROR([install the libcurl development package]) ++ AC_MSG_ERROR([curl development files not found]) + fi + CURL_LIBS=`$CURLCONFIG --libs` + CURL_CFLAGS=$("$CURLCONFIG" --cflags | sed -e "s/-I/${ISYSTEM?}/g") + curl_version=`$CURLCONFIG --version | $SED -e 's/^libcurl //'` +- fi +- +- AC_MSG_CHECKING([whether libcurl is >= 7.13.1]) + +- case $curl_version in +- dnl brackets doubled below because Autoconf uses them as m4 quote characters, +- dnl so they need to be doubled to end up in the configure script +- 7.13.1|7.1[[4-9]].*|7.[[2-9]]?.*|7.???.*|[[8-9]].*|[[1-9]][[0-9]].*) +- AC_MSG_RESULT([yes, you have $curl_version]) +- ;; +- *) +- AC_MSG_ERROR([no, you have $curl_version]) +- ;; +- esac ++ case $curl_version in ++ dnl brackets doubled below because Autoconf uses them as m4 quote characters, ++ dnl so they need to be doubled to end up in the configure script ++ 7.13.1|7.1[[4-9]].*|7.[[2-9]]?.*|7.???.*|[[8-9]].*|[[1-9]][[0-9]].*) ++ ;; ++ *) ++ AC_MSG_ERROR([no, you have $curl_version]) ++ ;; ++ esac ++ fi ++ AC_MSG_RESULT([yes]) + + libo_MINGW_CHECK_DLL([libcurl]) + libo_MINGW_TRY_DLL([libintl]) diff --git a/app-office/libreoffice/files/libreoffice-4.2.6.3-jpeg9.patch b/app-office/libreoffice/files/libreoffice-4.2.6.3-jpeg9.patch new file mode 100644 index 00000000..b72012b6 --- /dev/null +++ b/app-office/libreoffice/files/libreoffice-4.2.6.3-jpeg9.patch @@ -0,0 +1,52 @@ +From a96a0ae362070d8e99587c6d658c1e11895c717c Mon Sep 17 00:00:00 2001 +From: "Andreas K. Huettel (dilfridge)" <dilfridge@gentoo.org> +Date: Thu, 18 Sep 2014 22:43:35 +0200 +Subject: [PATCH] type conversion fixes for jpeg-9 compatibility + +backport of 867aa217e6bcb543ea61c61f10088042d632bd07 from libreoffice-4-3 branch +--- + vcl/source/filter/jpeg/JpegReader.cxx | 6 +++--- + vcl/source/filter/jpeg/JpegWriter.cxx | 2 +- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/vcl/source/filter/jpeg/JpegReader.cxx b/vcl/source/filter/jpeg/JpegReader.cxx +index 89f9028..9014d00 100644 +--- a/vcl/source/filter/jpeg/JpegReader.cxx ++++ b/vcl/source/filter/jpeg/JpegReader.cxx +@@ -71,7 +71,7 @@ extern "C" void init_source (j_decompress_ptr cinfo) + * but we don't clear the input buffer. + * This is correct behavior for reading a series of images from one source. + */ +- source->start_of_file = sal_True; ++ source->start_of_file = TRUE; + } + + long StreamRead( SvStream* pStream, void* pBuffer, long nBufferSize ) +@@ -119,9 +119,9 @@ extern "C" boolean fill_input_buffer (j_decompress_ptr cinfo) + + source->pub.next_input_byte = source->buffer; + source->pub.bytes_in_buffer = nbytes; +- source->start_of_file = sal_False; ++ source->start_of_file = FALSE; + +- return sal_True; ++ return TRUE; + } + + extern "C" void skip_input_data (j_decompress_ptr cinfo, long numberOfBytes) +diff --git a/vcl/source/filter/jpeg/JpegWriter.cxx b/vcl/source/filter/jpeg/JpegWriter.cxx +index 102eb4d..ba2f788 100644 +--- a/vcl/source/filter/jpeg/JpegWriter.cxx ++++ b/vcl/source/filter/jpeg/JpegWriter.cxx +@@ -86,7 +86,7 @@ extern "C" boolean empty_output_buffer (j_compress_ptr cinfo) + destination->pub.next_output_byte = destination->buffer; + destination->pub.free_in_buffer = BUFFER_SIZE; + +- return sal_True; ++ return TRUE; + } + + extern "C" void term_destination (j_compress_ptr cinfo) +-- +2.1.0 + |