Commits

Anonymous committed 5324115

CWS-TOOLING: integrate CWS vcl95

Comments (0)

Files changed (18)

svtools/source/control/tabbar.cxx

     if ( IsControlBackground() )
         rFaceColor = GetControlBackground();
     else
-        rFaceColor = rStyleSettings.GetFaceColor();
+        rFaceColor = rStyleSettings.GetInactiveTabColor();
     if ( IsControlForeground() )
         rFaceTextColor = GetControlForeground();
     else
     if ( mbSelColor )
         rSelectColor = maSelColor;
     else
-        rSelectColor = rStyleSettings.GetWindowColor();
+        rSelectColor = rStyleSettings.GetActiveTabColor();
     if ( mbSelTextColor )
         rSelectTextColor = maSelTextColor;
     else

vcl/aqua/source/window/salframe.cxx

     Color aBackgroundColor = Color( 0xEC, 0xEC, 0xEC );
     aStyleSettings.Set3DColors( aBackgroundColor );
     aStyleSettings.SetFaceColor( aBackgroundColor );
+    aStyleSettings.SetInactiveTabColor( aBackgroundColor );
     
     // [FIXME] Dialog Color is the one to modify to complete Aqua Theme on windows
     aStyleSettings.SetDialogColor( aBackgroundColor );

vcl/inc/vcl/cmdevt.hxx

 #define MEDIA_COMMAND_VOLUME_MUTE			 ((sal_Int16)16)// Mute the volume.
 #define MEDIA_COMMAND_VOLUME_UP				 ((sal_Int16)17)// Raise the volume.
 
+
+// ------------------------------
+// - CommandSelectionChangeData -
+// ------------------------------
+
+class VCL_DLLPUBLIC CommandSelectionChangeData
+{
+private:
+    ULONG          mnStart;
+    ULONG          mnEnd;
+
+public:
+    CommandSelectionChangeData();
+    CommandSelectionChangeData( ULONG nStart, ULONG nEnd );
+
+    ULONG          GetStart() const { return mnStart; }
+    ULONG          GetEnd() const { return mnEnd; }
+};
+
+inline CommandSelectionChangeData::CommandSelectionChangeData()
+{
+    mnStart = mnEnd = 0;
+}
+
+inline CommandSelectionChangeData::CommandSelectionChangeData( ULONG nStart,
+							       ULONG nEnd )
+{
+    mnStart = nStart;
+    mnEnd = nEnd;
+}
+
 // ----------------
 // - CommandEvent -
 // ----------------
 #define COMMAND_INPUTLANGUAGECHANGE     ((USHORT)15)
 #define COMMAND_SHOWDIALOG              ((USHORT)16)
 #define COMMAND_MEDIA					((USHORT)17)
-
+#define COMMAND_SELECTIONCHANGE         ((USHORT)18)
+#define COMMAND_PREPARERECONVERSION     ((USHORT)19)
 #define COMMAND_USER                    ((USHORT)4096)
 
 class VCL_DLLPUBLIC CommandEvent
     const CommandModKeyData*			GetModKeyData() const;
     const CommandDialogData*            GetDialogData() const;
 	sal_Int16							GetMediaCommand() const;
+    const CommandSelectionChangeData*   GetSelectionChangeData() const;
 };
 
 inline CommandEvent::CommandEvent()
         return 0;
 }
 
+inline const CommandSelectionChangeData* CommandEvent::GetSelectionChangeData() const
+{
+    if( mnCommand == COMMAND_SELECTIONCHANGE )
+	return (const CommandSelectionChangeData*)mpData;
+    else
+	return NULL;
+}
+
+
 #endif // _VCL_CMDEVT_HXX
 
 	static PopupMenu*	CreatePopupMenu();
 	static void 		DeletePopupMenu( PopupMenu* pMenu );
+
+	virtual XubString GetSurroundingText() const;
+	virtual Selection GetSurroundingTextSelection() const;
 };
 
 inline ULONG Edit::IsUpdateDataEnabled() const

vcl/inc/vcl/salwtype.hxx

 #define SALEVENT_INPUTLANGUAGECHANGE    ((USHORT)40)
 #define SALEVENT_SHOWDIALOG             ((USHORT)41)
 #define SALEVENT_MENUBUTTONCOMMAND      ((USHORT)42)
