2004-05-07 14:48:07 +00:00
|
|
|
/*************************************************************************
|
|
|
|
*
|
2008-04-11 00:12:29 +00:00
|
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
2004-05-07 14:48:07 +00:00
|
|
|
*
|
2008-04-11 00:12:29 +00:00
|
|
|
* Copyright 2008 by Sun Microsystems, Inc.
|
2004-05-07 14:48:07 +00:00
|
|
|
*
|
2008-04-11 00:12:29 +00:00
|
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
2004-05-07 14:48:07 +00:00
|
|
|
*
|
2008-04-11 00:12:29 +00:00
|
|
|
* $RCSfile: fmtextcontrolshell.cxx,v $
|
2009-01-05 17:49:45 +00:00
|
|
|
* $Revision: 1.16.86.1 $
|
2004-05-07 14:48:07 +00:00
|
|
|
*
|
2008-04-11 00:12:29 +00:00
|
|
|
* This file is part of OpenOffice.org.
|
2004-05-07 14:48:07 +00:00
|
|
|
*
|
2008-04-11 00:12:29 +00:00
|
|
|
* OpenOffice.org is free software: you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU Lesser General Public License version 3
|
|
|
|
* only, as published by the Free Software Foundation.
|
2004-05-07 14:48:07 +00:00
|
|
|
*
|
2008-04-11 00:12:29 +00:00
|
|
|
* OpenOffice.org is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU Lesser General Public License version 3 for more details
|
|
|
|
* (a copy is included in the LICENSE file that accompanied this code).
|
2004-05-07 14:48:07 +00:00
|
|
|
*
|
2008-04-11 00:12:29 +00:00
|
|
|
* You should have received a copy of the GNU Lesser General Public License
|
|
|
|
* version 3 along with OpenOffice.org. If not, see
|
|
|
|
* <http://www.openoffice.org/license.html>
|
|
|
|
* for a copy of the LGPLv3 License.
|
2004-05-07 14:48:07 +00:00
|
|
|
*
|
|
|
|
************************************************************************/
|
|
|
|
|
2006-09-17 04:10:34 +00:00
|
|
|
// MARKER(update_precomp.py): autogen include statement, do not remove
|
|
|
|
#include "precompiled_svx.hxx"
|
2008-12-01 12:31:27 +00:00
|
|
|
|
|
|
|
#include "fmprop.hrc"
|
|
|
|
#include "fmresids.hrc"
|
|
|
|
#include "fmtextcontroldialogs.hxx"
|
2004-05-07 14:48:07 +00:00
|
|
|
#include "fmtextcontrolfeature.hxx"
|
2008-12-01 12:31:27 +00:00
|
|
|
#include "fmtextcontrolshell.hxx"
|
|
|
|
#include "svx/crsditem.hxx"
|
|
|
|
#include "svx/dialmgr.hxx"
|
|
|
|
#include "svx/editeng.hxx"
|
|
|
|
#include "svx/eeitem.hxx"
|
|
|
|
#include "svx/fmglob.hxx"
|
|
|
|
#include "svx/scriptspaceitem.hxx"
|
|
|
|
#include "svx/svxids.hrc"
|
|
|
|
#include "svx/udlnitem.hxx"
|
2004-05-07 14:48:07 +00:00
|
|
|
|
|
|
|
/** === begin UNO includes === **/
|
|
|
|
#include <com/sun/star/beans/XPropertySet.hpp>
|
|
|
|
#include <com/sun/star/awt/FontDescriptor.hpp>
|
|
|
|
#include <com/sun/star/frame/XDispatchProvider.hpp>
|
|
|
|
#include <com/sun/star/form/XForm.hpp>
|
|
|
|
#include <com/sun/star/container/XChild.hpp>
|
|
|
|
#include <com/sun/star/awt/XFocusListener.hpp>
|
|
|
|
#include <com/sun/star/awt/XMouseListener.hpp>
|
|
|
|
/** === end UNO includes === **/
|
2008-12-01 12:31:27 +00:00
|
|
|
|
|
|
|
#include <comphelper/componentcontext.hxx>
|
|
|
|
#include <comphelper/processfactory.hxx>
|
|
|
|
#include <cppuhelper/implbase1.hxx>
|
|
|
|
#include <sfx2/app.hxx>
|
2004-05-07 14:48:07 +00:00
|
|
|
#include <sfx2/bindings.hxx>
|
|
|
|
#include <sfx2/dispatch.hxx>
|
2008-12-01 12:31:27 +00:00
|
|
|
#include <sfx2/msgpool.hxx>
|
2004-05-07 14:48:07 +00:00
|
|
|
#include <sfx2/objsh.hxx>
|
2008-12-01 12:31:27 +00:00
|
|
|
#include <sfx2/request.hxx>
|
2004-05-07 14:48:07 +00:00
|
|
|
#include <sfx2/sfxuno.hxx>
|
2008-12-01 12:31:27 +00:00
|
|
|
#include <sfx2/viewfrm.hxx>
|
2004-05-07 14:48:07 +00:00
|
|
|
#include <svtools/eitem.hxx>
|
2008-12-01 12:31:27 +00:00
|
|
|
#include <svtools/intitem.hxx>
|
2004-05-07 14:48:07 +00:00
|
|
|
#include <svtools/itempool.hxx>
|
2008-12-01 12:31:27 +00:00
|
|
|
#include <svtools/languageoptions.hxx>
|
2004-05-07 14:48:07 +00:00
|
|
|
#include <svtools/stringtransfer.hxx>
|
2008-12-01 12:31:27 +00:00
|
|
|
#include <svtools/whiter.hxx>
|
2004-05-07 14:48:07 +00:00
|
|
|
#include <toolkit/helper/vclunohelper.hxx>
|
2006-12-01 16:26:23 +00:00
|
|
|
#include <tools/diagnose_ex.h>
|
2008-12-01 12:31:27 +00:00
|
|
|
#include <vcl/msgbox.hxx>
|
|
|
|
#include <vcl/outdev.hxx>
|
2006-11-14 12:25:26 +00:00
|
|
|
#include <vos/mutex.hxx>
|
|
|
|
|
2004-05-07 14:48:07 +00:00
|
|
|
#include <memory>
|
|
|
|
|
|
|
|
//........................................................................
|
|
|
|
namespace svx
|
|
|
|
{
|
|
|
|
//........................................................................
|
|
|
|
|
|
|
|
using namespace ::com::sun::star;
|
|
|
|
using namespace ::com::sun::star::uno;
|
|
|
|
using namespace ::com::sun::star::awt;
|
|
|
|
using namespace ::com::sun::star::form;
|
|
|
|
using namespace ::com::sun::star::lang;
|
|
|
|
using namespace ::com::sun::star::frame;
|
|
|
|
using namespace ::com::sun::star::util;
|
|
|
|
using namespace ::com::sun::star::beans;
|
|
|
|
using namespace ::com::sun::star::container;
|
|
|
|
|
|
|
|
//====================================================================
|
|
|
|
typedef USHORT WhichId;
|
|
|
|
|
|
|
|
//====================================================================
|
|
|
|
static SfxSlotId pTextControlSlots[] =
|
|
|
|
{
|
CWS-TOOLING: integrate CWS dba32h
2009-10-12 12:21:44 +0200 msc r276827 : remove warning for issue 102712 because the issue is fixed
2009-10-05 07:14:20 +0200 oj r276658 : #105585# add missing dependency for OOO_UI
2009-10-02 12:50:19 +0200 fs r276632 : #i105505#
If a model is created, and is a revenant of a previous incarnation, then ensure it is properly initialized.
In particular, in its ctor, set the state to "Initializing", not "Initialized", and then let the ModelImpl
call attachResource. This ensures that the model is initialized completely, including firing the necessary
events.
2009-10-02 12:46:12 +0200 fs r276631 : #i105505# always do an attachResource at the newly loaded model, even if it (internally) was not really loaded, but only a revenant of a previous incarnation of this document
2009-10-01 13:09:07 +0200 fs r276596 : do not rely on the name 'Standard' for the one and only form in a document
2009-10-01 12:35:56 +0200 fs r276589 : #i105509# don't rely on default form component names, use indexes
2009-10-01 11:19:18 +0200 fs r276584 : copying the fix for #i105082# into this CWS
2009-10-01 11:13:22 +0200 fs r276583 : improved logs
2009-10-01 11:10:44 +0200 fs r276581 : #i105505#
2009-10-01 08:07:57 +0200 fs r276575 : manual merge of trunk, to allow cwslocalize to run
2009-09-30 22:48:30 +0200 fs r276574 : removed that strange ONLOAD definition
2009-09-30 12:58:18 +0200 fs r276553 : copy fix for #i105387# into this CWS, as the issue prevents us from finalizing the CWS
2009-09-30 12:56:45 +0200 fs r276552 : copy fix for #i105387# into this CWS, as the issue prevents us from finalizing the CWS
2009-09-30 11:47:45 +0200 fs r276549 : #i105235#
2009-09-29 12:27:40 +0200 fs r276521 : #i105367#
2009-09-28 12:08:17 +0200 oj r276485 : #i105371# export version in manifest.xml as well
2009-09-28 12:07:02 +0200 oj r276484 : #i105371# export version in manifest.xml as well
2009-09-28 09:48:01 +0200 oj r276481 : #i105366# init drivers when not empty
2009-09-25 14:31:27 +0200 fs r276466 : CWS-TOOLING: rebase CWS dba32h to trunk@276429 (milestone: DEV300:m60)
2009-09-24 13:52:54 +0200 fs r276422 : #i105234# do not zoom the control when they view information is still uninitialized (happens at least in Writer when opening a form document)
2009-09-24 11:42:03 +0200 fs r276413 : #i105234# proper zoom handling for the nav bar
2009-09-24 11:41:40 +0200 fs r276412 : #i105234# setZoom: care for precision errors caused by implicit conversion float->double
2009-09-23 12:21:22 +0200 oj r276377 : remove dos lineends
2009-09-23 11:44:52 +0200 oj r276376 : #i105216# load config on demand
2009-09-23 11:44:19 +0200 oj r276375 : #i105216# load config on demand
2009-09-23 11:43:35 +0200 oj r276374 : #i105216# load config on demand
2009-09-21 09:13:03 +0200 oj r276307 : #i105158# use Thread support
2009-09-18 13:06:50 +0200 fs r276277 : #i105147#
2009-09-18 11:48:23 +0200 oj r276271 : #i105158# new method for thread safety
2009-09-18 10:42:56 +0200 fs r276266 : CWS-TOOLING: rebase CWS dba32h to trunk@276192 (milestone: DEV300:m59)
2009-09-18 08:30:03 +0200 oj r276263 : #i105016# load correct ldap so
2009-09-17 13:42:31 +0200 oj r276240 : change count of check boxes
2009-09-17 13:32:59 +0200 oj r276239 : revert false to true for currency
2009-09-17 09:14:46 +0200 oj r276220 : #i104901# add patch for every issue
2009-09-17 09:10:29 +0200 oj r276219 : #i104901# add patch for every issue
2009-09-11 13:47:49 +0200 oj r276060 : #i104901# fix for indentity
2009-09-11 12:14:14 +0200 fs r276056 : #i104594# allow to render controls without an SdrPageView
2009-09-11 11:49:31 +0200 fs r276055 : CWS-TOOLING: rebase CWS dba32h to trunk@276043 (milestone: DEV300:m58)
2009-09-10 08:41:40 +0200 oj r276021 : #i104911# export variable-set not for repeating sections
2009-10-14 18:48:09 +00:00
|
|
|
SID_CLIPBOARD_FORMAT_ITEMS,
|
2004-05-07 14:48:07 +00:00
|
|
|
SID_CUT,
|
|
|
|
SID_COPY,
|
|
|
|
SID_PASTE,
|
|
|
|
SID_SELECTALL,
|
|
|
|
// SID_ATTR_TABSTOP, /* 2 */
|
|
|
|
SID_ATTR_CHAR_FONT,
|
|
|
|
SID_ATTR_CHAR_POSTURE,
|
|
|
|
SID_ATTR_CHAR_WEIGHT,
|
|
|
|
SID_ATTR_CHAR_SHADOWED,
|
|
|
|
SID_ATTR_CHAR_WORDLINEMODE,
|
|
|
|
SID_ATTR_CHAR_CONTOUR,
|
|
|
|
SID_ATTR_CHAR_STRIKEOUT,
|
|
|
|
SID_ATTR_CHAR_UNDERLINE,
|
|
|
|
SID_ATTR_CHAR_FONTHEIGHT,
|
|
|
|
SID_ATTR_CHAR_COLOR,
|
|
|
|
SID_ATTR_CHAR_KERNING,
|
|
|
|
SID_ATTR_CHAR_LANGUAGE, /* 20 */
|
|
|
|
SID_ATTR_CHAR_ESCAPEMENT,
|
|
|
|
SID_ATTR_PARA_ADJUST, /* 28 */
|
|
|
|
SID_ATTR_PARA_ADJUST_LEFT,
|
|
|
|
SID_ATTR_PARA_ADJUST_RIGHT,
|
|
|
|
SID_ATTR_PARA_ADJUST_CENTER,
|
|
|
|
SID_ATTR_PARA_ADJUST_BLOCK,
|
|
|
|
SID_ATTR_PARA_LINESPACE, /* 33 */
|
|
|
|
SID_ATTR_PARA_LINESPACE_10,
|
|
|
|
SID_ATTR_PARA_LINESPACE_15,
|
|
|
|
SID_ATTR_PARA_LINESPACE_20,
|
|
|
|
SID_ATTR_LRSPACE, /* 48 */
|
|
|
|
SID_ATTR_ULSPACE, /* 49 */
|
|
|
|
SID_ATTR_CHAR_AUTOKERN,
|
CWS-TOOLING: integrate CWS dba32b
2009-06-03 14:58:08 +0200 fs r272581 : #i102439#
2009-05-29 13:56:18 +0200 fs r272456 : remove the sub form when the 'add subform' setting changes from <true/> to <false/>, not only its controls
2009-05-29 13:19:27 +0200 fs r272454 : display '(Default)' instead of an empty string when a control has the default font
2009-05-28 20:49:18 +0200 fs r272428 : #i98162# getFirstSelectedValue: do not return reference to a temporary
2009-05-27 15:30:22 +0200 msc r272353 : #102303#
2009-05-26 13:03:06 +0200 fs r272295 : spelling
2009-05-26 12:59:54 +0200 fs r272294 : merge m48 version to get latest cygwin related fixes
2009-05-25 14:02:06 +0200 fs r272239 : remove references to local files, needed for debugging sessions only
2009-05-25 14:01:16 +0200 fs r272238 : #i102021# ensure members such as bNumberFormat are initialized before actually returning them
2009-05-25 13:10:20 +0200 fs r272236 : #i10000# reset ENABLE_EVOAB2
2009-05-22 06:44:45 +0200 oj r272167 : #i99104# add import handler for calc-sett
2009-05-22 06:42:27 +0200 oj r272166 : #i99104# impl NullDate as member
2009-05-22 06:36:22 +0200 oj r272165 : #i99104# handle nulldate from parent model
2009-05-22 06:33:13 +0200 oj r272164 : #i99104# export and import calculation-settings and nulldate
2009-05-22 06:27:50 +0200 oj r272163 : #i99104# export and import calculation-settings and nulldate
2009-05-20 13:29:58 +0200 oj r272118 : #i99911# handle invalid name
2009-05-20 13:28:49 +0200 oj r272117 : #i101261# handle different rowsets
2009-05-20 11:29:55 +0200 msc r272111 : #i100000#
2009-05-20 11:28:27 +0200 msc r272110 : merge in change from dba32a
2009-05-20 11:27:38 +0200 msc r272109 : #102082# CTRL + C does not work
2009-05-20 09:43:36 +0200 oj r272106 : clean up includes
2009-05-20 09:32:15 +0200 oj r272105 : #i99060# merge error resovled now VERTICAL_ALIGN is in both stmt
2009-05-20 08:37:21 +0200 msc r272104 : add workaround for issue #102010#
2009-05-20 08:10:12 +0200 oj r272103 : #i99104# use numberformatkey
2009-05-20 08:07:02 +0200 oj r272102 : #i99104# use column info from rowset
2009-05-20 08:04:43 +0200 oj r272101 : #i102032# use a special column type where prec and scale are the values currently set at the column
2009-05-20 08:03:04 +0200 oj r272100 : #i102032# correct type info, we have to use SQL defined type names
2009-05-19 10:27:02 +0200 oj r272061 : #i99104# export null-date
2009-05-19 08:26:53 +0200 oj r272056 : #i99104# export null-date
2009-05-18 13:15:10 +0200 msc r272014 : add issue #102019#
2009-05-18 11:33:07 +0200 msc r272005 : add issue #102019#
2009-05-18 08:59:45 +0200 msc r271996 : add workaroud for issue #102010#
2009-05-15 10:21:24 +0200 msc r271929 : #101944#
2009-05-11 21:18:30 +0200 fs r271792 : #i99914#
2009-05-08 13:52:06 +0200 oj r271715 : #i96423# remember column span
2009-05-08 11:26:19 +0200 oj r271708 : #i98605# impl new scale mode
2009-05-08 10:33:35 +0200 fs r271706 : SendUserCall: only call into the shape notification routine for UserCall types where this is necessary (performance issue)
2009-05-07 20:52:44 +0200 fs r271698 : outsource ShapeProperty from shapepropertynotifier.hxx
2009-05-07 20:43:33 +0200 fs r271697 : #i99056# use notifyShapePropertyChange, instead of getShapePropertyChangeNotifier - the latter throws if no shape exists, yet
2009-05-07 20:33:58 +0200 fs r271696 : #i99056# +notifyShapePropertyChange: allow notifying chages without checking whether there actually already exists an SvxShape
2009-05-07 16:22:15 +0200 fs r271679 : #i10000# cygwin needs quotes around the classpath
2009-05-07 16:21:37 +0200 fs r271678 : #i10000# cygwin needs quotes around the classpath
2009-05-07 16:01:11 +0200 oj r271677 : #i99914# notify parent handler
2009-05-07 15:54:54 +0200 fs r271676 : #i10000# cygwin needs some quoting
2009-05-07 14:49:48 +0200 oj r271672 : #i99277# quote alias name
2009-05-07 14:48:12 +0200 oj r271671 : #i92538# add ~ in front of type
2009-05-07 14:37:13 +0200 oj r271667 : #i99118# change type from char to varchar
2009-05-07 14:36:23 +0200 oj r271666 : #i99118# clear dest columns when changing to create new table
2009-05-07 13:35:32 +0200 oj r271657 : #i94467# handle type 0 as double as well
2009-05-07 13:20:49 +0200 oj r271655 : i99743# setNull when varchar is no text
2009-05-07 12:58:06 +0200 fs r271651 : initialize the SdrObject's property change notifier after the ctor, if necessary
2009-05-07 11:47:18 +0200 fs r271647 : #i10000#
2009-05-07 10:57:16 +0200 fs r271639 : OPropertyBrowserController::propertyChange: care for the current property state, too, and properly forward it to the UI
2009-05-07 10:18:14 +0200 fs r271636 : onNewComponent: do not ask the map for grid columns, it will throw
2009-05-07 10:09:55 +0200 fs r271634 : #i101623#
2009-05-07 09:53:44 +0200 fs r271631 : #i101622#
2009-05-06 21:55:53 +0200 fs r271615 : #i10000#
2009-05-06 21:10:42 +0200 fs r271611 : #i10000#
2009-05-06 13:11:48 +0200 fs r271583 : #i10000#
2009-05-05 22:29:31 +0200 fs r271559 : proper assertion message
2009-05-05 22:29:03 +0200 fs r271558 : diagnostics
2009-05-05 22:16:16 +0200 fs r271557 : #i10000#
2009-05-05 13:50:32 +0200 fs r271513 : #i10000#
2009-05-05 10:21:50 +0200 fs r271503 : #i10000#
2009-05-05 09:30:26 +0200 fs r271501 : why did those survive the rebase -C step?
2009-05-05 09:18:12 +0200 fs r271500 : #i10000#
2009-05-04 17:08:17 +0200 fs r271475 : CWS-TOOLING: rebase CWS dba32b to trunk@271427 (milestone: DEV300:m47)
2009-05-04 14:51:26 +0200 fs r271456 : line ends
2009-04-30 15:55:27 +0200 fs r271418 : NewURL -> PublicConnectionURL
2009-04-22 21:18:34 +0200 fs r271141 : #i100944#
2009-04-22 09:12:26 +0200 oj r271071 : #i101261# little code change
2009-04-22 09:11:43 +0200 oj r271070 : #i101261# only ask for parameters which aren't set before
2009-04-22 09:11:25 +0200 oj r271069 : #i101261# new grabage container for nodes
2009-04-22 09:11:02 +0200 oj r271068 : #i101261# new grabage container for nodes
2009-04-22 09:10:44 +0200 oj r271067 : #i101261# new grabage container for nodes
2009-04-22 09:10:21 +0200 oj r271066 : #i101261# only ask for parameters which aren't set before
2009-04-22 09:08:24 +0200 oj r271065 : #i101261# only ask for parameters which aren't set before
2009-04-22 09:07:25 +0200 oj r271064 : #i101261# only ask for parameters which aren't set before
2009-04-22 08:49:07 +0200 oj r271062 : #i77501# preview only when needed
2009-04-22 08:45:44 +0200 oj r271061 : #i101261# new prop max rows
2009-04-22 08:44:18 +0200 oj r271060 : #i101261# create dataprovider earlier to avoid the wrong legend in chart
2009-04-22 08:42:48 +0200 oj r271059 : #i101261# handle parameter
2009-04-17 21:00:23 +0200 fs r270954 : #i98350#
2009-04-17 13:54:19 +0200 fs r270942 : #i99565#
2009-04-17 13:51:34 +0200 fs r270940 : #i101153# only localize the (potentially) localizable properties when there really is support at the control model
2009-04-17 11:43:14 +0200 fs r270932 : removed superfluous include
2009-04-17 10:10:15 +0200 fs r270926 : #i10000#
2009-04-17 10:02:36 +0200 fs r270925 : #i10000#
2009-04-17 09:15:13 +0200 fs r270918 : #i99056# some more refactoring of the recently introduced property change notification mechanism for UNO shapes
2009-04-17 09:14:56 +0200 fs r270917 : #i99056# some more refactoring of the recently introduced property change notification mechanism for UNO shapes
2009-04-17 09:13:25 +0200 fs r270915 : #i99056# some more refactoring of the recently introduced property change notification mechanism for UNO shapes
2009-04-17 08:30:34 +0200 fs r270914 : removed unotools/servicehelper.hxx in favour of the (duplicated) comphelper/servicehelper.hxx
2009-04-16 21:05:25 +0200 fs r270903 : #i10000#
2009-04-16 20:43:43 +0200 fs r270902 : #i99056# shape notification outsourced to the SdrObject, this is what all other shape implementations (which only aggregate an SvxShape) have access to, too
2009-04-16 15:57:36 +0200 fs r270891 : #i99056# make SetUnoControlModel virtual
2009-04-16 15:44:02 +0200 fs r270890 : #i99056# let the ScShapeObj notify changes in its Anchor property
2009-04-16 15:36:47 +0200 fs r270889 : #i99056# enable the sheet anchor type property, too
2009-04-16 15:33:45 +0200 fs r270887 : #i99056# shape notification outsourced to the SdrObject, this is what all other shape implementations (which only aggregate an SvxShape) have access to, too
2009-04-15 14:53:13 +0200 fs r270844 : #i10000#
2009-04-15 13:08:29 +0200 fs r270836 : #i10000#
2009-04-15 12:28:14 +0200 fs r270832 : #i10000#
2009-04-15 10:59:14 +0200 fs r270827 : #i10000#
2009-04-15 09:41:08 +0200 oj r270823 : fix issues found with findbugs and pmd
2009-04-14 21:08:04 +0200 fs r270808 : #i99056# implement SheetAnchorType - now the only thing missing to enable it is the proper notification when it is modified
2009-04-14 17:09:00 +0200 fs r270799 : #i99056# implement XServiceInfo for the ScShapeObj
2009-04-14 17:07:55 +0200 fs r270798 : #i99056# implement TextAnchorType, partially implement SheetAnchorType
2009-04-14 15:54:05 +0200 fs r270786 : #i99056# SwXShape: notify changes of the AnchorType property
2009-04-14 15:47:32 +0200 fs r270785 : #i99056# deliver shapepropertynotifier.hxx
2009-04-14 15:46:54 +0200 fs r270784 : diagnostics
2009-04-14 15:08:28 +0200 fs r270781 : #i99056# outsourced the SvxShape's property change notification code into a dedicated class
2009-04-14 14:41:09 +0200 fs r270773 : #i99056# outsourced the SvxShape's property change notification code into a dedicated class
2009-04-14 14:37:23 +0200 fs r270772 : in dtor, remove the properties from the temporary component context
2009-04-14 14:36:34 +0200 fs r270771 : getWeakUnoShape made const
2009-04-14 12:23:08 +0200 oj r270757 : #i101064# add missing braces
2009-04-14 12:21:25 +0200 oj r270756 : #i101065# add braces for gcc 4.3.2
2009-04-14 12:17:45 +0200 oj r270755 : #i101059# add dep for manifest
2009-04-09 12:06:58 +0200 oj r270686 : #i93100# use OptimalSize from control to get height
2009-04-08 09:56:55 +0200 oj r270619 : #i92537# handle calculations in the select columns as well
2009-04-08 09:30:39 +0200 oj r270615 : #i96657# throw error message when the key doesn't have any columns
2009-04-07 12:08:26 +0200 oj r270592 : #i77501# impl preview of the executed report
2009-04-07 12:01:56 +0200 oj r270591 : #i77501# impl preview of the executed report
2009-04-07 11:41:03 +0200 oj r270590 : #i77501# impl preview of the executed report
2009-04-07 11:39:32 +0200 oj r270589 : #i77501# impl preview of the executed report
2009-04-07 11:29:25 +0200 oj r270588 : #i77501# convert dos to unix lineends
2009-04-07 11:28:23 +0200 oj r270587 : #i77501# impl preview of the executed report
2009-04-07 11:16:50 +0200 oj r270586 : #i77501# impl preview of the executed report
2009-04-07 11:16:00 +0200 oj r270585 : #i77501# impl preview of the executed report
2009-04-07 11:15:44 +0200 oj r270584 : #i77501# impl preview of the executed report
2009-04-07 11:15:28 +0200 oj r270583 : #i77501# impl preview of the executed report
2009-04-07 11:15:04 +0200 oj r270582 : #i77501# impl preview of the executed report
2009-04-06 15:38:54 +0200 fs r270559 : merge changes from CWS dba32a herein
2009-04-03 15:56:16 +0200 fs r270494 : ImpSvMEdit::Resize: do multiple iterations, if necessary
2009-04-03 14:35:49 +0200 fs r270487 : #i10000#
2009-04-03 13:17:16 +0200 fs r270476 : #i99056# display geometry information for controls, too
2009-04-03 13:16:37 +0200 fs r270475 : #i99056# better ordering of the geometry properties
2009-04-03 13:16:07 +0200 fs r270473 : #i99056# now that SvxShape supports property change listeners, forward add/remove requests to it
2009-04-03 13:13:18 +0200 fs r270472 : #i99056# at SvxShape, allow for PropertyChangeListeners for Size/Position
2009-04-03 09:29:27 +0200 oj r270456 : #i94571# use correct prop name
2009-04-03 09:14:54 +0200 fs r270451 : merge changes from CWS dba32a herein
2009-04-02 17:00:51 +0200 fs r270424 : better diagnostics
2009-04-02 16:35:19 +0200 fs r270421 : diagnostics
2009-04-02 16:34:50 +0200 fs r270420 : #i99056# mxUnoShape not accessible anymore, use impl_setUnoShape instead
2009-04-02 16:32:48 +0200 fs r270419 : #i99056# make getUnoShape cheaper: keep the pointer to the SvxShape all the time, so there's no need to ask for it in getUnoShape. As a consequence, we will later be able to use the pointer in scenarious where performance (potentially) matters
2009-04-02 16:31:13 +0200 fs r270417 : merge changes from CWS dba32a herein
2009-04-02 16:23:16 +0200 fs r270414 : merge changes from CWS dba32a herein
2009-04-02 14:10:35 +0200 fs r270405 : #i10000#
2009-04-02 14:06:26 +0200 fs r270404 : merge changes from CWS dba32a herein
2009-04-02 14:03:03 +0200 fs r270401 : #i10000#
2009-04-02 13:58:13 +0200 fs r270400 : #i10000#
2009-04-02 12:59:44 +0200 fs r270397 : merge changes from CWS dba32a herein
2009-04-02 12:46:30 +0200 fs r270396 : #i99056# let the form page maintain a mapping between control models and control shapes
2009-04-02 12:44:07 +0200 fs r270395 : merge changes from CWS dba32a herein
2009-04-02 12:42:06 +0200 fs r270394 : merge changes from CWS dba32a herein
2009-04-02 12:35:20 +0200 fs r270393 : #i10000# precompiled header
2009-04-02 12:05:31 +0200 fs r270392 : merge changes from CWS dba32a herein
2009-04-02 12:00:42 +0200 fs r270391 : merge changes from CWS dba32a herein
2009-04-02 11:47:26 +0200 fs r270390 : merge changes from CWS dba32a herein
2009-04-02 11:39:15 +0200 oj r270389 : #i94467# foxpro impl several new types
2009-04-02 11:35:58 +0200 fs r270387 : merge changes from CWS dba32a herein
2009-04-01 14:10:51 +0200 fs r270329 : merge changes from CWS dba32a herein
2009-03-31 17:29:50 +0200 fs r270290 : merge changes from CWS dba32a herein
2009-03-30 14:53:56 +0200 fs r270233 : #i100417# don't set grid column widths to 0, but to <void/>
2009-03-30 12:31:03 +0200 oj r270213 : #i100552# wrong orb used
2009-03-30 12:19:20 +0200 oj r270212 : #i98303# convertlike corrected to sal_Unicode
2009-03-30 11:58:25 +0200 fs r270210 : merge changes from CWS dba32a herein
2009-03-30 11:38:16 +0200 oj r270205 : remove duplicate code from merge
2009-03-30 11:02:27 +0200 fs r270202 : merge changes from CWS dba32a herein
2009-03-30 11:02:19 +0200 fs r270201 : merge changes from CWS dba32a herein
2009-03-30 10:31:26 +0200 oj r270200 : #i100665# only throw exception and do not drop table
2009-03-30 09:36:24 +0200 fs r270195 : assertion text
2009-03-28 20:21:58 +0100 fs r270187 : #ii10000#
2009-03-28 20:19:54 +0100 fs r270186 : removed unused help ids
2009-03-28 20:19:40 +0100 fs r270185 : removed unused help ids
2009-03-28 20:19:10 +0100 fs r270184 : #i100237# +DefaultState/XReset
2009-03-28 00:29:29 +0100 fs r270177 : CWS-TOOLING: rebase CWS dba32b to trunk@270033 (milestone: DEV300:m45)
2009-03-27 22:56:46 +0100 fs r270173 : #i100237# DEFAULT_CHECKED -> DEFAULT_STATE
2009-03-27 22:55:52 +0100 fs r270172 : #i100237# DefaultState property for buttons, enabled only when Toggle=Yes
2009-03-27 22:54:15 +0100 fs r270171 : #i100237# DEFAULT_CHECKED -> DEFAULT_STATE
2009-03-27 22:53:54 +0100 fs r270170 : #i100237# introduce a DefaultState property for buttons, which implies buttongs supporting XReset, which needed some refactoring
2009-03-27 13:31:41 +0100 fs r270152 : ignore output paths
2009-03-27 11:23:44 +0100 fs r270139 : tuned behavior with respect to invalid keys/values
2009-03-27 09:57:14 +0100 fs r270136 : don't allow Double.NaN
2009-03-27 09:56:16 +0100 fs r270135 : talk about Double.NaN
2009-03-26 12:14:30 +0100 fs r270067 : removed unused parameter
2009-03-26 12:14:02 +0100 fs r270066 : removed widening conversion when checking keys
2009-03-26 09:17:34 +0100 fs r270053 : separated the enumerator functionality into a dedicated interface, this way not burdening XMap with it
2009-03-26 09:17:11 +0100 fs r270052 : separated the enumerator functionality into a dedicated interface, this way not burdening XMap with it
2009-03-26 09:16:49 +0100 fs r270051 : separated the enumerator functionality into a dedicated interface, this way not burdening XMap with it
2009-03-25 21:55:20 +0100 fs r270044 : #i100541# properly calculat bNeedScrollBox
2009-03-25 12:56:17 +0100 fs r270019 : renamed the previously introduced error condition
2009-03-25 12:11:48 +0100 fs r270015 : #i100095# when the error messages contain non-trivial details (SQLState/ErrorCode), then always display the 'Details' button
2009-03-25 12:10:05 +0100 fs r270012 : renamed the previously introduced error condition
2009-03-25 12:01:04 +0100 fs r270011 : #i100095# when no address book (or respective profile) can be found, then use a dedicated ErrorCondition
2009-03-25 10:29:07 +0100 fs r270003 : add missing localization
2009-03-25 10:23:12 +0100 fs r270001 : in preparation of #i1000095#:
rework the error handling, allow using css.sdb.ErrorCondition values, plus
allow propagating the nsresult
2009-03-25 10:21:55 +0100 fs r270000 : in preparation of #i1000095#:
rework the error handling, allow using css.sdb.ErrorCondition values, plus
allow propagating the nsresult
2009-03-20 23:05:38 +0100 fs r269829 : XMap::getSize removed
2009-03-20 23:05:19 +0100 fs r269828 : changes as suggested by sb
2009-03-20 23:04:56 +0100 fs r269827 : enhanced documentation
2009-03-20 15:31:40 +0100 fs r269815 : changes as suggested by sb
2009-03-20 13:23:52 +0100 oj r269804 : #i92538# correct the zorder that fixedtext is infront of control
2009-03-20 12:59:38 +0100 oj r269801 : #i94571# paraadjust now supports BLOCK
2009-03-20 12:58:11 +0100 oj r269800 : #i94571# export style with data style
2009-03-20 12:57:05 +0100 oj r269799 : #i94571# text align is now paraadjust
2009-03-20 12:37:02 +0100 fs r269797 : enum keys only accepted if they have the exact type, not if they have *any* enum type
2009-03-20 12:28:31 +0100 fs r269794 : some changes requested by sb
2009-03-20 08:52:47 +0100 fs r269780 : doc
2009-03-20 07:37:31 +0100 oj r269779 : #i99913# only notifiy when values are different
2009-03-20 07:36:58 +0100 oj r269778 : #i99913# add undoenv as listener at the dataprovider
2009-03-19 22:52:52 +0100 fs r269771 : added comment
2009-03-19 22:40:06 +0100 fs r269770 : +testEnumeration
2009-03-19 22:39:41 +0100 fs r269769 : implemented enumeration, getKeySet, and getValues. Should be finished now.
2009-03-19 14:01:01 +0100 oj r269743 : #i99913# reset the modified state when selecting an object
2009-03-19 12:19:54 +0100 lla r269739 : #i72390# cleanups
2009-03-19 09:25:27 +0100 fs r269727 : #i10000#
2009-03-18 23:37:02 +0100 fs r269708 : extended checks for value type acceptance
2009-03-18 23:36:41 +0100 fs r269707 : fixed value type checks
2009-03-18 14:59:56 +0100 fs r269678 : initial complex test case for the new css.container.Map implementation
2009-03-18 14:59:24 +0100 fs r269677 : verifyExpectedException moved to base class (in complexlib), and renamed to assureException for consistency
2009-03-18 14:58:35 +0100 fs r269676 : removed unused imports
2009-03-18 14:58:03 +0100 fs r269675 : first implementation of the new css.container.Map service (not completed, yet)
2009-03-18 14:57:17 +0100 fs r269674 : base class for UNO components, freeing you from some repeating work
2009-03-18 14:55:53 +0100 fs r269672 : +assureException: call a given method with given parameters on a given object, ensure that a given exception is thrown by the method implementation
2009-03-18 14:54:58 +0100 fs r269671 : +getComponentContext
2009-03-18 14:54:00 +0100 fs r269670 : isEmpty returns a boolean, not a long
2009-03-18 14:14:43 +0100 oj r269663 : #i99743# now text also supports null
2009-03-18 13:54:14 +0100 oj r269660 : #i99223# remove check for 2 params
2009-03-18 13:33:35 +0100 oj r269659 : #i99060# replace text::ParagraphVertAlign with style::VerticalAlignment
2009-03-18 13:32:18 +0100 oj r269658 : #i99060# don't set void property when void isn't allowed
2009-03-18 13:31:11 +0100 oj r269657 : #i99060# handle vertical alignment
2009-03-18 13:28:28 +0100 oj r269656 : #i99060# remove unused elements from sytle
2009-03-18 09:35:42 +0100 lla r269639 : #i72390# cleanups
2009-03-18 09:31:20 +0100 lla r269638 : #i72390# add ButtonList
2009-03-18 09:30:46 +0100 lla r269637 : #i72390# renamed interface
2009-03-18 09:30:15 +0100 lla r269636 : #i72390# use ButtonList instead of ImageList
2009-03-18 09:29:05 +0100 lla r269635 : #i72390# new ButtonList, cleanups
2009-03-18 09:26:34 +0100 lla r269634 : #i72390# cleanups
2009-03-17 12:21:20 +0100 oj r269590 : #i99222# remove assertion
2009-03-17 12:17:22 +0100 oj r269589 : #i98605# impl scale mode
2009-03-17 12:10:42 +0100 oj r269588 : #i98605# impl scale mode
2009-03-17 11:40:15 +0100 oj r269584 : #i96944# doesn't create equation for shapes
2009-03-17 11:33:16 +0100 oj r269583 : #i96423# switch calc from float to long
2009-03-16 15:19:18 +0100 fs r269550 : #i41930# enable zoom for embedded/outplace documents
2009-03-16 14:25:54 +0100 oj r269542 : #i93734# remove ContextSensitive
2009-03-16 14:21:58 +0100 oj r269541 : #i99274# page header before group header
2009-03-16 14:18:23 +0100 oj r269539 : #i99110# fix value type
2009-03-16 14:14:16 +0100 fs r269537 : line ends
2009-03-16 14:11:06 +0100 fs r269535 : line ends
2009-03-16 14:08:34 +0100 fs r269534 : #i100087# (provided my np): allow for polymorphic types with more than one parameter
2009-03-16 12:30:31 +0100 oj r269521 : compile error
2009-03-16 12:19:12 +0100 oj r269519 : compile error
2009-03-16 10:39:28 +0100 oj r269511 : compile error under linux with swap
2009-03-13 10:33:04 +0100 oj r269462 : CWS-TOOLING: rebase CWS dba32b to trunk@269297 (milestone: DEV300:m43)
2009-03-12 14:37:25 +0100 fs r269416 : interface SequenceOutputStreamTest is unneeded, and pollutes the namespace here :)
2009-03-12 14:35:07 +0100 fs r269414 : not needed
2009-03-12 14:34:15 +0100 fs r269413 : preparation for multiple tests in this module
2009-03-12 14:33:02 +0100 fs r269412 : ShowTargets was moved from module integration.forms to module complexlib
2009-03-12 14:32:48 +0100 fs r269411 : helper class for projects containing multiple complex test cases (and following a certain structure)
2009-03-12 14:00:14 +0100 fs r269407 : proper module after the move
2009-03-12 13:59:10 +0100 fs r269406 : superseded by ../makefile.mk
2009-03-12 13:47:38 +0100 fs r269403 : not needed anymore
2009-03-12 13:45:46 +0100 fs r269402 : moved, in preparation of adding more test cases here, with a common infrastructure
2009-03-12 13:45:07 +0100 fs r269401 : moved from ../
2009-03-12 13:43:59 +0100 fs r269400 : moved to ./comphelper, in preparation of adding more test cases here, with a common infrastructure
2009-03-12 13:29:47 +0100 oj r269396 : #i99914# set parent on dataprovider
2009-03-12 13:10:35 +0100 oj r269393 : #i99832# check thrown exception and show error
2009-03-12 13:08:10 +0100 fs r269392 : reorganizing tests
2009-03-12 12:52:55 +0100 oj r269390 : #i99118# convert formatkey in numberformat
2009-03-12 12:34:53 +0100 fs r269388 : new API tests
2009-03-12 12:29:05 +0100 fs r269386 : Map not yet committed
2009-03-12 12:28:36 +0100 fs r269385 : oops, forgot the SequenceInputStream during the previous refactoring
2009-03-12 12:12:39 +0100 oj r269384 : #i99104# set HasCategories prop
2009-03-12 12:12:08 +0100 oj r269383 : #i99104# check HasCategories even for internal dataprovider
2009-03-12 12:10:40 +0100 oj r269382 : #i99104# set HasCategories prop
2009-03-12 10:51:49 +0100 fs r269373 : #i10000# exception specifications
2009-03-12 10:49:18 +0100 fs r269372 : #i10000# exception specifications
2009-03-12 10:44:02 +0100 fs r269371 : #i10000# exception specifications
2009-03-12 10:30:55 +0100 fs r269368 : refactored the UNO service registration in this module, using the helper classes provided by comphelper itself, so you have less effort when extending the list of to-be-registered components
2009-03-12 10:30:37 +0100 fs r269367 : module-local includes
2009-03-12 07:05:54 +0100 oj r269357 : #i99104# database dataprovider doesn't need dataranges and diagramdata
2009-03-11 10:58:28 +0100 oj r269306 : #i99911# check if name of the report is a valid file name
2009-03-11 10:03:23 +0100 oj r269299 : #i99666# the report is new when the HierarchicalDocumentName is empty
2009-03-10 11:32:45 +0100 oj r269258 : #i99221# use fallback for language
2009-03-10 10:48:40 +0100 oj r269255 : #i99433# now use OStringBuffer
2009-03-10 10:36:21 +0100 fs r269252 : initial version of (X)Map
2009-03-10 09:52:23 +0100 oj r269246 : #i99433# now use OStringBuffer
2009-03-10 08:56:13 +0100 oj r269240 : #i99655# patch applied
2009-03-09 07:35:33 +0100 lla r269058 : #i10000# wrong variable assignment fixed
2009-03-06 17:20:40 +0100 fs r269030 : some explicit defaults
2009-03-06 17:20:30 +0100 fs r269029 : #i98600#
2009-03-06 14:40:34 +0100 fs r269009 : #i87692# during reload, prevent the document being modified just because of some control content changes ...
2009-03-06 12:52:20 +0100 lla r268997 : #i10000# ambigous problem with FontWeight fixed
2009-03-06 11:39:32 +0100 fs r268989 : #i10000# (approved by pl): use --without-t1-library configure option
2009-03-06 10:55:43 +0100 fs r268986 : #i99953# depends on xmlscript module now
2009-03-06 10:54:04 +0100 fs r268985 : #i99953# also adjust the event names found in dialogs embedded in the forms
2009-03-06 09:53:41 +0100 fs r268977 : #i10000#
2009-03-06 09:30:41 +0100 lla r268973 : #i10000# merge problems
2009-03-05 17:52:34 +0100 fs r268932 : #i98593# for sub components which are actually controlled by a DocumentDefinition (aka XComponentSupplier aka XCommandProcessor), close them by executing the 'close' command, not by suspending/closing the controller (which cannot be intercepted)
2009-03-05 11:41:56 +0100 fs r268889 : default the drop down line count for list/combo boxes to 20
2009-03-05 11:39:10 +0100 fs r268887 : do not display empty error messages
2009-03-02 10:13:57 +0100 lla r268639 : #i91541# CWS rebase m41 to m42
2009-03-02 09:06:27 +0100 lla r268635 : #i10000# add ';' to strings
2009-02-26 11:18:00 +0100 fs r268492 : reportdesign depends on REPORTBUILDER, not REPORTDESIGN
2009-02-26 10:11:38 +0100 lla r268489 : CWS-TOOLING: rebase CWS dba32b to trunk@268395 (milestone: DEV300:m42)
2009-02-26 09:04:11 +0100 lla r268488 : CWS-TOOLING: rebase CWS dba32b to trunk@268395 (milestone: DEV300:m42)
2009-02-24 12:09:13 +0100 lla r268392 : #i91541# #i91542# cleanups
2009-02-24 08:08:06 +0100 lla r268382 : merge all dba32a changes into dba32b
2009-02-24 07:14:55 +0100 lla r268381 : merge all dba32a changes into dba32b
2009-02-23 21:44:28 +0100 fs r268377 : oops ... don't tamper with m_aListSourceValues at the end of loadData
2009-02-23 20:57:05 +0100 fs r268376 : #i98162# don't hold the values as strings, but as ORowSetValue, this way preserving their type, and being agnostic to different result/rowset implementations doing different to-string-conversations
2009-02-23 20:55:44 +0100 fs r268375 : getObject: throwFunctionNotSupportedException, instead of silently returning NULL
2009-02-23 20:55:20 +0100 fs r268374 : #i98162# some more supported types
2009-02-23 20:54:43 +0100 fs r268373 : #i98162# +operator !=
2009-02-20 09:35:39 +0100 fs r268306 : #i99422# for a font, display the font name, the style, and the size
2009-02-20 09:33:45 +0100 fs r268305 : #i99422# in the property browser, FONT supersedes CHARFONTNAME: the aggregated FormComponentHandler displays them more nicely now
2009-02-19 16:12:06 +0100 fs r268293 : #i99372# recognize DataType::FLOAT as numeric
2009-02-19 15:43:12 +0100 fs r268291 : #i99415#
2009-02-19 15:40:15 +0100 fs r268290 : #i99242# lcl_firstFocussableControl: take disabled controls into account
2009-02-19 15:34:36 +0100 fs r268289 : #i99396# properly decode the base name of the URL when using it as title
2009-02-19 15:19:05 +0100 fs r268287 : #i98247#
2009-06-05 09:47:55 +00:00
|
|
|
SID_ATTR_CHAR_OVERLINE,
|
2004-05-07 14:48:07 +00:00
|
|
|
SID_SET_SUPER_SCRIPT,
|
|
|
|
SID_SET_SUB_SCRIPT,
|
|
|
|
SID_CHAR_DLG,
|
|
|
|
SID_PARA_DLG,
|
|
|
|
// SID_TEXTDIRECTION_LEFT_TO_RIGHT, /* 907 */
|
|
|
|
// SID_TEXTDIRECTION_TOP_TO_BOTTOM,
|
|
|
|
SID_ATTR_CHAR_SCALEWIDTH, /* 911 */
|
|
|
|
SID_ATTR_CHAR_RELIEF,
|
|
|
|
SID_ATTR_PARA_LEFT_TO_RIGHT, /* 950 */
|
|
|
|
SID_ATTR_PARA_RIGHT_TO_LEFT,
|
|
|
|
0
|
|
|
|
};
|
|
|
|
|
|
|
|
// slots which we are not responsible for on the SfxShell level, but
|
|
|
|
// need to handle during the "paragraph attributes" and/or "character
|
|
|
|
// attributes" dialogs
|
|
|
|
static SfxSlotId pDialogSlots[] =
|
|
|
|
{
|
|
|
|
SID_ATTR_TABSTOP,
|
|
|
|
SID_ATTR_PARA_HANGPUNCTUATION,
|
|
|
|
SID_ATTR_PARA_FORBIDDEN_RULES,
|
|
|
|
SID_ATTR_PARA_SCRIPTSPACE,
|
|
|
|
SID_ATTR_CHAR_LATIN_LANGUAGE,
|
|
|
|
SID_ATTR_CHAR_CJK_LANGUAGE,
|
|
|
|
SID_ATTR_CHAR_CTL_LANGUAGE,
|
|
|
|
SID_ATTR_CHAR_LATIN_FONT,
|
|
|
|
SID_ATTR_CHAR_CJK_FONT,
|
|
|
|
SID_ATTR_CHAR_CTL_FONT,
|
|
|
|
SID_ATTR_CHAR_LATIN_FONTHEIGHT,
|
|
|
|
SID_ATTR_CHAR_CJK_FONTHEIGHT,
|
|
|
|
SID_ATTR_CHAR_CTL_FONTHEIGHT,
|
|
|
|
SID_ATTR_CHAR_LATIN_WEIGHT,
|
|
|
|
SID_ATTR_CHAR_CJK_WEIGHT,
|
|
|
|
SID_ATTR_CHAR_CTL_WEIGHT,
|
|
|
|
SID_ATTR_CHAR_LATIN_POSTURE,
|
|
|
|
SID_ATTR_CHAR_CJK_POSTURE,
|
|
|
|
SID_ATTR_CHAR_CTL_POSTURE,
|
|
|
|
SID_ATTR_CHAR_EMPHASISMARK,
|
|
|
|
0
|
|
|
|
};
|
|
|
|
|
|
|
|
//====================================================================
|
|
|
|
//= FmFocusListenerAdapter
|
|
|
|
//====================================================================
|
|
|
|
typedef ::cppu::WeakImplHelper1 < XFocusListener
|
|
|
|
> FmFocusListenerAdapter_Base;
|
|
|
|
class FmFocusListenerAdapter : public FmFocusListenerAdapter_Base
|
|
|
|
{
|
|
|
|
private:
|
|
|
|
IFocusObserver* m_pObserver;
|
|
|
|
Reference< XWindow > m_xWindow;
|
|
|
|
|
|
|
|
public:
|
|
|
|
FmFocusListenerAdapter( const Reference< XControl >& _rxControl, IFocusObserver* _pObserver );
|
|
|
|
|
|
|
|
// clean up the instance
|
|
|
|
void dispose();
|
|
|
|
|
|
|
|
protected:
|
|
|
|
~FmFocusListenerAdapter();
|
|
|
|
|
|
|
|
protected:
|
|
|
|
virtual void SAL_CALL focusGained( const FocusEvent& e ) throw (RuntimeException);
|
|
|
|
virtual void SAL_CALL focusLost( const FocusEvent& e ) throw (RuntimeException);
|
|
|
|
virtual void SAL_CALL disposing( const EventObject& Source ) throw (RuntimeException);
|
|
|
|
};
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------
|
|
|
|
DBG_NAME( FmFocusListenerAdapter )
|
|
|
|
//--------------------------------------------------------------------
|
|
|
|
FmFocusListenerAdapter::FmFocusListenerAdapter( const Reference< XControl >& _rxControl, IFocusObserver* _pObserver )
|
|
|
|
:m_pObserver( _pObserver )
|
|
|
|
,m_xWindow( _rxControl, UNO_QUERY )
|
|
|
|
{
|
|
|
|
DBG_CTOR( FmFocusListenerAdapter, NULL );
|
|
|
|
|
|
|
|
DBG_ASSERT( m_xWindow.is(), "FmFocusListenerAdapter::FmFocusListenerAdapter: invalid control!" );
|
|
|
|
osl_incrementInterlockedCount( &m_refCount );
|
|
|
|
{
|
|
|
|
try
|
|
|
|
{
|
|
|
|
if ( m_xWindow.is() )
|
|
|
|
m_xWindow->addFocusListener( this );
|
|
|
|
}
|
|
|
|
catch( const Exception& )
|
|
|
|
{
|
2008-12-01 12:31:27 +00:00
|
|
|
DBG_UNHANDLED_EXCEPTION();
|
2004-05-07 14:48:07 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
osl_decrementInterlockedCount( &m_refCount );
|
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------
|
|
|
|
FmFocusListenerAdapter::~FmFocusListenerAdapter()
|
|
|
|
{
|
|
|
|
acquire();
|
|
|
|
dispose();
|
|
|
|
|
|
|
|
DBG_DTOR( FmFocusListenerAdapter, NULL );
|
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------
|
|
|
|
void FmFocusListenerAdapter::dispose()
|
|
|
|
{
|
|
|
|
if ( m_xWindow.is() )
|
|
|
|
{
|
|
|
|
m_xWindow->removeFocusListener( this );
|
|
|
|
m_xWindow.clear();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------
|
|
|
|
void SAL_CALL FmFocusListenerAdapter::focusGained( const FocusEvent& e ) throw (RuntimeException)
|
|
|
|
{
|
|
|
|
if ( m_pObserver )
|
|
|
|
m_pObserver->focusGained( e );
|
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------
|
|
|
|
void SAL_CALL FmFocusListenerAdapter::focusLost( const FocusEvent& e ) throw (RuntimeException)
|
|
|
|
{
|
|
|
|
if ( m_pObserver )
|
|
|
|
m_pObserver->focusLost( e );
|
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------
|
|
|
|
void SAL_CALL FmFocusListenerAdapter::disposing( const EventObject& Source ) throw (RuntimeException)
|
|
|
|
{
|
2006-06-19 14:58:38 +00:00
|
|
|
(void)Source;
|
2004-05-07 14:48:07 +00:00
|
|
|
DBG_ASSERT( Source.Source == m_xWindow, "FmFocusListenerAdapter::disposing: where did this come from?" );
|
|
|
|
m_xWindow.clear();
|
|
|
|
}
|
|
|
|
|
|
|
|
//====================================================================
|
|
|
|
//= FmMouseListenerAdapter
|
|
|
|
//====================================================================
|
|
|
|
typedef ::cppu::WeakImplHelper1 < XMouseListener
|
|
|
|
> FmMouseListenerAdapter_Base;
|
|
|
|
class FmMouseListenerAdapter : public FmMouseListenerAdapter_Base
|
|
|
|
{
|
|
|
|
private:
|
|
|
|
IContextRequestObserver* m_pObserver;
|
|
|
|
Reference< XWindow > m_xWindow;
|
|
|
|
|
|
|
|
public:
|
|
|
|
FmMouseListenerAdapter( const Reference< XControl >& _rxControl, IContextRequestObserver* _pObserver );
|
|
|
|
|
|
|
|
// clean up the instance
|
|
|
|
void dispose();
|
|
|
|
|
|
|
|
protected:
|
|
|
|
~FmMouseListenerAdapter();
|
|
|
|
|
|
|
|
protected:
|
|
|
|
virtual void SAL_CALL mousePressed( const awt::MouseEvent& e ) throw (RuntimeException);
|
|
|
|
virtual void SAL_CALL mouseReleased( const awt::MouseEvent& e ) throw (RuntimeException);
|
|
|
|
virtual void SAL_CALL mouseEntered( const awt::MouseEvent& e ) throw (RuntimeException);
|
|
|
|
virtual void SAL_CALL mouseExited( const awt::MouseEvent& e ) throw (RuntimeException);
|
|
|
|
virtual void SAL_CALL disposing( const EventObject& Source ) throw (RuntimeException);
|
|
|
|
};
|
|
|
|
|
|
|
|
//====================================================================
|
|
|
|
//= FmMouseListenerAdapter
|
|
|
|
//====================================================================
|
|
|
|
//--------------------------------------------------------------------
|
|
|
|
DBG_NAME( FmMouseListenerAdapter )
|
|
|
|
//--------------------------------------------------------------------
|
|
|
|
FmMouseListenerAdapter::FmMouseListenerAdapter( const Reference< XControl >& _rxControl, IContextRequestObserver* _pObserver )
|
|
|
|
:m_pObserver( _pObserver )
|
|
|
|
,m_xWindow( _rxControl, UNO_QUERY )
|
|
|
|
{
|
|
|
|
DBG_CTOR( FmMouseListenerAdapter, NULL );
|
|
|
|
|
|
|
|
DBG_ASSERT( m_xWindow.is(), "FmMouseListenerAdapter::FmMouseListenerAdapter: invalid control!" );
|
|
|
|
osl_incrementInterlockedCount( &m_refCount );
|
|
|
|
{
|
|
|
|
try
|
|
|
|
{
|
|
|
|
if ( m_xWindow.is() )
|
|
|
|
m_xWindow->addMouseListener( this );
|
|
|
|
}
|
|
|
|
catch( const Exception& )
|
|
|
|
{
|
2008-12-01 12:31:27 +00:00
|
|
|
DBG_UNHANDLED_EXCEPTION();
|
2004-05-07 14:48:07 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
osl_decrementInterlockedCount( &m_refCount );
|
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------
|
|
|
|
FmMouseListenerAdapter::~FmMouseListenerAdapter()
|
|
|
|
{
|
|
|
|
acquire();
|
|
|
|
dispose();
|
|
|
|
|
|
|
|
DBG_DTOR( FmMouseListenerAdapter, NULL );
|
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------
|
|
|
|
void FmMouseListenerAdapter::dispose()
|
|
|
|
{
|
|
|
|
if ( m_xWindow.is() )
|
|
|
|
{
|
|
|
|
m_xWindow->removeMouseListener( this );
|
|
|
|
m_xWindow.clear();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------
|
|
|
|
void SAL_CALL FmMouseListenerAdapter::mousePressed( const awt::MouseEvent& _rEvent ) throw (::com::sun::star::uno::RuntimeException)
|
|
|
|
{
|
2005-07-08 09:34:05 +00:00
|
|
|
::vos::OGuard aGuard( Application::GetSolarMutex() );
|
2004-05-07 14:48:07 +00:00
|
|
|
// is this a request for a context menu?
|
|
|
|
if ( _rEvent.PopupTrigger )
|
|
|
|
{
|
|
|
|
if ( m_pObserver )
|
|
|
|
m_pObserver->contextMenuRequested( _rEvent );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------
|
2006-06-19 14:58:38 +00:00
|
|
|
void SAL_CALL FmMouseListenerAdapter::mouseReleased( const awt::MouseEvent& /*e*/ ) throw (::com::sun::star::uno::RuntimeException)
|
2004-05-07 14:48:07 +00:00
|
|
|
{
|
|
|
|
// not interested in
|
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------
|
2006-06-19 14:58:38 +00:00
|
|
|
void SAL_CALL FmMouseListenerAdapter::mouseEntered( const awt::MouseEvent& /*e*/ ) throw (::com::sun::star::uno::RuntimeException)
|
2004-05-07 14:48:07 +00:00
|
|
|
{
|
|
|
|
// not interested in
|
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------
|
2006-06-19 14:58:38 +00:00
|
|
|
void SAL_CALL FmMouseListenerAdapter::mouseExited( const awt::MouseEvent& /*e*/ ) throw (::com::sun::star::uno::RuntimeException)
|
2004-05-07 14:48:07 +00:00
|
|
|
{
|
|
|
|
// not interested in
|
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------
|
|
|
|
void SAL_CALL FmMouseListenerAdapter::disposing( const EventObject& Source ) throw (RuntimeException)
|
|
|
|
{
|
2006-06-19 14:58:38 +00:00
|
|
|
(void)Source;
|
2004-05-07 14:48:07 +00:00
|
|
|
DBG_ASSERT( Source.Source == m_xWindow, "FmMouseListenerAdapter::disposing: where did this come from?" );
|
|
|
|
m_xWindow.clear();
|
|
|
|
}
|
|
|
|
|
|
|
|
//====================================================================
|
|
|
|
//= FmTextControlShell
|
|
|
|
//====================================================================
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
namespace
|
|
|
|
{
|
|
|
|
//....................................................................
|
|
|
|
void lcl_translateUnoStateToItem( SfxSlotId _nSlot, const Any& _rUnoState, SfxItemSet& _rSet )
|
|
|
|
{
|
|
|
|
WhichId nWhich = _rSet.GetPool()->GetWhich( _nSlot );
|
|
|
|
if ( !_rUnoState.hasValue() )
|
|
|
|
{
|
|
|
|
if ( ( _nSlot != SID_CUT )
|
|
|
|
&& ( _nSlot != SID_COPY )
|
|
|
|
&& ( _nSlot != SID_PASTE )
|
|
|
|
)
|
|
|
|
{
|
|
|
|
_rSet.InvalidateItem( nWhich );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
switch ( _rUnoState.getValueType().getTypeClass() )
|
|
|
|
{
|
|
|
|
case TypeClass_BOOLEAN:
|
|
|
|
{
|
|
|
|
sal_Bool bState = sal_False;
|
|
|
|
_rUnoState >>= bState;
|
|
|
|
if ( _nSlot == SID_ATTR_PARA_SCRIPTSPACE )
|
|
|
|
_rSet.Put( SvxScriptSpaceItem( bState, nWhich ) );
|
|
|
|
else
|
|
|
|
_rSet.Put( SfxBoolItem( nWhich, bState ) );
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
{
|
|
|
|
Sequence< PropertyValue > aComplexState;
|
|
|
|
if ( _rUnoState >>= aComplexState )
|
|
|
|
{
|
|
|
|
if ( !aComplexState.getLength() )
|
|
|
|
_rSet.InvalidateItem( nWhich );
|
|
|
|
else
|
|
|
|
{
|
|
|
|
SfxAllItemSet aAllItems( _rSet );
|
|
|
|
TransformParameters( _nSlot, aComplexState, aAllItems );
|
|
|
|
const SfxPoolItem* pTransformed = aAllItems.GetItem( nWhich );
|
|
|
|
OSL_ENSURE( pTransformed, "lcl_translateUnoStateToItem: non-empty parameter sequence leading to empty item?" );
|
|
|
|
if ( pTransformed )
|
|
|
|
_rSet.Put( *pTransformed );
|
|
|
|
else
|
|
|
|
_rSet.InvalidateItem( nWhich );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
2008-06-30 14:43:44 +00:00
|
|
|
{
|
2004-05-07 14:48:07 +00:00
|
|
|
DBG_ERROR( "lcl_translateUnoStateToItem: invalid state!" );
|
2008-06-30 14:43:44 +00:00
|
|
|
}
|
2004-05-07 14:48:07 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//....................................................................
|
2006-10-12 11:46:44 +00:00
|
|
|
::rtl::OUString lcl_getUnoSlotName( SfxApplication&, SfxSlotId _nSlotId )
|
2004-05-07 14:48:07 +00:00
|
|
|
{
|
|
|
|
::rtl::OUString sSlotUnoName;
|
|
|
|
|
2006-05-02 14:34:25 +00:00
|
|
|
SfxSlotPool& rSlotPool = SfxSlotPool::GetSlotPool( NULL );
|
2004-05-07 14:48:07 +00:00
|
|
|
const SfxSlot* pSlot = rSlotPool.GetSlot( _nSlotId );
|
|
|
|
|
|
|
|
const sal_Char* pAsciiUnoName = NULL;
|
|
|
|
if ( pSlot )
|
|
|
|
{
|
|
|
|
pAsciiUnoName = pSlot->GetUnoName();
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
// some hard-coded slots, which do not have a UNO name at SFX level, but which
|
|
|
|
// we nevertheless need to transport via UNO mechanisms, so we need a name
|
|
|
|
switch ( _nSlotId )
|
|
|
|
{
|
|
|
|
case SID_ATTR_PARA_HANGPUNCTUATION: pAsciiUnoName = "AllowHangingPunctuation"; break;
|
|
|
|
case SID_ATTR_PARA_FORBIDDEN_RULES: pAsciiUnoName = "ApplyForbiddenCharacterRules"; break;
|
|
|
|
case SID_ATTR_PARA_SCRIPTSPACE: pAsciiUnoName = "UseScriptSpacing"; break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( pAsciiUnoName )
|
|
|
|
{
|
|
|
|
sSlotUnoName = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:" ) );
|
|
|
|
sSlotUnoName += ::rtl::OUString::createFromAscii( pAsciiUnoName );
|
|
|
|
}
|
|
|
|
#if OSL_DEBUG_LEVEL > 0
|
|
|
|
else
|
|
|
|
{
|
|
|
|
::rtl::OString sMessage( "lcl_getUnoSlotName: invalid slot id, or invalid slot, or no UNO name!\n" );
|
|
|
|
sMessage += "(slot id: ";
|
|
|
|
sMessage += ::rtl::OString::valueOf( (sal_Int32)_nSlotId );
|
|
|
|
sMessage += ")";
|
|
|
|
DBG_ERROR( sMessage );
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
return sSlotUnoName;
|
|
|
|
}
|
|
|
|
|
|
|
|
//....................................................................
|
2005-07-08 09:34:05 +00:00
|
|
|
bool lcl_determineReadOnly( const Reference< XControl >& _rxControl )
|
2004-05-07 14:48:07 +00:00
|
|
|
{
|
|
|
|
bool bIsReadOnlyModel = true;
|
|
|
|
try
|
|
|
|
{
|
|
|
|
Reference< XPropertySet > xModelProps;
|
|
|
|
if ( _rxControl.is() )
|
|
|
|
xModelProps = xModelProps.query( _rxControl->getModel() );
|
|
|
|
Reference< XPropertySetInfo > xModelPropInfo;
|
|
|
|
if ( xModelProps.is() )
|
|
|
|
xModelPropInfo = xModelProps->getPropertySetInfo();
|
|
|
|
|
|
|
|
if ( !xModelPropInfo.is() || !xModelPropInfo->hasPropertyByName( FM_PROP_READONLY ) )
|
|
|
|
bIsReadOnlyModel = true;
|
|
|
|
else
|
|
|
|
{
|
|
|
|
sal_Bool bReadOnly = sal_True;
|
|
|
|
xModelProps->getPropertyValue( FM_PROP_READONLY ) >>= bReadOnly;
|
|
|
|
bIsReadOnlyModel = bReadOnly;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch( const Exception& )
|
|
|
|
{
|
2008-12-01 12:31:27 +00:00
|
|
|
DBG_UNHANDLED_EXCEPTION();
|
2004-05-07 14:48:07 +00:00
|
|
|
}
|
|
|
|
return bIsReadOnlyModel;
|
|
|
|
}
|
|
|
|
|
|
|
|
//....................................................................
|
|
|
|
static Window* lcl_getWindow( const Reference< XControl >& _rxControl )
|
|
|
|
{
|
|
|
|
Window* pWindow = NULL;
|
|
|
|
try
|
|
|
|
{
|
|
|
|
Reference< XWindowPeer > xControlPeer;
|
|
|
|
if ( _rxControl.is() )
|
|
|
|
xControlPeer = _rxControl->getPeer();
|
|
|
|
if ( xControlPeer.is() )
|
|
|
|
pWindow = VCLUnoHelper::GetWindow( xControlPeer );
|
|
|
|
}
|
|
|
|
catch( const Exception& )
|
|
|
|
{
|
2008-12-01 12:31:27 +00:00
|
|
|
DBG_UNHANDLED_EXCEPTION();
|
2004-05-07 14:48:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return pWindow;
|
|
|
|
}
|
2005-07-08 09:34:05 +00:00
|
|
|
|
|
|
|
//....................................................................
|
|
|
|
bool lcl_isRichText( const Reference< XControl >& _rxControl )
|
|
|
|
{
|
|
|
|
if ( !_rxControl.is() )
|
|
|
|
return false;
|
|
|
|
|
|
|
|
bool bIsRichText = false;
|
|
|
|
try
|
|
|
|
{
|
|
|
|
Reference< XPropertySet > xModelProps( _rxControl->getModel(), UNO_QUERY );
|
|
|
|
Reference< XPropertySetInfo > xPSI;
|
|
|
|
if ( xModelProps.is() )
|
|
|
|
xPSI = xModelProps->getPropertySetInfo();
|
|
|
|
::rtl::OUString sRichTextPropertyName = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "RichText" ) );
|
|
|
|
if ( xPSI.is() && xPSI->hasPropertyByName( sRichTextPropertyName ) )
|
|
|
|
{
|
|
|
|
OSL_VERIFY( xModelProps->getPropertyValue( sRichTextPropertyName ) >>= bIsRichText );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch( const Exception& )
|
|
|
|
{
|
2008-12-01 12:31:27 +00:00
|
|
|
DBG_UNHANDLED_EXCEPTION();
|
2005-07-08 09:34:05 +00:00
|
|
|
}
|
|
|
|
return bIsRichText;
|
|
|
|
}
|
2004-05-07 14:48:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
FmTextControlShell::FmTextControlShell( SfxViewFrame* _pFrame )
|
2006-06-19 14:58:38 +00:00
|
|
|
:m_bActiveControl( false )
|
2004-05-07 14:48:07 +00:00
|
|
|
,m_bActiveControlIsReadOnly( true )
|
2005-07-08 09:34:05 +00:00
|
|
|
,m_bActiveControlIsRichText( false )
|
2006-06-19 14:58:38 +00:00
|
|
|
,m_pViewFrame( _pFrame )
|
|
|
|
,m_rBindings( _pFrame->GetBindings() )
|
2004-05-07 14:48:07 +00:00
|
|
|
,m_bNeedClipboardInvalidation( true )
|
|
|
|
{
|
|
|
|
m_aClipboardInvalidation.SetTimeoutHdl( LINK( this, FmTextControlShell, OnInvalidateClipboard ) );
|
|
|
|
m_aClipboardInvalidation.SetTimeout( 200 );
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
FmTextControlShell::~FmTextControlShell()
|
|
|
|
{
|
|
|
|
dispose();
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
2006-06-19 14:58:38 +00:00
|
|
|
IMPL_LINK( FmTextControlShell, OnInvalidateClipboard, void*, /*_pNotInterestedIn*/ )
|
2004-05-07 14:48:07 +00:00
|
|
|
{
|
|
|
|
if ( m_bNeedClipboardInvalidation )
|
|
|
|
{
|
|
|
|
DBG_TRACE( "FmTextControlShell::ClipBoard: invalidating clipboard slots" );
|
|
|
|
m_rBindings.Invalidate( SID_CUT );
|
|
|
|
m_rBindings.Invalidate( SID_COPY );
|
|
|
|
m_rBindings.Invalidate( SID_PASTE );
|
|
|
|
m_bNeedClipboardInvalidation = false;
|
|
|
|
}
|
|
|
|
return 0L;
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
void FmTextControlShell::transferFeatureStatesToItemSet( ControlFeatures& _rDispatchers, SfxAllItemSet& _rSet, bool _bTranslateLatin )
|
|
|
|
{
|
|
|
|
SfxItemPool& rPool = *_rSet.GetPool();
|
|
|
|
|
|
|
|
for ( ControlFeatures::const_iterator aFeature = _rDispatchers.begin();
|
|
|
|
aFeature != _rDispatchers.end();
|
|
|
|
++aFeature
|
|
|
|
)
|
|
|
|
{
|
|
|
|
SfxSlotId nSlotId( aFeature->first );
|
|
|
|
#if OSL_DEBUG_LEVEL > 0
|
|
|
|
::rtl::OUString sUnoSlotName;
|
|
|
|
if ( SFX_APP() )
|
|
|
|
sUnoSlotName = lcl_getUnoSlotName( *SFX_APP(), nSlotId );
|
|
|
|
else
|
|
|
|
sUnoSlotName = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "<unknown>" ) );
|
|
|
|
::rtl::OString sUnoSlotNameAscii( "\"" );
|
|
|
|
sUnoSlotNameAscii += ::rtl::OString( sUnoSlotName.getStr(), sUnoSlotName.getLength(), RTL_TEXTENCODING_ASCII_US );
|
|
|
|
sUnoSlotNameAscii += "\"";
|
|
|
|
#endif
|
|
|
|
|
|
|
|
if ( _bTranslateLatin )
|
|
|
|
{
|
|
|
|
// A rich text control offers a dispatcher for the "Font" slot/feature.
|
|
|
|
// Sadly, the semantics of the dispatches is that the feature "Font" depends
|
|
|
|
// on the current cursor position: If it's on latin text, it's the "latin font"
|
|
|
|
// which is set up at the control. If it's on CJK text, it's the "CJK font", and
|
|
|
|
// aequivalent for "CTL font".
|
|
|
|
// The same holds for some other font related features/slots.
|
|
|
|
// Thus, we have separate dispatches for "Latin Font", "Latin Font Size", etc,
|
|
|
|
// which are only "virtual", in a sense that there exist no item with this id.
|
|
|
|
// So when we encounter such a dispatcher for, say, "Latin Font", we need to
|
|
|
|
// put an item into the set which has the "Font" id.
|
|
|
|
|
|
|
|
switch ( nSlotId )
|
|
|
|
{
|
|
|
|
case SID_ATTR_CHAR_LATIN_FONT: nSlotId = SID_ATTR_CHAR_FONT; break;
|
|
|
|
case SID_ATTR_CHAR_LATIN_FONTHEIGHT:nSlotId = SID_ATTR_CHAR_FONTHEIGHT; break;
|
|
|
|
case SID_ATTR_CHAR_LATIN_LANGUAGE: nSlotId = SID_ATTR_CHAR_LANGUAGE; break;
|
|
|
|
case SID_ATTR_CHAR_LATIN_POSTURE: nSlotId = SID_ATTR_CHAR_POSTURE; break;
|
|
|
|
case SID_ATTR_CHAR_LATIN_WEIGHT: nSlotId = SID_ATTR_CHAR_WEIGHT; break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
WhichId nWhich = rPool.GetWhich( nSlotId );
|
|
|
|
bool bIsInPool = rPool.IsInRange( nWhich );
|
|
|
|
if ( bIsInPool )
|
|
|
|
{
|
|
|
|
#if OSL_DEBUG_LEVEL > 0
|
|
|
|
bool bFeatureIsEnabled = aFeature->second->isFeatureEnabled();
|
|
|
|
::rtl::OString sMessage( "FmTextControlShell::transferFeatureStatesToItemSet: found a feature state for " );
|
|
|
|
sMessage += sUnoSlotNameAscii;
|
|
|
|
if ( !bFeatureIsEnabled )
|
|
|
|
sMessage += " (disabled)";
|
|
|
|
DBG_TRACE( sMessage );
|
|
|
|
#endif
|
|
|
|
|
|
|
|
lcl_translateUnoStateToItem( nSlotId, aFeature->second->getFeatureState(), _rSet );
|
|
|
|
}
|
|
|
|
#if OSL_DEBUG_LEVEL > 0
|
|
|
|
else
|
|
|
|
{
|
|
|
|
::rtl::OString sMessage( "FmTextControlShell::transferFeatureStatesToItemSet: found a feature state for " );
|
|
|
|
sMessage += sUnoSlotNameAscii;
|
|
|
|
sMessage += ", but could not translate it into an item!";
|
|
|
|
DBG_TRACE( sMessage );
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
void FmTextControlShell::executeAttributeDialog( AttributeSet _eSet, SfxRequest& _rReq )
|
|
|
|
{
|
|
|
|
const SvxFontListItem* pFontList = PTR_CAST( SvxFontListItem, m_pViewFrame->GetObjectShell()->GetItem( SID_ATTR_CHAR_FONTLIST ) );
|
|
|
|
DBG_ASSERT( pFontList, "FmTextControlShell::executeAttributeDialog: no font list item!" );
|
|
|
|
if ( !pFontList )
|
|
|
|
return;
|
|
|
|
|
CWS-TOOLING: integrate CWS aw063
2009-02-12 13:10:24 +0100 aw r267649 : #i99123# when a primitive is invisible, it is not sufficient to produce no output when decomposing, but to add invisible data using HitTestPrimitive2D. This is needed for the slideshow which relies on geometry data in MetaFiles when painting invisible objects
2009-02-12 13:08:39 +0100 aw r267648 : #i99123# do not ignore HitTestPrimitive2D, but draw empty rectangles instead. This is needed since Slideshow is based on getting MetaFile content when painting invisible objects
2009-02-11 16:04:28 +0100 aw r267620 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:04:10 +0100 aw r267619 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:03:56 +0100 aw r267618 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:03:39 +0100 aw r267617 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:03:21 +0100 aw r267615 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:02:48 +0100 aw r267614 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:02:24 +0100 aw r267613 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:02:01 +0100 aw r267612 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:01:32 +0100 aw r267611 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:01:05 +0100 aw r267610 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:00:15 +0100 aw r267608 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 11:27:33 +0100 aw r267585 : #i98788# added missing include for STL
2009-02-10 17:46:50 +0100 aw r267570 : #i98788# added reaction on pool destruction
2009-02-10 17:11:58 +0100 aw r267562 : #i98788# added messaging mechanism to register for pool destruction
2009-02-10 13:35:35 +0100 aw r267549 : #i98788# removing changes, too complicated and risky for 3.1
2009-02-10 12:13:48 +0100 aw r267546 : #i98788# 4th round
2009-02-10 12:13:37 +0100 aw r267545 : #i98788# 4th round
2009-02-10 12:13:26 +0100 aw r267544 : #i98788# 4th round
2009-02-10 12:13:14 +0100 aw r267543 : #i98788# 4th round
2009-02-10 12:13:03 +0100 aw r267542 : #i98788# 4th round
2009-02-10 12:12:50 +0100 aw r267541 : #i98788# 4th round
2009-02-10 12:12:37 +0100 aw r267540 : #i98788# 4th round
2009-02-08 14:38:22 +0100 aw r267495 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:38:06 +0100 aw r267494 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:37:48 +0100 aw r267493 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:37:17 +0100 aw r267492 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:36:56 +0100 aw r267491 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:36:44 +0100 aw r267490 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:36:29 +0100 aw r267489 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:36:16 +0100 aw r267488 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:36:02 +0100 aw r267487 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:35:46 +0100 aw r267486 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-05 12:20:39 +0100 aw r267415 : #i98788# 2nd batch of adaptions for SfxItemPoolHolder addition
2009-02-04 15:12:54 +0100 aw r267385 : #i98788# added newline at EOF
2009-02-04 13:26:04 +0100 aw r267379 : #i98788# make SfxItemPool holdable
2009-02-04 13:25:40 +0100 aw r267378 : #i98788# make SfxItemPool holdable
2009-02-04 13:25:08 +0100 aw r267377 : #i98788# make SfxItemPool holdable
2009-02-04 13:24:42 +0100 aw r267376 : #i98788# make SfxItemPool holdable
2009-02-04 13:23:14 +0100 aw r267375 : #i98788# make SfxItemPool holdable
2009-02-04 13:23:02 +0100 aw r267374 : #i98788# make SfxItemPool holdable
2009-01-29 17:08:31 +0100 aw r267159 : #i97628# completed the fix
2009-01-29 17:08:15 +0100 aw r267158 : #i97628# completed the fix
2009-01-29 14:09:07 +0100 aw r267132 : #i97628# Corrected usage of ParagraphData in headers
2009-01-29 14:06:58 +0100 iha r267131 : #i98344# incorrect font size in charts
2009-01-29 12:13:46 +0100 aw r267115 : #i97628# back to old state; triggers too many errors in other modules
2009-01-29 12:03:51 +0100 aw r267114 : #i97628# enabled exceptions due to STL vector include
2009-01-29 11:21:37 +0100 aw r267107 : #i97628# added needed include
2009-01-28 17:58:29 +0100 aw r267077 : #i97628# first version of newly implemented OutlinerParaObject and adaptions
2009-01-28 17:58:12 +0100 aw r267076 : #i97628# first version of newly implemented OutlinerParaObject and adaptions
2009-01-28 17:57:51 +0100 aw r267074 : #i97628# first version of newly implemented OutlinerParaObject and adaptions
2009-01-28 17:57:21 +0100 aw r267073 : #i97628# first version of newly implemented OutlinerParaObject and adaptions
2009-01-27 17:07:33 +0100 aw r267011 : #i98402# added support for ViewRange when exporting MetaFiles in ObjectContactOfPageView::DoProcessDisplay to avoid to paint too much
2009-01-27 11:45:48 +0100 aw r266973 : #i98404# Added a warning to a place where a conversion to rectangle should not be copied from
2009-01-26 21:44:36 +0100 iha r266949 : #i98497# 3D charts are rendered with wrong size
2009-01-26 20:47:07 +0100 aw r266947 : #i98404# handle BackgroundColorPrimitive2D directly in PixelRenderers and avoid AA under all circumstances
2009-01-26 14:50:36 +0100 aw r266926 : #i98386# secured cloning of SdrObject in IMapUserData by boost::shared_prt usage
2009-01-26 12:51:30 +0100 aw r266916 : #i96581# added separated FontStretching and fallback for small X!=Y scale differences
2009-01-23 16:14:55 +0100 aw r266834 : #i96475# added missing implementation of TextDecoratedPortionPrimitive2D::getB2DRange
2009-01-23 15:24:34 +0100 aw r266826 : #i98405# fixed fallback to DrawAlphaRect to use the correctly sized rectangle
2009-01-23 13:34:43 +0100 aw r266813 : #i96474# fixed impSplitSingleWords for an unexpected case
2009-01-23 10:47:31 +0100 aw r266786 : #i98289#,#i96474# tooling and new flags for tasks
2009-01-23 10:47:20 +0100 aw r266785 : #i98289#,#i96474# tooling and new flags for tasks
2009-01-23 10:47:09 +0100 aw r266783 : #i98289#,#i96474# tooling and new flags for tasks
2009-01-23 10:46:58 +0100 aw r266782 : #i98289#,#i96474# tooling and new flags for tasks
2009-01-23 10:46:48 +0100 aw r266781 : #i98289#,#i96474# tooling and new flags for tasks
2009-03-04 14:16:02 +00:00
|
|
|
SfxItemPool* pPool = EditEngine::CreatePool();
|
|
|
|
pPool->FreezeIdRanges();
|
2009-04-02 15:00:15 +00:00
|
|
|
::std::auto_ptr< SfxItemSet > pPureItems( new SfxItemSet( *pPool ) );
|
CWS-TOOLING: integrate CWS aw063
2009-02-12 13:10:24 +0100 aw r267649 : #i99123# when a primitive is invisible, it is not sufficient to produce no output when decomposing, but to add invisible data using HitTestPrimitive2D. This is needed for the slideshow which relies on geometry data in MetaFiles when painting invisible objects
2009-02-12 13:08:39 +0100 aw r267648 : #i99123# do not ignore HitTestPrimitive2D, but draw empty rectangles instead. This is needed since Slideshow is based on getting MetaFile content when painting invisible objects
2009-02-11 16:04:28 +0100 aw r267620 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:04:10 +0100 aw r267619 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:03:56 +0100 aw r267618 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:03:39 +0100 aw r267617 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:03:21 +0100 aw r267615 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:02:48 +0100 aw r267614 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:02:24 +0100 aw r267613 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:02:01 +0100 aw r267612 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:01:32 +0100 aw r267611 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:01:05 +0100 aw r267610 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:00:15 +0100 aw r267608 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 11:27:33 +0100 aw r267585 : #i98788# added missing include for STL
2009-02-10 17:46:50 +0100 aw r267570 : #i98788# added reaction on pool destruction
2009-02-10 17:11:58 +0100 aw r267562 : #i98788# added messaging mechanism to register for pool destruction
2009-02-10 13:35:35 +0100 aw r267549 : #i98788# removing changes, too complicated and risky for 3.1
2009-02-10 12:13:48 +0100 aw r267546 : #i98788# 4th round
2009-02-10 12:13:37 +0100 aw r267545 : #i98788# 4th round
2009-02-10 12:13:26 +0100 aw r267544 : #i98788# 4th round
2009-02-10 12:13:14 +0100 aw r267543 : #i98788# 4th round
2009-02-10 12:13:03 +0100 aw r267542 : #i98788# 4th round
2009-02-10 12:12:50 +0100 aw r267541 : #i98788# 4th round
2009-02-10 12:12:37 +0100 aw r267540 : #i98788# 4th round
2009-02-08 14:38:22 +0100 aw r267495 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:38:06 +0100 aw r267494 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:37:48 +0100 aw r267493 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:37:17 +0100 aw r267492 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:36:56 +0100 aw r267491 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:36:44 +0100 aw r267490 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:36:29 +0100 aw r267489 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:36:16 +0100 aw r267488 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:36:02 +0100 aw r267487 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:35:46 +0100 aw r267486 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-05 12:20:39 +0100 aw r267415 : #i98788# 2nd batch of adaptions for SfxItemPoolHolder addition
2009-02-04 15:12:54 +0100 aw r267385 : #i98788# added newline at EOF
2009-02-04 13:26:04 +0100 aw r267379 : #i98788# make SfxItemPool holdable
2009-02-04 13:25:40 +0100 aw r267378 : #i98788# make SfxItemPool holdable
2009-02-04 13:25:08 +0100 aw r267377 : #i98788# make SfxItemPool holdable
2009-02-04 13:24:42 +0100 aw r267376 : #i98788# make SfxItemPool holdable
2009-02-04 13:23:14 +0100 aw r267375 : #i98788# make SfxItemPool holdable
2009-02-04 13:23:02 +0100 aw r267374 : #i98788# make SfxItemPool holdable
2009-01-29 17:08:31 +0100 aw r267159 : #i97628# completed the fix
2009-01-29 17:08:15 +0100 aw r267158 : #i97628# completed the fix
2009-01-29 14:09:07 +0100 aw r267132 : #i97628# Corrected usage of ParagraphData in headers
2009-01-29 14:06:58 +0100 iha r267131 : #i98344# incorrect font size in charts
2009-01-29 12:13:46 +0100 aw r267115 : #i97628# back to old state; triggers too many errors in other modules
2009-01-29 12:03:51 +0100 aw r267114 : #i97628# enabled exceptions due to STL vector include
2009-01-29 11:21:37 +0100 aw r267107 : #i97628# added needed include
2009-01-28 17:58:29 +0100 aw r267077 : #i97628# first version of newly implemented OutlinerParaObject and adaptions
2009-01-28 17:58:12 +0100 aw r267076 : #i97628# first version of newly implemented OutlinerParaObject and adaptions
2009-01-28 17:57:51 +0100 aw r267074 : #i97628# first version of newly implemented OutlinerParaObject and adaptions
2009-01-28 17:57:21 +0100 aw r267073 : #i97628# first version of newly implemented OutlinerParaObject and adaptions
2009-01-27 17:07:33 +0100 aw r267011 : #i98402# added support for ViewRange when exporting MetaFiles in ObjectContactOfPageView::DoProcessDisplay to avoid to paint too much
2009-01-27 11:45:48 +0100 aw r266973 : #i98404# Added a warning to a place where a conversion to rectangle should not be copied from
2009-01-26 21:44:36 +0100 iha r266949 : #i98497# 3D charts are rendered with wrong size
2009-01-26 20:47:07 +0100 aw r266947 : #i98404# handle BackgroundColorPrimitive2D directly in PixelRenderers and avoid AA under all circumstances
2009-01-26 14:50:36 +0100 aw r266926 : #i98386# secured cloning of SdrObject in IMapUserData by boost::shared_prt usage
2009-01-26 12:51:30 +0100 aw r266916 : #i96581# added separated FontStretching and fallback for small X!=Y scale differences
2009-01-23 16:14:55 +0100 aw r266834 : #i96475# added missing implementation of TextDecoratedPortionPrimitive2D::getB2DRange
2009-01-23 15:24:34 +0100 aw r266826 : #i98405# fixed fallback to DrawAlphaRect to use the correctly sized rectangle
2009-01-23 13:34:43 +0100 aw r266813 : #i96474# fixed impSplitSingleWords for an unexpected case
2009-01-23 10:47:31 +0100 aw r266786 : #i98289#,#i96474# tooling and new flags for tasks
2009-01-23 10:47:20 +0100 aw r266785 : #i98289#,#i96474# tooling and new flags for tasks
2009-01-23 10:47:09 +0100 aw r266783 : #i98289#,#i96474# tooling and new flags for tasks
2009-01-23 10:46:58 +0100 aw r266782 : #i98289#,#i96474# tooling and new flags for tasks
2009-01-23 10:46:48 +0100 aw r266781 : #i98289#,#i96474# tooling and new flags for tasks
2009-03-04 14:16:02 +00:00
|
|
|
|
2004-05-07 14:48:07 +00:00
|
|
|
// put the current states of the items into the set
|
2009-04-02 15:00:15 +00:00
|
|
|
::std::auto_ptr< SfxAllItemSet > pCurrentItems( new SfxAllItemSet( *pPureItems ) );
|
|
|
|
transferFeatureStatesToItemSet( m_aControlFeatures, *pCurrentItems );
|
2004-05-07 14:48:07 +00:00
|
|
|
|
|
|
|
// additional items, which we are not responsible for at the SfxShell level,
|
|
|
|
// but which need to be forwarded to the dialog, anyway
|
|
|
|
ControlFeatures aAdditionalFestures;
|
|
|
|
fillFeatureDispatchers( m_xActiveControl, pDialogSlots, aAdditionalFestures );
|
2009-04-02 15:00:15 +00:00
|
|
|
transferFeatureStatesToItemSet( aAdditionalFestures, *pCurrentItems, true );
|
2004-05-07 14:48:07 +00:00
|
|
|
|
|
|
|
::std::auto_ptr< SfxTabDialog > pDialog ( _eSet == eCharAttribs
|
2009-04-02 15:00:15 +00:00
|
|
|
? static_cast< SfxTabDialog* >( new TextControlCharAttribDialog( NULL, *pCurrentItems, *pFontList ) )
|
|
|
|
: static_cast< SfxTabDialog* >( new TextControlParaAttribDialog( NULL, *pCurrentItems ) ) );
|
2004-05-07 14:48:07 +00:00
|
|
|
if ( RET_OK == pDialog->Execute() )
|
|
|
|
{
|
|
|
|
const SfxItemSet& rModifiedItems = *pDialog->GetOutputItemSet();
|
|
|
|
for ( WhichId nWhich = pPool->GetFirstWhich(); nWhich <= pPool->GetLastWhich(); ++nWhich )
|
|
|
|
{
|
|
|
|
if ( rModifiedItems.GetItemState( nWhich ) == SFX_ITEM_SET )
|
|
|
|
{
|
|
|
|
SfxSlotId nSlotForItemSet = pPool->GetSlotId( nWhich );
|
|
|
|
const SfxPoolItem* pModifiedItem = rModifiedItems.GetItem( nWhich );
|
|
|
|
|
|
|
|
|
|
|
|
SfxSlotId nSlotForDispatcher = nSlotForItemSet;
|
|
|
|
switch ( nSlotForDispatcher )
|
|
|
|
{
|
|
|
|
case SID_ATTR_CHAR_FONT: nSlotForDispatcher = SID_ATTR_CHAR_LATIN_FONT; break;
|
|
|
|
case SID_ATTR_CHAR_FONTHEIGHT:nSlotForDispatcher = SID_ATTR_CHAR_LATIN_FONTHEIGHT; break;
|
|
|
|
case SID_ATTR_CHAR_LANGUAGE: nSlotForDispatcher = SID_ATTR_CHAR_LATIN_LANGUAGE; break;
|
|
|
|
case SID_ATTR_CHAR_POSTURE: nSlotForDispatcher = SID_ATTR_CHAR_LATIN_POSTURE; break;
|
|
|
|
case SID_ATTR_CHAR_WEIGHT: nSlotForDispatcher = SID_ATTR_CHAR_LATIN_WEIGHT; break;
|
|
|
|
}
|
|
|
|
|
|
|
|
// do we already have a dispatcher for this slot/feature?
|
|
|
|
ControlFeatures::const_iterator aFeaturePos = m_aControlFeatures.find( nSlotForDispatcher );
|
|
|
|
bool bFound = aFeaturePos != m_aControlFeatures.end( );
|
|
|
|
|
|
|
|
if ( !bFound )
|
|
|
|
{
|
|
|
|
aFeaturePos = aAdditionalFestures.find( nSlotForDispatcher );
|
|
|
|
bFound = aFeaturePos != aAdditionalFestures.end( );
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( bFound )
|
|
|
|
{
|
|
|
|
Sequence< PropertyValue > aArgs;
|
|
|
|
// temporarily put the modified item into a "clean" set,
|
|
|
|
// and let TransformItems calc the respective UNO parameters
|
2009-04-02 15:00:15 +00:00
|
|
|
pPureItems->Put( *pModifiedItem );
|
|
|
|
TransformItems( nSlotForItemSet, *pPureItems, aArgs );
|
|
|
|
pPureItems->ClearItem( nWhich );
|
2004-05-07 14:48:07 +00:00
|
|
|
|
|
|
|
if ( ( nSlotForItemSet == SID_ATTR_PARA_HANGPUNCTUATION )
|
|
|
|
|| ( nSlotForItemSet == SID_ATTR_PARA_FORBIDDEN_RULES )
|
|
|
|
|| ( nSlotForItemSet == SID_ATTR_PARA_SCRIPTSPACE )
|
|
|
|
)
|
|
|
|
{
|
|
|
|
// these are no UNO slots, they need special handling since TransformItems cannot
|
|
|
|
// handle them
|
|
|
|
DBG_ASSERT( aArgs.getLength() == 0, "FmTextControlShell::executeAttributeDialog: these are no UNO slots - are they?" );
|
|
|
|
|
|
|
|
const SfxBoolItem* pBoolItem = PTR_CAST( SfxBoolItem, pModifiedItem );
|
|
|
|
DBG_ASSERT( pBoolItem, "FmTextControlShell::executeAttributeDialog: no bool item?!" );
|
|
|
|
if ( pBoolItem )
|
|
|
|
{
|
|
|
|
aArgs.realloc( 1 );
|
|
|
|
aArgs[ 0 ].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Enable" ) );
|
|
|
|
aArgs[ 0 ].Value <<= (sal_Bool)pBoolItem->GetValue();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// dispatch this
|
|
|
|
aFeaturePos->second->dispatch( aArgs );
|
|
|
|
}
|
|
|
|
#if OSL_DEBUG_LEVEL > 0
|
|
|
|
else
|
|
|
|
{
|
|
|
|
::rtl::OString sError( "FmTextControShell::executeAttributeDialog: Could not handle the following item:" );
|
|
|
|
sError += "\n SlotID: "; sError += ::rtl::OString::valueOf( (sal_Int32)nSlotForItemSet );
|
|
|
|
sError += "\n WhichID: "; sError += ::rtl::OString::valueOf( (sal_Int32)nWhich );
|
|
|
|
sError += "\n UNO name: ";
|
|
|
|
|
|
|
|
::rtl::OUString sUnoSlotName = lcl_getUnoSlotName( *SFX_APP(), nSlotForItemSet );
|
|
|
|
if ( sUnoSlotName.getLength() )
|
|
|
|
sError += ::rtl::OString( sUnoSlotName.getStr(), sUnoSlotName.getLength(), RTL_TEXTENCODING_ASCII_US );
|
|
|
|
else
|
|
|
|
sError += "unknown (no SfxSlot)";
|
|
|
|
DBG_ERROR( sError.getStr() );
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
}
|
|
|
|
_rReq.Done( rModifiedItems );
|
|
|
|
}
|
CWS-TOOLING: integrate CWS aw063
2009-02-12 13:10:24 +0100 aw r267649 : #i99123# when a primitive is invisible, it is not sufficient to produce no output when decomposing, but to add invisible data using HitTestPrimitive2D. This is needed for the slideshow which relies on geometry data in MetaFiles when painting invisible objects
2009-02-12 13:08:39 +0100 aw r267648 : #i99123# do not ignore HitTestPrimitive2D, but draw empty rectangles instead. This is needed since Slideshow is based on getting MetaFile content when painting invisible objects
2009-02-11 16:04:28 +0100 aw r267620 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:04:10 +0100 aw r267619 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:03:56 +0100 aw r267618 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:03:39 +0100 aw r267617 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:03:21 +0100 aw r267615 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:02:48 +0100 aw r267614 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:02:24 +0100 aw r267613 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:02:01 +0100 aw r267612 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:01:32 +0100 aw r267611 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:01:05 +0100 aw r267610 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:00:15 +0100 aw r267608 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 11:27:33 +0100 aw r267585 : #i98788# added missing include for STL
2009-02-10 17:46:50 +0100 aw r267570 : #i98788# added reaction on pool destruction
2009-02-10 17:11:58 +0100 aw r267562 : #i98788# added messaging mechanism to register for pool destruction
2009-02-10 13:35:35 +0100 aw r267549 : #i98788# removing changes, too complicated and risky for 3.1
2009-02-10 12:13:48 +0100 aw r267546 : #i98788# 4th round
2009-02-10 12:13:37 +0100 aw r267545 : #i98788# 4th round
2009-02-10 12:13:26 +0100 aw r267544 : #i98788# 4th round
2009-02-10 12:13:14 +0100 aw r267543 : #i98788# 4th round
2009-02-10 12:13:03 +0100 aw r267542 : #i98788# 4th round
2009-02-10 12:12:50 +0100 aw r267541 : #i98788# 4th round
2009-02-10 12:12:37 +0100 aw r267540 : #i98788# 4th round
2009-02-08 14:38:22 +0100 aw r267495 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:38:06 +0100 aw r267494 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:37:48 +0100 aw r267493 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:37:17 +0100 aw r267492 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:36:56 +0100 aw r267491 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:36:44 +0100 aw r267490 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:36:29 +0100 aw r267489 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:36:16 +0100 aw r267488 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:36:02 +0100 aw r267487 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:35:46 +0100 aw r267486 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-05 12:20:39 +0100 aw r267415 : #i98788# 2nd batch of adaptions for SfxItemPoolHolder addition
2009-02-04 15:12:54 +0100 aw r267385 : #i98788# added newline at EOF
2009-02-04 13:26:04 +0100 aw r267379 : #i98788# make SfxItemPool holdable
2009-02-04 13:25:40 +0100 aw r267378 : #i98788# make SfxItemPool holdable
2009-02-04 13:25:08 +0100 aw r267377 : #i98788# make SfxItemPool holdable
2009-02-04 13:24:42 +0100 aw r267376 : #i98788# make SfxItemPool holdable
2009-02-04 13:23:14 +0100 aw r267375 : #i98788# make SfxItemPool holdable
2009-02-04 13:23:02 +0100 aw r267374 : #i98788# make SfxItemPool holdable
2009-01-29 17:08:31 +0100 aw r267159 : #i97628# completed the fix
2009-01-29 17:08:15 +0100 aw r267158 : #i97628# completed the fix
2009-01-29 14:09:07 +0100 aw r267132 : #i97628# Corrected usage of ParagraphData in headers
2009-01-29 14:06:58 +0100 iha r267131 : #i98344# incorrect font size in charts
2009-01-29 12:13:46 +0100 aw r267115 : #i97628# back to old state; triggers too many errors in other modules
2009-01-29 12:03:51 +0100 aw r267114 : #i97628# enabled exceptions due to STL vector include
2009-01-29 11:21:37 +0100 aw r267107 : #i97628# added needed include
2009-01-28 17:58:29 +0100 aw r267077 : #i97628# first version of newly implemented OutlinerParaObject and adaptions
2009-01-28 17:58:12 +0100 aw r267076 : #i97628# first version of newly implemented OutlinerParaObject and adaptions
2009-01-28 17:57:51 +0100 aw r267074 : #i97628# first version of newly implemented OutlinerParaObject and adaptions
2009-01-28 17:57:21 +0100 aw r267073 : #i97628# first version of newly implemented OutlinerParaObject and adaptions
2009-01-27 17:07:33 +0100 aw r267011 : #i98402# added support for ViewRange when exporting MetaFiles in ObjectContactOfPageView::DoProcessDisplay to avoid to paint too much
2009-01-27 11:45:48 +0100 aw r266973 : #i98404# Added a warning to a place where a conversion to rectangle should not be copied from
2009-01-26 21:44:36 +0100 iha r266949 : #i98497# 3D charts are rendered with wrong size
2009-01-26 20:47:07 +0100 aw r266947 : #i98404# handle BackgroundColorPrimitive2D directly in PixelRenderers and avoid AA under all circumstances
2009-01-26 14:50:36 +0100 aw r266926 : #i98386# secured cloning of SdrObject in IMapUserData by boost::shared_prt usage
2009-01-26 12:51:30 +0100 aw r266916 : #i96581# added separated FontStretching and fallback for small X!=Y scale differences
2009-01-23 16:14:55 +0100 aw r266834 : #i96475# added missing implementation of TextDecoratedPortionPrimitive2D::getB2DRange
2009-01-23 15:24:34 +0100 aw r266826 : #i98405# fixed fallback to DrawAlphaRect to use the correctly sized rectangle
2009-01-23 13:34:43 +0100 aw r266813 : #i96474# fixed impSplitSingleWords for an unexpected case
2009-01-23 10:47:31 +0100 aw r266786 : #i98289#,#i96474# tooling and new flags for tasks
2009-01-23 10:47:20 +0100 aw r266785 : #i98289#,#i96474# tooling and new flags for tasks
2009-01-23 10:47:09 +0100 aw r266783 : #i98289#,#i96474# tooling and new flags for tasks
2009-01-23 10:46:58 +0100 aw r266782 : #i98289#,#i96474# tooling and new flags for tasks
2009-01-23 10:46:48 +0100 aw r266781 : #i98289#,#i96474# tooling and new flags for tasks
2009-03-04 14:16:02 +00:00
|
|
|
|
2009-04-02 15:00:15 +00:00
|
|
|
pDialog.reset();
|
|
|
|
pCurrentItems.reset();
|
|
|
|
pPureItems.reset();
|
CWS-TOOLING: integrate CWS aw063
2009-02-12 13:10:24 +0100 aw r267649 : #i99123# when a primitive is invisible, it is not sufficient to produce no output when decomposing, but to add invisible data using HitTestPrimitive2D. This is needed for the slideshow which relies on geometry data in MetaFiles when painting invisible objects
2009-02-12 13:08:39 +0100 aw r267648 : #i99123# do not ignore HitTestPrimitive2D, but draw empty rectangles instead. This is needed since Slideshow is based on getting MetaFile content when painting invisible objects
2009-02-11 16:04:28 +0100 aw r267620 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:04:10 +0100 aw r267619 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:03:56 +0100 aw r267618 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:03:39 +0100 aw r267617 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:03:21 +0100 aw r267615 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:02:48 +0100 aw r267614 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:02:24 +0100 aw r267613 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:02:01 +0100 aw r267612 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:01:32 +0100 aw r267611 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:01:05 +0100 aw r267610 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:00:15 +0100 aw r267608 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 11:27:33 +0100 aw r267585 : #i98788# added missing include for STL
2009-02-10 17:46:50 +0100 aw r267570 : #i98788# added reaction on pool destruction
2009-02-10 17:11:58 +0100 aw r267562 : #i98788# added messaging mechanism to register for pool destruction
2009-02-10 13:35:35 +0100 aw r267549 : #i98788# removing changes, too complicated and risky for 3.1
2009-02-10 12:13:48 +0100 aw r267546 : #i98788# 4th round
2009-02-10 12:13:37 +0100 aw r267545 : #i98788# 4th round
2009-02-10 12:13:26 +0100 aw r267544 : #i98788# 4th round
2009-02-10 12:13:14 +0100 aw r267543 : #i98788# 4th round
2009-02-10 12:13:03 +0100 aw r267542 : #i98788# 4th round
2009-02-10 12:12:50 +0100 aw r267541 : #i98788# 4th round
2009-02-10 12:12:37 +0100 aw r267540 : #i98788# 4th round
2009-02-08 14:38:22 +0100 aw r267495 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:38:06 +0100 aw r267494 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:37:48 +0100 aw r267493 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:37:17 +0100 aw r267492 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:36:56 +0100 aw r267491 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:36:44 +0100 aw r267490 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:36:29 +0100 aw r267489 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:36:16 +0100 aw r267488 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:36:02 +0100 aw r267487 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:35:46 +0100 aw r267486 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-05 12:20:39 +0100 aw r267415 : #i98788# 2nd batch of adaptions for SfxItemPoolHolder addition
2009-02-04 15:12:54 +0100 aw r267385 : #i98788# added newline at EOF
2009-02-04 13:26:04 +0100 aw r267379 : #i98788# make SfxItemPool holdable
2009-02-04 13:25:40 +0100 aw r267378 : #i98788# make SfxItemPool holdable
2009-02-04 13:25:08 +0100 aw r267377 : #i98788# make SfxItemPool holdable
2009-02-04 13:24:42 +0100 aw r267376 : #i98788# make SfxItemPool holdable
2009-02-04 13:23:14 +0100 aw r267375 : #i98788# make SfxItemPool holdable
2009-02-04 13:23:02 +0100 aw r267374 : #i98788# make SfxItemPool holdable
2009-01-29 17:08:31 +0100 aw r267159 : #i97628# completed the fix
2009-01-29 17:08:15 +0100 aw r267158 : #i97628# completed the fix
2009-01-29 14:09:07 +0100 aw r267132 : #i97628# Corrected usage of ParagraphData in headers
2009-01-29 14:06:58 +0100 iha r267131 : #i98344# incorrect font size in charts
2009-01-29 12:13:46 +0100 aw r267115 : #i97628# back to old state; triggers too many errors in other modules
2009-01-29 12:03:51 +0100 aw r267114 : #i97628# enabled exceptions due to STL vector include
2009-01-29 11:21:37 +0100 aw r267107 : #i97628# added needed include
2009-01-28 17:58:29 +0100 aw r267077 : #i97628# first version of newly implemented OutlinerParaObject and adaptions
2009-01-28 17:58:12 +0100 aw r267076 : #i97628# first version of newly implemented OutlinerParaObject and adaptions
2009-01-28 17:57:51 +0100 aw r267074 : #i97628# first version of newly implemented OutlinerParaObject and adaptions
2009-01-28 17:57:21 +0100 aw r267073 : #i97628# first version of newly implemented OutlinerParaObject and adaptions
2009-01-27 17:07:33 +0100 aw r267011 : #i98402# added support for ViewRange when exporting MetaFiles in ObjectContactOfPageView::DoProcessDisplay to avoid to paint too much
2009-01-27 11:45:48 +0100 aw r266973 : #i98404# Added a warning to a place where a conversion to rectangle should not be copied from
2009-01-26 21:44:36 +0100 iha r266949 : #i98497# 3D charts are rendered with wrong size
2009-01-26 20:47:07 +0100 aw r266947 : #i98404# handle BackgroundColorPrimitive2D directly in PixelRenderers and avoid AA under all circumstances
2009-01-26 14:50:36 +0100 aw r266926 : #i98386# secured cloning of SdrObject in IMapUserData by boost::shared_prt usage
2009-01-26 12:51:30 +0100 aw r266916 : #i96581# added separated FontStretching and fallback for small X!=Y scale differences
2009-01-23 16:14:55 +0100 aw r266834 : #i96475# added missing implementation of TextDecoratedPortionPrimitive2D::getB2DRange
2009-01-23 15:24:34 +0100 aw r266826 : #i98405# fixed fallback to DrawAlphaRect to use the correctly sized rectangle
2009-01-23 13:34:43 +0100 aw r266813 : #i96474# fixed impSplitSingleWords for an unexpected case
2009-01-23 10:47:31 +0100 aw r266786 : #i98289#,#i96474# tooling and new flags for tasks
2009-01-23 10:47:20 +0100 aw r266785 : #i98289#,#i96474# tooling and new flags for tasks
2009-01-23 10:47:09 +0100 aw r266783 : #i98289#,#i96474# tooling and new flags for tasks
2009-01-23 10:46:58 +0100 aw r266782 : #i98289#,#i96474# tooling and new flags for tasks
2009-01-23 10:46:48 +0100 aw r266781 : #i98289#,#i96474# tooling and new flags for tasks
2009-03-04 14:16:02 +00:00
|
|
|
SfxItemPool::Free(pPool);
|
2004-05-07 14:48:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
bool FmTextControlShell::executeSelectAll( )
|
|
|
|
{
|
|
|
|
try
|
|
|
|
{
|
|
|
|
if ( m_xActiveTextComponent.is() )
|
|
|
|
{
|
|
|
|
sal_Int32 nTextLen = m_xActiveTextComponent->getText().getLength();
|
|
|
|
m_xActiveTextComponent->setSelection( awt::Selection( 0, nTextLen ) );
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch( const Exception& )
|
|
|
|
{
|
2008-12-01 12:31:27 +00:00
|
|
|
DBG_UNHANDLED_EXCEPTION();
|
2004-05-07 14:48:07 +00:00
|
|
|
}
|
|
|
|
return false; // not handled
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
bool FmTextControlShell::executeClipboardSlot( SfxSlotId _nSlot )
|
|
|
|
{
|
|
|
|
try
|
|
|
|
{
|
|
|
|
if ( m_xActiveTextComponent.is() )
|
|
|
|
{
|
|
|
|
switch ( _nSlot )
|
|
|
|
{
|
|
|
|
case SID_COPY:
|
|
|
|
case SID_CUT:
|
|
|
|
{
|
|
|
|
::rtl::OUString sSelectedText( m_xActiveTextComponent->getSelectedText() );
|
|
|
|
::svt::OStringTransfer::CopyString( sSelectedText, lcl_getWindow( m_xActiveControl ) );
|
|
|
|
if ( SID_CUT == _nSlot )
|
|
|
|
{
|
|
|
|
awt::Selection aSelection( m_xActiveTextComponent->getSelection() );
|
|
|
|
m_xActiveTextComponent->insertText( aSelection, ::rtl::OUString() );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case SID_PASTE:
|
|
|
|
{
|
|
|
|
::rtl::OUString sClipboardContent;
|
|
|
|
OSL_VERIFY( ::svt::OStringTransfer::PasteString( sClipboardContent, lcl_getWindow( m_xActiveControl ) ) );
|
|
|
|
awt::Selection aSelection( m_xActiveTextComponent->getSelection() );
|
|
|
|
m_xActiveTextComponent->insertText( aSelection, sClipboardContent );
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
OSL_ENSURE( sal_False, "FmTextControlShell::executeClipboardSlot: invalid slot!" );
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch( const Exception& )
|
|
|
|
{
|
2008-12-01 12:31:27 +00:00
|
|
|
DBG_UNHANDLED_EXCEPTION();
|
2004-05-07 14:48:07 +00:00
|
|
|
}
|
|
|
|
return false; // not handled
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
void FmTextControlShell::ExecuteTextAttribute( SfxRequest& _rReq )
|
|
|
|
{
|
|
|
|
SfxSlotId nSlot = _rReq.GetSlot();
|
|
|
|
|
|
|
|
ControlFeatures::const_iterator aFeaturePos = m_aControlFeatures.find( nSlot );
|
|
|
|
if ( aFeaturePos == m_aControlFeatures.end() )
|
|
|
|
{
|
|
|
|
// special slots
|
|
|
|
switch ( nSlot )
|
|
|
|
{
|
|
|
|
case SID_CHAR_DLG:
|
|
|
|
executeAttributeDialog( eCharAttribs, _rReq );
|
|
|
|
break;
|
|
|
|
|
|
|
|
case SID_PARA_DLG:
|
|
|
|
executeAttributeDialog( eParaAttribs, _rReq );
|
|
|
|
break;
|
|
|
|
|
|
|
|
case SID_SELECTALL:
|
|
|
|
executeSelectAll();
|
|
|
|
break;
|
|
|
|
|
|
|
|
case SID_CUT:
|
|
|
|
case SID_COPY:
|
|
|
|
case SID_PASTE:
|
|
|
|
executeClipboardSlot( nSlot );
|
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
DBG_ASSERT( aFeaturePos != m_aControlFeatures.end(), "FmTextControShell::ExecuteTextAttribute: I have no such dispatcher, and cannot handle it at all!" );
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
// slots which are dispatched to the control
|
|
|
|
|
|
|
|
switch ( nSlot )
|
|
|
|
{
|
|
|
|
case SID_ATTR_CHAR_STRIKEOUT:
|
|
|
|
case SID_ATTR_CHAR_UNDERLINE:
|
2009-01-05 17:49:45 +00:00
|
|
|
case SID_ATTR_CHAR_OVERLINE:
|
2004-05-07 14:48:07 +00:00
|
|
|
{
|
|
|
|
SfxItemSet aToggled( *_rReq.GetArgs() );
|
|
|
|
|
|
|
|
lcl_translateUnoStateToItem( nSlot, aFeaturePos->second->getFeatureState(), aToggled );
|
|
|
|
WhichId nWhich = aToggled.GetPool()->GetWhich( nSlot );
|
|
|
|
const SfxPoolItem* pItem = aToggled.GetItem( nWhich );
|
2009-01-05 17:49:45 +00:00
|
|
|
if ( ( SID_ATTR_CHAR_UNDERLINE == nSlot ) || ( SID_ATTR_CHAR_OVERLINE == nSlot ) )
|
2004-05-07 14:48:07 +00:00
|
|
|
{
|
2009-01-05 17:49:45 +00:00
|
|
|
const SvxOverlineItem* pTextLine = PTR_CAST( SvxOverlineItem, pItem );
|
|
|
|
DBG_ASSERT( pTextLine, "FmTextControlShell::ExecuteTextAttribute: ooops - no underline/overline item!" );
|
|
|
|
if ( pTextLine )
|
2004-05-07 14:48:07 +00:00
|
|
|
{
|
2009-01-05 17:49:45 +00:00
|
|
|
FontUnderline eTL = pTextLine->GetLineStyle();
|
|
|
|
if ( SID_ATTR_CHAR_UNDERLINE == nSlot ) {
|
|
|
|
aToggled.Put( SvxUnderlineItem( eTL == UNDERLINE_SINGLE ? UNDERLINE_NONE : UNDERLINE_SINGLE, nWhich ) );
|
|
|
|
} else {
|
|
|
|
aToggled.Put( SvxOverlineItem( eTL == UNDERLINE_SINGLE ? UNDERLINE_NONE : UNDERLINE_SINGLE, nWhich ) );
|
|
|
|
}
|
2004-05-07 14:48:07 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
const SvxCrossedOutItem* pCrossedOut = PTR_CAST( SvxCrossedOutItem, pItem );
|
|
|
|
DBG_ASSERT( pCrossedOut, "FmTextControlShell::ExecuteTextAttribute: ooops - no CrossedOut item!" );
|
|
|
|
if ( pCrossedOut )
|
|
|
|
{
|
|
|
|
FontStrikeout eFS = pCrossedOut->GetStrikeout();
|
|
|
|
aToggled.Put( SvxCrossedOutItem( eFS == STRIKEOUT_SINGLE ? STRIKEOUT_NONE : STRIKEOUT_SINGLE, nWhich ) );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
Sequence< PropertyValue > aArguments;
|
|
|
|
TransformItems( nSlot, aToggled, aArguments );
|
|
|
|
aFeaturePos->second->dispatch( aArguments );
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case SID_ATTR_CHAR_FONTHEIGHT:
|
|
|
|
case SID_ATTR_CHAR_FONT:
|
|
|
|
case SID_ATTR_CHAR_POSTURE:
|
|
|
|
case SID_ATTR_CHAR_WEIGHT:
|
|
|
|
case SID_ATTR_CHAR_SHADOWED:
|
|
|
|
case SID_ATTR_CHAR_CONTOUR:
|
|
|
|
case SID_SET_SUPER_SCRIPT:
|
|
|
|
case SID_SET_SUB_SCRIPT:
|
|
|
|
{
|
|
|
|
const SfxItemSet* pArgs = _rReq.GetArgs();
|
|
|
|
Sequence< PropertyValue > aArgs;
|
|
|
|
if ( pArgs )
|
|
|
|
TransformItems( nSlot, *pArgs, aArgs );
|
|
|
|
aFeaturePos->second->dispatch( aArgs );
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
if ( aFeaturePos->second->isFeatureEnabled() )
|
|
|
|
aFeaturePos->second->dispatch();
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
_rReq.Done();
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
void FmTextControlShell::GetTextAttributeState( SfxItemSet& _rSet )
|
|
|
|
{
|
|
|
|
SfxWhichIter aIter( _rSet );
|
|
|
|
sal_uInt16 nSlot = aIter.FirstWhich();
|
|
|
|
while ( nSlot )
|
|
|
|
{
|
|
|
|
if ( ( nSlot == SID_ATTR_PARA_LEFT_TO_RIGHT )
|
|
|
|
|| ( nSlot == SID_ATTR_PARA_RIGHT_TO_LEFT )
|
|
|
|
)
|
|
|
|
{
|
|
|
|
if ( !SvtLanguageOptions().IsCTLFontEnabled() )
|
|
|
|
{
|
|
|
|
_rSet.DisableItem( nSlot );
|
|
|
|
nSlot = aIter.NextWhich();
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
ControlFeatures::const_iterator aFeaturePos = m_aControlFeatures.find( nSlot );
|
|
|
|
if ( aFeaturePos != m_aControlFeatures.end() )
|
|
|
|
{
|
|
|
|
if ( aFeaturePos->second->isFeatureEnabled() )
|
|
|
|
lcl_translateUnoStateToItem( nSlot, aFeaturePos->second->getFeatureState(), _rSet );
|
|
|
|
else
|
|
|
|
_rSet.DisableItem( nSlot );
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
bool bDisable = false;
|
|
|
|
|
|
|
|
bool bNeedWriteableControl = false;
|
|
|
|
bool bNeedTextComponent = false;
|
|
|
|
bool bNeedSelection = false;
|
|
|
|
|
|
|
|
switch ( nSlot )
|
|
|
|
{
|
|
|
|
case SID_CHAR_DLG:
|
|
|
|
case SID_PARA_DLG:
|
|
|
|
bDisable |= m_aControlFeatures.empty();
|
|
|
|
bNeedWriteableControl = true;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case SID_CUT:
|
|
|
|
bNeedSelection = true;
|
|
|
|
bNeedTextComponent = true;
|
|
|
|
bNeedWriteableControl = true;
|
|
|
|
DBG_TRACE( "FmTextControlShell::ClipBoard: need to invalidate again" );
|
|
|
|
m_bNeedClipboardInvalidation = true;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case SID_PASTE:
|
|
|
|
{
|
|
|
|
Window* pActiveControlVCLWindow = lcl_getWindow( m_xActiveControl );
|
|
|
|
if ( pActiveControlVCLWindow )
|
|
|
|
{
|
|
|
|
TransferableDataHelper aDataHelper( TransferableDataHelper::CreateFromSystemClipboard( pActiveControlVCLWindow) );
|
|
|
|
bDisable |= !aDataHelper.HasFormat( SOT_FORMAT_STRING );
|
|
|
|
}
|
|
|
|
else
|
|
|
|
bDisable |= true;
|
|
|
|
|
|
|
|
bNeedTextComponent = true;
|
|
|
|
bNeedWriteableControl = true;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case SID_COPY:
|
|
|
|
bNeedTextComponent = true;
|
|
|
|
bNeedSelection = true;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case SID_SELECTALL:
|
|
|
|
bNeedTextComponent = true;
|
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
// slot is unknown at all
|
|
|
|
bDisable |= true;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
OSL_POSTCOND( !bNeedSelection || bNeedTextComponent, "FmTextControlShell::GetTextAttributeState: bNeedSelection should imply bNeedTextComponent!" );
|
|
|
|
|
|
|
|
if ( !bDisable && bNeedWriteableControl )
|
|
|
|
bDisable |= !IsActiveControl( ) || m_bActiveControlIsReadOnly;
|
|
|
|
|
|
|
|
if ( !bDisable && bNeedTextComponent )
|
|
|
|
bDisable |= !m_xActiveTextComponent.is();
|
|
|
|
|
|
|
|
if ( !bDisable && bNeedSelection )
|
|
|
|
{
|
|
|
|
awt::Selection aSelection = m_xActiveTextComponent->getSelection();
|
|
|
|
bDisable |= aSelection.Min == aSelection.Max;
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( bDisable )
|
|
|
|
_rSet.DisableItem( nSlot );
|
|
|
|
}
|
|
|
|
|
|
|
|
nSlot = aIter.NextWhich();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
bool FmTextControlShell::IsActiveControl( bool _bCountRichTextOnly ) const
|
|
|
|
{
|
2005-07-08 09:34:05 +00:00
|
|
|
if ( _bCountRichTextOnly && !m_bActiveControlIsRichText )
|
2004-05-07 14:48:07 +00:00
|
|
|
return false;
|
|
|
|
|
|
|
|
return m_bActiveControl;
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
void FmTextControlShell::dispose()
|
|
|
|
{
|
|
|
|
if ( IsActiveControl() )
|
|
|
|
controlDeactivated();
|
|
|
|
if ( isControllerListening() )
|
|
|
|
stopControllerListening();
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
2006-06-19 14:58:38 +00:00
|
|
|
void FmTextControlShell::designModeChanged( bool /*_bNewDesignMode*/ )
|
2004-05-07 14:48:07 +00:00
|
|
|
{
|
|
|
|
m_rBindings.Invalidate( pTextControlSlots );
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
void FmTextControlShell::formActivated( const Reference< XFormController >& _rxController )
|
|
|
|
{
|
|
|
|
#if OSL_DEBUG_LEVEL > 0
|
|
|
|
::rtl::OString sTrace( "FmTextControlShell::formActivated: 0x" );
|
2005-12-28 16:37:15 +00:00
|
|
|
sTrace += ::rtl::OString::valueOf( (sal_IntPtr)_rxController.get(), 16 );
|
2004-05-07 14:48:07 +00:00
|
|
|
DBG_TRACE( sTrace );
|
|
|
|
#endif
|
|
|
|
|
|
|
|
DBG_ASSERT( _rxController.is(), "FmTextControlShell::formActivated: invalid controller!" );
|
|
|
|
if ( !_rxController.is() )
|
|
|
|
return;
|
|
|
|
|
2008-12-01 12:31:27 +00:00
|
|
|
// sometimes, a form controller notifies activations, even if it's already activated
|
|
|
|
if ( m_xActiveController == _rxController )
|
|
|
|
return;
|
|
|
|
|
2004-05-07 14:48:07 +00:00
|
|
|
try
|
|
|
|
{
|
|
|
|
startControllerListening( _rxController );
|
|
|
|
controlActivated( _rxController->getCurrentControl() );
|
|
|
|
}
|
|
|
|
catch( const Exception& )
|
|
|
|
{
|
2008-12-01 12:31:27 +00:00
|
|
|
DBG_UNHANDLED_EXCEPTION();
|
2004-05-07 14:48:07 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
void FmTextControlShell::formDeactivated( const Reference< XFormController >& _rxController )
|
|
|
|
{
|
|
|
|
#if OSL_DEBUG_LEVEL > 0
|
|
|
|
::rtl::OString sTrace( "FmTextControlShell::formDeactivated: 0x" );
|
2005-12-28 16:37:15 +00:00
|
|
|
sTrace += ::rtl::OString::valueOf( (sal_IntPtr)_rxController.get(), 16 );
|
2004-05-07 14:48:07 +00:00
|
|
|
DBG_TRACE( sTrace );
|
|
|
|
#endif
|
2006-06-19 14:58:38 +00:00
|
|
|
(void)_rxController;
|
2004-05-07 14:48:07 +00:00
|
|
|
|
|
|
|
if ( IsActiveControl() )
|
|
|
|
controlDeactivated();
|
|
|
|
if ( isControllerListening() )
|
|
|
|
stopControllerListening();
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
void FmTextControlShell::startControllerListening( const Reference< XFormController >& _rxController )
|
|
|
|
{
|
2008-12-01 12:31:27 +00:00
|
|
|
OSL_PRECOND( _rxController.is(), "FmTextControlShell::startControllerListening: invalid controller!" );
|
2004-05-07 14:48:07 +00:00
|
|
|
if ( !_rxController.is() )
|
|
|
|
return;
|
|
|
|
|
2008-12-01 12:31:27 +00:00
|
|
|
OSL_PRECOND( !isControllerListening(), "FmTextControlShell::startControllerListening: already listening!" );
|
2004-05-07 14:48:07 +00:00
|
|
|
if ( isControllerListening() )
|
|
|
|
stopControllerListening( );
|
|
|
|
DBG_ASSERT( !isControllerListening(), "FmTextControlShell::startControllerListening: inconsistence!" );
|
|
|
|
|
|
|
|
try
|
|
|
|
{
|
|
|
|
Sequence< Reference< XControl > > aControls( _rxController->getControls() );
|
|
|
|
m_aControlObservers.resize( 0 );
|
|
|
|
m_aControlObservers.reserve( aControls.getLength() );
|
|
|
|
|
|
|
|
const Reference< XControl >* pControls = aControls.getConstArray();
|
|
|
|
const Reference< XControl >* pControlsEnd = pControls + aControls.getLength();
|
|
|
|
for ( ; pControls != pControlsEnd; ++pControls )
|
|
|
|
{
|
|
|
|
m_aControlObservers.push_back( FocusListenerAdapter( new FmFocusListenerAdapter( *pControls, this ) ) );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch( const Exception& )
|
|
|
|
{
|
2008-12-01 12:31:27 +00:00
|
|
|
DBG_UNHANDLED_EXCEPTION();
|
2004-05-07 14:48:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
m_xActiveController = _rxController;
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
void FmTextControlShell::stopControllerListening( )
|
|
|
|
{
|
2008-12-01 12:31:27 +00:00
|
|
|
OSL_PRECOND( isControllerListening(), "FmTextControlShell::stopControllerListening: inconsistence!" );
|
2004-05-07 14:48:07 +00:00
|
|
|
|
|
|
|
// dispose all listeners associated with the controls of the active controller
|
|
|
|
for ( FocusListenerAdapters::iterator aLoop = m_aControlObservers.begin();
|
|
|
|
aLoop != m_aControlObservers.end();
|
|
|
|
++aLoop
|
|
|
|
)
|
|
|
|
{
|
|
|
|
(*aLoop)->dispose();
|
|
|
|
}
|
|
|
|
|
|
|
|
FocusListenerAdapters aEmpty;
|
|
|
|
m_aControlObservers.swap( aEmpty );
|
|
|
|
|
|
|
|
m_xActiveController.clear();
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
void FmTextControlShell::implClearActiveControlRef()
|
|
|
|
{
|
|
|
|
// no more features for this control
|
|
|
|
for ( ControlFeatures::iterator aLoop = m_aControlFeatures.begin();
|
|
|
|
aLoop != m_aControlFeatures.end();
|
|
|
|
++aLoop
|
|
|
|
)
|
|
|
|
{
|
|
|
|
aLoop->second->dispose();
|
|
|
|
}
|
|
|
|
|
|
|
|
ControlFeatures aEmpty;
|
|
|
|
m_aControlFeatures.swap( aEmpty );
|
|
|
|
|
|
|
|
if ( m_aContextMenuObserver.get() )
|
|
|
|
{
|
|
|
|
m_aContextMenuObserver->dispose();
|
|
|
|
m_aContextMenuObserver = MouseListenerAdapter();
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( m_xActiveTextComponent.is() )
|
|
|
|
{
|
|
|
|
DBG_TRACE( "FmTextControlShell::ClipBoard: stopping timer for clipboard invalidation" );
|
|
|
|
m_aClipboardInvalidation.Stop();
|
|
|
|
}
|
|
|
|
// no more active control
|
|
|
|
m_xActiveControl.clear();
|
|
|
|
m_xActiveTextComponent.clear();
|
|
|
|
m_bActiveControlIsReadOnly = true;
|
2005-07-08 09:34:05 +00:00
|
|
|
m_bActiveControlIsRichText = false;
|
2004-05-07 14:48:07 +00:00
|
|
|
m_bActiveControl = false;
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
void FmTextControlShell::controlDeactivated( )
|
|
|
|
{
|
|
|
|
DBG_ASSERT( IsActiveControl(), "FmTextControlShell::controlDeactivated: no active control!" );
|
|
|
|
|
|
|
|
m_bActiveControl = false;
|
|
|
|
|
|
|
|
m_rBindings.Invalidate( pTextControlSlots );
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
void FmTextControlShell::controlActivated( const Reference< XControl >& _rxControl )
|
|
|
|
{
|
|
|
|
// ensure that all knittings with the previously active control are lost
|
|
|
|
if ( m_xActiveControl.is() )
|
|
|
|
implClearActiveControlRef();
|
|
|
|
DBG_ASSERT( m_aControlFeatures.empty(), "FmTextControlShell::controlActivated: should have no dispatchers when I'm here!" );
|
|
|
|
|
|
|
|
#if OSL_DEBUG_LEVEL > 0
|
|
|
|
{
|
|
|
|
Sequence< Reference< XControl > > aActiveControls;
|
|
|
|
if ( m_xActiveController.is() )
|
|
|
|
aActiveControls = m_xActiveController->getControls();
|
|
|
|
|
|
|
|
bool bFoundThisControl = false;
|
|
|
|
|
|
|
|
const Reference< XControl >* pControls = aActiveControls.getConstArray();
|
|
|
|
const Reference< XControl >* pControlsEnd = pControls + aActiveControls.getLength();
|
|
|
|
for ( ; ( pControls != pControlsEnd ) && !bFoundThisControl; ++pControls )
|
|
|
|
{
|
|
|
|
if ( *pControls == _rxControl )
|
|
|
|
bFoundThisControl = true;
|
|
|
|
}
|
|
|
|
DBG_ASSERT( bFoundThisControl, "FmTextControlShell::controlActivated: only controls which belong to the active controller can be activated!" );
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
// ask the control for dispatchers for our text-related slots
|
|
|
|
fillFeatureDispatchers( _rxControl, pTextControlSlots, m_aControlFeatures );
|
|
|
|
|
2005-07-08 09:34:05 +00:00
|
|
|
// remember this control
|
|
|
|
m_xActiveControl = _rxControl;
|
|
|
|
m_xActiveTextComponent = m_xActiveTextComponent.query( _rxControl );
|
|
|
|
m_bActiveControlIsReadOnly = lcl_determineReadOnly( m_xActiveControl );
|
|
|
|
m_bActiveControlIsRichText = lcl_isRichText( m_xActiveControl );
|
|
|
|
|
|
|
|
// if we found a rich text control, we need context menu support
|
|
|
|
if ( m_bActiveControlIsRichText )
|
2004-05-07 14:48:07 +00:00
|
|
|
{
|
|
|
|
DBG_ASSERT( NULL == m_aContextMenuObserver.get(), "FmTextControlShell::controlActivated: already have an observer!" );
|
|
|
|
m_aContextMenuObserver = MouseListenerAdapter( new FmMouseListenerAdapter( _rxControl, this ) );
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( m_xActiveTextComponent.is() )
|
|
|
|
{
|
|
|
|
DBG_TRACE( "FmTextControlShell::ClipBoard: starting timer for clipboard invalidation" );
|
|
|
|
m_aClipboardInvalidation.Start();
|
|
|
|
}
|
|
|
|
|
|
|
|
m_bActiveControl = true;
|
|
|
|
|
|
|
|
m_rBindings.Invalidate( pTextControlSlots );
|
|
|
|
|
|
|
|
if ( m_pViewFrame )
|
|
|
|
m_pViewFrame->UIFeatureChanged();
|
|
|
|
|
2005-10-24 07:26:55 +00:00
|
|
|
// don't call the activation handler if we don't have any slots we can serve
|
|
|
|
// The activation handler is used to put the shell on the top of the dispatcher stack,
|
|
|
|
// so it's preferred when slots are distributed.
|
|
|
|
// Note that this is a slight hack, to prevent that we grab slots from the SfxDispatcher
|
|
|
|
// which should be served by other shells (e.g. Cut/Copy/Paste).
|
|
|
|
// A real solution would be a forwarding-mechanism for slots: We should be on the top
|
|
|
|
// if we're active, but if we cannot handle the slot, then we need to tell the dispatcher
|
|
|
|
// to skip our shell, and pass the slot to the next one. However, this mechanism is not
|
|
|
|
// not in place in SFX.
|
|
|
|
// Another possibility would be to have dedicated shells for the slots which we might
|
|
|
|
// or might not be able to serve. However, this could probably increase the number of
|
|
|
|
// shells too much (In theory, nearly every slot could have an own shell then).
|
|
|
|
//
|
|
|
|
// #i51621# / 2005-08-19 / frank.schoenheit@sun.com
|
|
|
|
bool bHaveAnyServeableSlots = m_xActiveTextComponent.is() || !m_aControlFeatures.empty();
|
|
|
|
if ( m_aControlActivationHandler.IsSet() && bHaveAnyServeableSlots )
|
2004-05-07 14:48:07 +00:00
|
|
|
m_aControlActivationHandler.Call( NULL );
|
|
|
|
|
|
|
|
m_bNeedClipboardInvalidation = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
void FmTextControlShell::fillFeatureDispatchers( const Reference< XControl > _rxControl, SfxSlotId* _pZeroTerminatedSlots,
|
|
|
|
ControlFeatures& _rDispatchers )
|
|
|
|
{
|
|
|
|
Reference< XDispatchProvider > xProvider( _rxControl, UNO_QUERY );
|
|
|
|
SfxApplication* pApplication = SFX_APP();
|
|
|
|
DBG_ASSERT( pApplication, "FmTextControlShell::fillFeatureDispatchers: no SfxApplication!" );
|
|
|
|
if ( xProvider.is() && pApplication )
|
|
|
|
{
|
|
|
|
SfxSlotId* pSlots = _pZeroTerminatedSlots;
|
|
|
|
while ( *pSlots )
|
|
|
|
{
|
|
|
|
FmTextControlFeature* pDispatcher = implGetFeatureDispatcher( xProvider, pApplication, *pSlots );
|
|
|
|
if ( pDispatcher )
|
|
|
|
_rDispatchers.insert( ControlFeatures::value_type( *pSlots, ControlFeature( pDispatcher ) ) );
|
|
|
|
|
|
|
|
++pSlots;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2006-12-01 16:26:23 +00:00
|
|
|
//------------------------------------------------------------------------
|
|
|
|
void FmTextControlShell::impl_parseURL_nothrow( URL& _rURL )
|
|
|
|
{
|
|
|
|
try
|
|
|
|
{
|
|
|
|
if ( !m_xURLTransformer.is() )
|
|
|
|
{
|
|
|
|
::comphelper::ComponentContext aContext( ::comphelper::getProcessServiceFactory() );
|
|
|
|
aContext.createComponent( "com.sun.star.util.URLTransformer", m_xURLTransformer );
|
|
|
|
}
|
|
|
|
if ( m_xURLTransformer.is() )
|
|
|
|
m_xURLTransformer->parseStrict( _rURL );
|
|
|
|
}
|
|
|
|
catch( const Exception& )
|
|
|
|
{
|
|
|
|
DBG_UNHANDLED_EXCEPTION();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2004-05-07 14:48:07 +00:00
|
|
|
//------------------------------------------------------------------------
|
|
|
|
FmTextControlFeature* FmTextControlShell::implGetFeatureDispatcher( const Reference< XDispatchProvider >& _rxProvider, SfxApplication* _pApplication, SfxSlotId _nSlot )
|
|
|
|
{
|
|
|
|
OSL_PRECOND( _rxProvider.is() && _pApplication, "FmTextControlShell::implGetFeatureDispatcher: invalid arg(s)!" );
|
|
|
|
URL aFeatureURL;
|
|
|
|
aFeatureURL.Complete = lcl_getUnoSlotName( *_pApplication, _nSlot );
|
2006-12-01 16:26:23 +00:00
|
|
|
impl_parseURL_nothrow( aFeatureURL );
|
2004-05-07 14:48:07 +00:00
|
|
|
Reference< XDispatch > xDispatcher = _rxProvider->queryDispatch( aFeatureURL, ::rtl::OUString(), 0xFF );
|
|
|
|
if ( xDispatcher.is() )
|
|
|
|
return new FmTextControlFeature( xDispatcher, aFeatureURL, _nSlot, this );
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
void FmTextControlShell::Invalidate( SfxSlotId _nSlot )
|
|
|
|
{
|
|
|
|
m_rBindings.Invalidate( _nSlot );
|
|
|
|
// despite this method being called "Invalidate", we also update here - this gives more immediate
|
|
|
|
// feedback in the UI
|
|
|
|
m_rBindings.Update( _nSlot );
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
void FmTextControlShell::focusGained( const ::com::sun::star::awt::FocusEvent& _rEvent )
|
|
|
|
{
|
|
|
|
Reference< XControl > xControl( _rEvent.Source, UNO_QUERY );
|
|
|
|
|
|
|
|
#if OSL_DEBUG_LEVEL > 0
|
|
|
|
::rtl::OString sTrace( "FmTextControlShell::focusGained: 0x" );
|
2005-12-28 16:37:15 +00:00
|
|
|
sTrace += ::rtl::OString::valueOf( (sal_IntPtr)xControl.get(), 16 );
|
2004-05-07 14:48:07 +00:00
|
|
|
DBG_TRACE( sTrace );
|
|
|
|
#endif
|
|
|
|
|
|
|
|
DBG_ASSERT( xControl.is(), "FmTextControlShell::focusGained: suspicious focus event!" );
|
|
|
|
if ( xControl.is() )
|
|
|
|
controlActivated( xControl );
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
void FmTextControlShell::focusLost( const ::com::sun::star::awt::FocusEvent& _rEvent )
|
|
|
|
{
|
|
|
|
Reference< XControl > xControl( _rEvent.Source, UNO_QUERY );
|
|
|
|
|
|
|
|
#if OSL_DEBUG_LEVEL > 0
|
|
|
|
::rtl::OString sTrace( "FmTextControlShell::focusLost: 0x" );
|
2005-12-28 16:37:15 +00:00
|
|
|
sTrace += ::rtl::OString::valueOf( (sal_IntPtr)xControl.get(), 16 );
|
2004-05-07 14:48:07 +00:00
|
|
|
DBG_TRACE( sTrace );
|
|
|
|
#endif
|
|
|
|
|
|
|
|
m_bActiveControl = false;
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
void FmTextControlShell::ForgetActiveControl()
|
|
|
|
{
|
|
|
|
implClearActiveControlRef();
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
2006-06-19 14:58:38 +00:00
|
|
|
void FmTextControlShell::contextMenuRequested( const awt::MouseEvent& /*_rEvent*/ )
|
2004-05-07 14:48:07 +00:00
|
|
|
{
|
|
|
|
m_rBindings.GetDispatcher()->ExecutePopup( SVX_RES( RID_FM_TEXTATTRIBUTE_MENU ) );
|
|
|
|
}
|
|
|
|
|
|
|
|
//........................................................................
|
|
|
|
} // namespace svx
|
|
|
|
//........................................................................
|