-#define SALEVENT_COUNT                  ((USHORT)42)
+#define SALEVENT_SURROUNDINGTEXTREQUEST ((USHORT)43)
+#define SALEVENT_SURROUNDINGTEXTSELECTIONCHANGE ((USHORT)44)
+#define SALEVENT_STARTRECONVERSION      ((USHORT)45)
+#define SALEVENT_COUNT                  ((USHORT)45)
 
 // MOUSELEAVE must send, when the pointer leave the client area and
 // the mouse is not captured
 
 #endif // __cplusplus
 
+#ifdef __cplusplus
+
+// SURROUNDINGTEXTREQUEST
+struct SalSurroundingTextRequestEvent
+{
+    UniString       maText;         // Text
+    ULONG           mnStart;        // The beggining index of selected range
+    ULONG           mnEnd;          // The end index of selected range
+};
+
+#endif // __cplusplus
+
+#ifdef __cplusplus
+
+// SURROUNDINGTEXTSELECTIONCHANGE
+struct SalSurroundingTextSelectionChangeEvent
+{
+    ULONG           mnStart;        // The beggining index of selected range
+    ULONG           mnEnd;          // The end index of selected range
+};
+
+#endif // __cplusplus
+
 // ------------------
 // - SalFrame-Types -
 // ------------------

vcl/inc/vcl/settings.hxx

     Color                           maWindowColor;
     Color                           maWindowTextColor;
     Color                           maWorkspaceColor;
+    Color                           maActiveTabColor;
+    Color                           maInactiveTabColor;
     Font                            maAppFont;
     Font                            maHelpFont;
     Font                            maTitleFont;
     const Color&                    GetMonoColor() const
                                         { return mpData->maMonoColor; }
 
+    void                            SetActiveTabColor( const Color& rColor )
+                                        { CopyData(); mpData->maActiveTabColor = rColor; }
+    const Color&                    GetActiveTabColor() const
+                                        { return mpData->maActiveTabColor; }
+    void                            SetInactiveTabColor( const Color& rColor )
+                                        { CopyData(); mpData->maInactiveTabColor = rColor; }
+    const Color&                    GetInactiveTabColor() const
+                                        { return mpData->maInactiveTabColor; }
+
     void							SetHighContrastMode( BOOL bHighContrast )
                                         { CopyData(); mpData->mnHighContrast = bHighContrast; }
     BOOL							GetHighContrastMode() const

vcl/inc/vcl/window.hxx

     /* mark Window for deletion in top of event queue
     */
     void doLazyDelete();
+
+    virtual XubString GetSurroundingText() const;
+    virtual Selection GetSurroundingTextSelection() const;
 };
 
 

vcl/os2/source/window/salframe.cxx

     if ( bCompBorder )
     {
         aStyleSettings.SetFaceColor( ImplOS2ColorToSal( WinQuerySysColor( HWND_DESKTOP, SYSCLR_BUTTONMIDDLE, 0 ) ) );
+        aStyleSettings.SetInactiveTabColor( aStyleSettings.GetFaceColor() );
         aStyleSettings.SetLightColor( ImplOS2ColorToSal( WinQuerySysColor( HWND_DESKTOP, SYSCLR_BUTTONLIGHT, 0 ) ) );
         aStyleSettings.SetLightBorderColor( ImplOS2ColorToSal( WinQuerySysColor( HWND_DESKTOP, SYSCLR_BUTTONMIDDLE, 0 ) ) );
         aStyleSettings.SetShadowColor( ImplOS2ColorToSal( WinQuerySysColor( HWND_DESKTOP, SYSCLR_BUTTONDARK, 0 ) ) );
     aStyleSettings.SetLabelTextColor( aStyleSettings.GetGroupTextColor() );
     aStyleSettings.SetInfoTextColor( aStyleSettings.GetGroupTextColor() );
     aStyleSettings.SetWindowColor( ImplOS2ColorToSal( WinQuerySysColor( HWND_DESKTOP, SYSCLR_WINDOW, 0 ) ) );
+    aStyleSettings.SetActiveTabColor( aStyleSettings.GetWindowColor() );
     aStyleSettings.SetWindowTextColor( ImplOS2ColorToSal( WinQuerySysColor( HWND_DESKTOP, SYSCLR_WINDOWTEXT, 0 ) ) );
     aStyleSettings.SetFieldColor( ImplOS2ColorToSal( WinQuerySysColor( HWND_DESKTOP, SYSCLR_ENTRYFIELD, 0 ) ) );
     aStyleSettings.SetFieldTextColor( aStyleSettings.GetWindowTextColor() );

vcl/source/app/settings.cxx

     maWindowColor( rData.maWindowColor ),
     maWindowTextColor( rData.maWindowTextColor ),
     maWorkspaceColor( rData.maWorkspaceColor ),
+    maActiveTabColor( rData.maActiveTabColor ),
+    maInactiveTabColor( rData.maInactiveTabColor ),
     maAppFont( rData.maAppFont ),
     maHelpFont( rData.maAppFont ),
     maTitleFont( rData.maTitleFont ),
     maMenuHighlightTextColor    = Color( COL_WHITE );
     maHighlightColor            = Color( COL_BLUE );
     maHighlightTextColor        = Color( COL_WHITE );
+    maActiveTabColor            = Color( COL_WHITE );
+    maInactiveTabColor          = Color( COL_LIGHTGRAY );
     maDisableColor              = Color( COL_GRAY );
     maHelpColor                 = Color( 0xFF, 0xFF, 0xE0 );
     maHelpTextColor             = Color( COL_BLACK );
          (mpData->maMenuHighlightTextColor  == rSet.mpData->maMenuHighlightTextColor)   &&
          (mpData->maHighlightColor          == rSet.mpData->maHighlightColor)           &&
          (mpData->maHighlightTextColor      == rSet.mpData->maHighlightTextColor)       &&
+         (mpData->maActiveTabColor          == rSet.mpData->maActiveTabColor)           &&
+         (mpData->maInactiveTabColor        == rSet.mpData->maInactiveTabColor)         &&
          (mpData->maDisableColor            == rSet.mpData->maDisableColor)             &&
          (mpData->maHelpColor               == rSet.mpData->maHelpColor)                &&
          (mpData->maHelpTextColor           == rSet.mpData->maHelpTextColor)            &&

vcl/source/control/edit.cxx

 			SetCursorRect();
 		}
 	}
+	else if ( rCEvt.GetCommand() == COMMAND_SELECTIONCHANGE )
+	{
+	    const CommandSelectionChangeData *pData = rCEvt.GetSelectionChangeData();
+	    Selection aSelection( pData->GetStart(), pData->GetEnd() );
+	    SetSelection(aSelection);
+	}
 	else
 		Control::Command( rCEvt );
 }
 {
 	GetParent()->Modify();
 }
+
+XubString Edit::GetSurroundingText() const
+{
+  if ( mpSubEdit )
+    return mpSubEdit->GetSurroundingText();
+  else
+    return maText;
+}
+
+Selection Edit::GetSurroundingTextSelection() const
+{
+  return GetSelection();
+}

vcl/source/gdi/bitmap.cxx

 
 BOOL Bitmap::Erase( const Color& rFillColor )
 {
+	if( !(*this) )
+		return TRUE;
+	
 	BitmapWriteAccess*	pWriteAcc = AcquireWriteAccess();
 	BOOL				bRet = FALSE;
 

vcl/source/gdi/outdev3.cxx

     long        nMnemonicX = 0;
     long        nMnemonicY = 0;
     long        nMnemonicWidth = 0;
-    if ( nStyle & TEXT_DRAW_MNEMONIC )
+    if ( (nStyle & TEXT_DRAW_MNEMONIC) && nLen > 1 )
     {
         aStr = GetNonMnemonicString( aStr, nMnemonicPos );
         if ( nMnemonicPos != STRING_NOTFOUND )

vcl/source/window/window.cxx

     pDev->Pop();
 }
 
+XubString Window::GetSurroundingText() const
+{
+  return XubString::EmptyString();
+}
+
+Selection Window::GetSurroundingTextSelection() const
+{
+  return Selection( 0, 0 );
+}
+

vcl/source/window/winproc.cxx

 
 // -----------------------------------------------------------------------
 
+static void ImplHandleSurroundingTextRequest( Window *pWindow,
+					      XubString& rText,
+					      Selection &rSelRange )
+{
+    Window* pChild = ImplGetKeyInputWindow( pWindow );
+
+    if ( !pChild )
+    {
+	rText = XubString::EmptyString();
+	rSelRange.setMin( 0 );
+	rSelRange.setMax( 0 );
+    }
+    else
+    {
+
+	rText = pChild->GetSurroundingText();
+	Selection aSel = pChild->GetSurroundingTextSelection();
+	rSelRange.setMin( aSel.Min() );
+	rSelRange.setMax( aSel.Max() );
+    }
+}
+
+// -----------------------------------------------------------------------
+
+static void ImplHandleSalSurroundingTextRequest( Window *pWindow,
+						 SalSurroundingTextRequestEvent *pEvt )
+{
+	Selection aSelRange;
+	ImplHandleSurroundingTextRequest( pWindow, pEvt->maText, aSelRange );
+
+	aSelRange.Justify();
+
+	if( aSelRange.Min() < 0 )
+		pEvt->mnStart = 0;
+	else if( aSelRange.Min() > pEvt->maText.Len() )
+		pEvt->mnStart = pEvt->maText.Len();
+	else
+		pEvt->mnStart = aSelRange.Min();
+
+	if( aSelRange.Max() < 0 )
+		pEvt->mnStart = 0;
+	else if( aSelRange.Max() > pEvt->maText.Len() )
+		pEvt->mnEnd = pEvt->maText.Len();
+	else
+		pEvt->mnEnd = aSelRange.Max();
+}
+
+// -----------------------------------------------------------------------
+
+static void ImplHandleSurroundingTextSelectionChange( Window *pWindow,
+						      ULONG nStart,
+						      ULONG nEnd )
+{
+    Window* pChild = ImplGetKeyInputWindow( pWindow );
+    if( pChild )
+    {
+        CommandSelectionChangeData data( nStart, nEnd );
+        ImplCallCommand( pChild, COMMAND_SELECTIONCHANGE, &data );
+    }
+}
+
+// -----------------------------------------------------------------------
+
+static void ImplHandleStartReconversion( Window *pWindow )
+{
+    Window* pChild = ImplGetKeyInputWindow( pWindow );
+    if( pChild )
+	ImplCallCommand( pChild, COMMAND_PREPARERECONVERSION );
+}
+
+// -----------------------------------------------------------------------
+
 long ImplWindowFrameProc( Window* pWindow, SalFrame* /*pFrame*/,
                           USHORT nEvent, const void* pEvent )
 {
                 nRet = ImplHandleShowDialog( pWindow, nDialogID );
             }
             break;
-
+        case SALEVENT_SURROUNDINGTEXTREQUEST:
+            ImplHandleSalSurroundingTextRequest( pWindow, (SalSurroundingTextRequestEvent*)pEvent );
+            break;
+        case SALEVENT_SURROUNDINGTEXTSELECTIONCHANGE:
+        {
+            SalSurroundingTextSelectionChangeEvent* pEvt
+             = (SalSurroundingTextSelectionChangeEvent*)pEvent;
+            ImplHandleSurroundingTextSelectionChange( pWindow,
+						      pEvt->mnStart,
+						      pEvt->mnEnd );
+        }
+        case SALEVENT_STARTRECONVERSION:
+            ImplHandleStartReconversion( pWindow );
+            break;
 #ifdef DBG_UTIL
         default:
             DBG_ERROR1( "ImplWindowFrameProc(): unknown event (%lu)", (ULONG)nEvent );

vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx

         gdk_color_free (link_color);
     }
 
+    // Tab colors
+    aStyleSet.SetActiveTabColor( aBackFieldColor ); // same as the window color.
+    Color aSelectedBackColor = getColor( pStyle->bg[GTK_STATE_ACTIVE] );
+    aStyleSet.SetInactiveTabColor( aSelectedBackColor );
+
     // menu disabled entries handling
     aStyleSet.SetSkipDisabledInMenus( TRUE );
     // menu colors
 {
 	if ( !gWidgetData[nScreen].gSpinButtonWidget )
 	{
-		GtkAdjustment *adj = GTK_ADJUSTMENT( gtk_adjustment_new(0, 0, 2, 1, 1, 1) );
+		GtkAdjustment *adj = GTK_ADJUSTMENT( gtk_adjustment_new(0, 0, 1, 1, 1, 0) );
 		gWidgetData[nScreen].gSpinButtonWidget = gtk_spin_button_new( adj, 1, 2 );
 
 		//Setting non-editable means it doesn't blink, so there's no timeouts

vcl/unx/kde/salnativewidgets-kde.cxx

     aStyleSettings.SetFieldColor( aBase );
     aStyleSettings.SetHelpColor( aBase );
     aStyleSettings.SetWindowColor( aBase );
+    aStyleSettings.SetActiveTabColor( aBase );
     
     // Buttons
     aStyleSettings.SetButtonTextColor( toColor( qColorGroup.buttonText() ) );
     // Background
     aStyleSettings.Set3DColors( aBack );
     aStyleSettings.SetFaceColor( aBack );
+    aStyleSettings.SetInactiveTabColor( aBack );
     aStyleSettings.SetDialogColor( aBack );
     if( aBack == COL_LIGHTGRAY )
         aStyleSettings.SetCheckedColor( Color( 0xCC, 0xCC, 0xCC ) );

vcl/win/source/window/salframe.cxx

 
 // MARKER(update_precomp.py): autogen include statement, do not remove
 #include "precompiled_vcl.hxx"
+
+// i72022: ad-hoc to forcibly enable reconversion
+#if WINVER < 0x0500
+#undef WINVER
+#define WINVER 0x0500
+#endif
+
 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
 #include <com/sun/star/container/XIndexAccess.hpp>
 #include <com/sun/star/beans/XPropertySet.hpp>
             aStyleSettings.SetDeactiveColor( ImplWinColorToSal( GetSysColor( COLOR_GRADIENTINACTIVECAPTION ) ) );
         }
         aStyleSettings.SetFaceColor( ImplWinColorToSal( GetSysColor( COLOR_3DFACE ) ) );
+        aStyleSettings.SetInactiveTabColor( aStyleSettings.GetFaceColor() );
         aStyleSettings.SetLightColor( ImplWinColorToSal( GetSysColor( COLOR_3DHILIGHT ) ) );
         aStyleSettings.SetLightBorderColor( ImplWinColorToSal( GetSysColor( COLOR_3DLIGHT ) ) );
         aStyleSettings.SetShadowColor( ImplWinColorToSal( GetSysColor( COLOR_3DSHADOW ) ) );
     aStyleSettings.SetLabelTextColor( aStyleSettings.GetRadioCheckTextColor() );
     aStyleSettings.SetInfoTextColor( aStyleSettings.GetRadioCheckTextColor() );
     aStyleSettings.SetWindowColor( ImplWinColorToSal( GetSysColor( COLOR_WINDOW ) ) );
+    aStyleSettings.SetActiveTabColor( aStyleSettings.GetWindowColor() );
     aStyleSettings.SetWindowTextColor( ImplWinColorToSal( GetSysColor( COLOR_WINDOWTEXT ) ) );
     aStyleSettings.SetFieldColor( aStyleSettings.GetWindowColor() );
     aStyleSettings.SetFieldTextColor( aStyleSettings.GetWindowTextColor() );
 }
 
 // -----------------------------------------------------------------------
+#if WINVER >= 0x0500
+
+static LRESULT ImplHandleIMEReconvertString( HWND hWnd, LPARAM lParam )
+{
+    WinSalFrame* pFrame = GetWindowPtr( hWnd );
+    LPRECONVERTSTRING pReconvertString = (LPRECONVERTSTRING) lParam;
+    LRESULT nRet = 0;
+    SalSurroundingTextRequestEvent aEvt;
+    aEvt.maText = UniString();
+    aEvt.mnStart = aEvt.mnEnd = 0;
+
+    UINT nImeProps = ImmGetProperty( GetKeyboardLayout( 0 ), IGP_SETCOMPSTR );
+    if( (nImeProps & SCS_CAP_SETRECONVERTSTRING) == 0 )
+    {
+	// This IME does not support reconversion.
+	return 0;
+    }
+
+    if( !pReconvertString )
+    {
+	// The first call for reconversion.
+	pFrame->CallCallback( SALEVENT_STARTRECONVERSION, (void*)NULL );
+	
+	// Retrieve the surrounding text from the focused control.
+	pFrame->CallCallback( SALEVENT_SURROUNDINGTEXTREQUEST, (void*)&aEvt );
+    
+	if( aEvt.maText.Len() == 0 )
+	{
+	    return 0;
+	}
+
+	nRet = sizeof(RECONVERTSTRING) + (aEvt.maText.Len() + 1) * sizeof(WCHAR);
+    }
+    else
+    {
+	// The second call for reconversion.
+
+	// Retrieve the surrounding text from the focused control.
+	pFrame->CallCallback( SALEVENT_SURROUNDINGTEXTREQUEST, (void*)&aEvt );
+	nRet = sizeof(RECONVERTSTRING) + (aEvt.maText.Len() + 1) * sizeof(WCHAR);
+
+	pReconvertString->dwStrOffset = sizeof(RECONVERTSTRING);
+	pReconvertString->dwStrLen = aEvt.maText.Len();
+	pReconvertString->dwCompStrOffset = aEvt.mnStart * sizeof(WCHAR);
+	pReconvertString->dwCompStrLen = aEvt.mnEnd - aEvt.mnStart;
+	pReconvertString->dwTargetStrOffset = pReconvertString->dwCompStrOffset;
+	pReconvertString->dwTargetStrLen = pReconvertString->dwCompStrLen;
+
+	memcpy( (LPWSTR)(pReconvertString + 1), aEvt.maText.GetBuffer(), (aEvt.maText.Len() + 1) * sizeof(WCHAR) );
+    }
+
+    // just return the required size of buffer to reconvert.
+    return nRet;
+}
+
+// -----------------------------------------------------------------------
+
+static LRESULT ImplHandleIMEConfirmReconvertString( HWND hWnd, LPARAM lParam )
+{
+    WinSalFrame* pFrame = GetWindowPtr( hWnd );
+    LPRECONVERTSTRING pReconvertString = (LPRECONVERTSTRING) lParam;
+    SalSurroundingTextRequestEvent aEvt;
+    aEvt.maText = UniString();
+    aEvt.mnStart = aEvt.mnEnd = 0;
+
+    pFrame->CallCallback( SALEVENT_SURROUNDINGTEXTREQUEST, (void*)&aEvt );
+
+    ULONG nTmpStart = pReconvertString->dwCompStrOffset / sizeof(WCHAR);
+    ULONG nTmpEnd = nTmpStart + pReconvertString->dwCompStrLen;
+
+    if( nTmpStart != aEvt.mnStart || nTmpEnd != aEvt.mnEnd )
+    {
+	SalSurroundingTextSelectionChangeEvent aSelEvt;
+	aSelEvt.mnStart = nTmpStart;
+	aSelEvt.mnEnd = nTmpEnd;
+
+	pFrame->CallCallback( SALEVENT_SURROUNDINGTEXTSELECTIONCHANGE, (void*)&aSelEvt );
+    }
+
+    return TRUE;
+}
+
+#endif // WINVER >= 0x0500
+
+// -----------------------------------------------------------------------
 
 void SalTestMouseLeave()
 {
         case WM_IME_NOTIFY:
             ImplHandleIMENotify( hWnd, wParam );
             break;
-
-		case WM_APPCOMMAND:
-			ImplHandleAppCommand( hWnd, lParam );
-			break;
+        case WM_APPCOMMAND:
+            ImplHandleAppCommand( hWnd, lParam );
+            break;
+#if WINVER >= 0x0500
+        case WM_IME_REQUEST:
+            if ( PtrToInt( wParam ) == IMR_RECONVERTSTRING )
+            {
+                nRet = ImplHandleIMEReconvertString( hWnd, lParam );
+                rDef = FALSE;
+            }
+	    else if( PtrToInt( wParam ) == IMR_CONFIRMRECONVERTSTRING )
+	    {
+		nRet = ImplHandleIMEConfirmReconvertString( hWnd, lParam );
+		rDef = FALSE;
+	    }
+            break;
+#endif // WINVER >= 0x0500
     }
 
     // WheelMouse-Message abfangen
 .ELSE
 #CONFIGURE_ACTION=./configure
 #CONFIGURE_ACTION=./configure --without-x --enable-multithreaded --enable-exceptions CFLAGS="-g -O0" CXXFLAGS="-g -O0"
-CONFIGURE_ACTION=./configure --without-x --enable-multithreaded --enable-exceptions
+CONFIGURE_ACTION=./configure --without-libpaper-library --without-x --enable-multithreaded --enable-exceptions
 .ENDIF
 
 BUILD_ACTION=$(GNUMAKE) -j$(EXTMAXPROCESS)