13a700b0aSSteve Yin /**************************************************************
23a700b0aSSteve Yin *
33a700b0aSSteve Yin * Licensed to the Apache Software Foundation (ASF) under one
43a700b0aSSteve Yin * or more contributor license agreements. See the NOTICE file
53a700b0aSSteve Yin * distributed with this work for additional information
63a700b0aSSteve Yin * regarding copyright ownership. The ASF licenses this file
73a700b0aSSteve Yin * to you under the Apache License, Version 2.0 (the
83a700b0aSSteve Yin * "License"); you may not use this file except in compliance
93a700b0aSSteve Yin * with the License. You may obtain a copy of the License at
103a700b0aSSteve Yin *
113a700b0aSSteve Yin * http://www.apache.org/licenses/LICENSE-2.0
123a700b0aSSteve Yin *
133a700b0aSSteve Yin * Unless required by applicable law or agreed to in writing,
143a700b0aSSteve Yin * software distributed under the License is distributed on an
153a700b0aSSteve Yin * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
163a700b0aSSteve Yin * KIND, either express or implied. See the License for the
173a700b0aSSteve Yin * specific language governing permissions and limitations
183a700b0aSSteve Yin * under the License.
193a700b0aSSteve Yin *
203a700b0aSSteve Yin *************************************************************/
215fdc4257SSteve Yin
225fdc4257SSteve Yin #include "stdafx.h"
235fdc4257SSteve Yin #include "UAccCOM2.h"
245fdc4257SSteve Yin #include "AccHypertext.h"
255fdc4257SSteve Yin
26*b0a7a3cfSSteve Yin #include "act.hxx"
273a700b0aSSteve Yin
285fdc4257SSteve Yin using namespace com::sun::star::accessibility;
295fdc4257SSteve Yin using namespace com::sun::star::uno;
305fdc4257SSteve Yin
315fdc4257SSteve Yin /////////////////////////////////////////////////////////////////////////////
325fdc4257SSteve Yin //
335fdc4257SSteve Yin /**
345fdc4257SSteve Yin * Get special selection.
355fdc4257SSteve Yin * @param startOffset Start selection offset.
365fdc4257SSteve Yin * @param endOffset End selection offset.
375fdc4257SSteve Yin * @param success Variant to accept the result of if the method call is successful.
385fdc4257SSteve Yin * @return Result.
395fdc4257SSteve Yin */
addSelection(long startOffset,long endOffset)405fdc4257SSteve Yin STDMETHODIMP CAccHypertext::addSelection(long startOffset, long endOffset)
415fdc4257SSteve Yin {
425fdc4257SSteve Yin
435fdc4257SSteve Yin return CAccTextBase::get_addSelection(startOffset, endOffset);
445fdc4257SSteve Yin }
455fdc4257SSteve Yin
465fdc4257SSteve Yin
475fdc4257SSteve Yin /**
485fdc4257SSteve Yin * Get special attributes.
495fdc4257SSteve Yin * @param offset Offset.
505fdc4257SSteve Yin * @param startOffset Variant to accept start offset.
515fdc4257SSteve Yin * @param endOffset Variant to accept end offset.
525fdc4257SSteve Yin * @param textAttributes Variant to accept attributes.
535fdc4257SSteve Yin * @return Result.
545fdc4257SSteve Yin */
get_attributes(long offset,long * startOffset,long * endOffset,BSTR * textAttributes)555fdc4257SSteve Yin STDMETHODIMP CAccHypertext::get_attributes(long offset, long * startOffset, long * endOffset, BSTR * textAttributes)
565fdc4257SSteve Yin {
575fdc4257SSteve Yin
585fdc4257SSteve Yin return CAccTextBase::get_attributes(offset, startOffset, endOffset, textAttributes);
595fdc4257SSteve Yin }
605fdc4257SSteve Yin
615fdc4257SSteve Yin /**
625fdc4257SSteve Yin * Get caret position.
635fdc4257SSteve Yin * @param offset Variant to accept caret offset.
645fdc4257SSteve Yin * @return Result.
655fdc4257SSteve Yin */
get_caretOffset(long * offset)665fdc4257SSteve Yin STDMETHODIMP CAccHypertext::get_caretOffset(long * offset)
675fdc4257SSteve Yin {
685fdc4257SSteve Yin
695fdc4257SSteve Yin return CAccTextBase::get_caretOffset(offset);
705fdc4257SSteve Yin }
715fdc4257SSteve Yin
725fdc4257SSteve Yin /**
735fdc4257SSteve Yin * Get character count.
745fdc4257SSteve Yin * @param nCharacters Variant to accept character count.
755fdc4257SSteve Yin * @return Result.
765fdc4257SSteve Yin */
get_characterCount(long * nCharacters)775fdc4257SSteve Yin STDMETHODIMP CAccHypertext::get_characterCount(long * nCharacters)
785fdc4257SSteve Yin {
795fdc4257SSteve Yin
805fdc4257SSteve Yin return CAccTextBase::get_characterCount(nCharacters);
815fdc4257SSteve Yin }
825fdc4257SSteve Yin
835fdc4257SSteve Yin /**
845fdc4257SSteve Yin * Get character extents.
855fdc4257SSteve Yin * @param offset Offset.
865fdc4257SSteve Yin * @param x Variant to accpet x position.
875fdc4257SSteve Yin * @param y Variant to accpet y position.
885fdc4257SSteve Yin * @param width Variant to accpet width.
895fdc4257SSteve Yin * @param Height Variant to accpet height.
905fdc4257SSteve Yin * @return Result.
915fdc4257SSteve Yin */
get_characterExtents(long offset,IA2CoordinateType coordType,long * x,long * y,long * width,long * height)925fdc4257SSteve Yin STDMETHODIMP CAccHypertext::get_characterExtents(long offset, IA2CoordinateType coordType, long * x, long * y, long * width, long * height)
935fdc4257SSteve Yin {
945fdc4257SSteve Yin
955fdc4257SSteve Yin return CAccTextBase::get_characterExtents(offset, coordType, x, y, width, height);
965fdc4257SSteve Yin }
975fdc4257SSteve Yin
985fdc4257SSteve Yin /**
995fdc4257SSteve Yin * Get slections count.
1005fdc4257SSteve Yin * @param nSelections Variant to accpet slections count.
1015fdc4257SSteve Yin * @return Result.
1025fdc4257SSteve Yin */
get_nSelections(long * nSelections)1035fdc4257SSteve Yin STDMETHODIMP CAccHypertext::get_nSelections(long * nSelections)
1045fdc4257SSteve Yin {
1055fdc4257SSteve Yin
1065fdc4257SSteve Yin return CAccTextBase::get_nSelections(nSelections);
1075fdc4257SSteve Yin }
1085fdc4257SSteve Yin
1095fdc4257SSteve Yin /**
1105fdc4257SSteve Yin * Get offset of some special point.
1115fdc4257SSteve Yin * @param x X position of one point.
1125fdc4257SSteve Yin * @param x Y position of one point.
1135fdc4257SSteve Yin * @param coordType Type.
1145fdc4257SSteve Yin * @param offset Variant to accept offset.
1155fdc4257SSteve Yin * @return Result.
1165fdc4257SSteve Yin */
get_offsetAtPoint(long x,long y,IA2CoordinateType coordType,long * offset)1175fdc4257SSteve Yin STDMETHODIMP CAccHypertext::get_offsetAtPoint(long x, long y, IA2CoordinateType coordType, long * offset)
1185fdc4257SSteve Yin {
1195fdc4257SSteve Yin return CAccTextBase::get_offsetAtPoint(x, y, coordType, offset);
1205fdc4257SSteve Yin }
1215fdc4257SSteve Yin
1225fdc4257SSteve Yin /**
1235fdc4257SSteve Yin * Get selection range.
1245fdc4257SSteve Yin * @param selection selection count.
1255fdc4257SSteve Yin * @param startOffset Variant to accept the start offset of special selection.
1265fdc4257SSteve Yin * @param endOffset Variant to accept the end offset of special selection.
1275fdc4257SSteve Yin * @return Result.
1285fdc4257SSteve Yin */
get_selection(long selection,long * startOffset,long * endOffset)1295fdc4257SSteve Yin STDMETHODIMP CAccHypertext::get_selection(long selection, long * startOffset, long * endOffset)
1305fdc4257SSteve Yin {
1315fdc4257SSteve Yin
1325fdc4257SSteve Yin return CAccTextBase::get_selection(selection, startOffset, endOffset);
1335fdc4257SSteve Yin }
1345fdc4257SSteve Yin
1355fdc4257SSteve Yin /**
1365fdc4257SSteve Yin * Get special text.
1375fdc4257SSteve Yin * @param startOffset Start position of special range.
1385fdc4257SSteve Yin * @param endOffset End position of special range.
1395fdc4257SSteve Yin * @param text Variant to accept the text of special range.
1405fdc4257SSteve Yin * @return Result.
1415fdc4257SSteve Yin */
get_text(long startOffset,long endOffset,BSTR * text)1425fdc4257SSteve Yin STDMETHODIMP CAccHypertext::get_text(long startOffset, long endOffset, BSTR * text)
1435fdc4257SSteve Yin {
1445fdc4257SSteve Yin
1455fdc4257SSteve Yin return CAccTextBase::get_text(startOffset, endOffset, text);
1465fdc4257SSteve Yin }
1475fdc4257SSteve Yin
1485fdc4257SSteve Yin /**
1495fdc4257SSteve Yin * Get special text before some position.
1505fdc4257SSteve Yin * @param offset Special position.
1515fdc4257SSteve Yin * @param boundaryType Boundary type.
1525fdc4257SSteve Yin * @param startOffset Variant to accept the start offset.
1535fdc4257SSteve Yin * @param endOffset Variant to accept the end offset.
1545fdc4257SSteve Yin * @param text Variant to accept the special text.
1555fdc4257SSteve Yin * @return Result.
1565fdc4257SSteve Yin */
get_textBeforeOffset(long offset,IA2TextBoundaryType boundaryType,long * startOffset,long * endOffset,BSTR * text)1575fdc4257SSteve Yin STDMETHODIMP CAccHypertext::get_textBeforeOffset(long offset, IA2TextBoundaryType boundaryType, long * startOffset, long * endOffset, BSTR * text)
1585fdc4257SSteve Yin {
1595fdc4257SSteve Yin
1605fdc4257SSteve Yin return CAccTextBase::get_textBeforeOffset(offset, boundaryType,
1615fdc4257SSteve Yin startOffset, endOffset, text);
1625fdc4257SSteve Yin }
1635fdc4257SSteve Yin
1645fdc4257SSteve Yin /**
1655fdc4257SSteve Yin * Get special text after some position.
1665fdc4257SSteve Yin * @param offset Special position.
1675fdc4257SSteve Yin * @param boundaryType Boundary type.
1685fdc4257SSteve Yin * @param startOffset Variant to accept the start offset.
1695fdc4257SSteve Yin * @param endOffset Variant to accept the end offset.
1705fdc4257SSteve Yin * @param text Variant to accept the special text.
1715fdc4257SSteve Yin * @return Result.
1725fdc4257SSteve Yin */
get_textAfterOffset(long offset,IA2TextBoundaryType boundaryType,long * startOffset,long * endOffset,BSTR * text)1735fdc4257SSteve Yin STDMETHODIMP CAccHypertext::get_textAfterOffset(long offset, IA2TextBoundaryType boundaryType, long * startOffset, long * endOffset, BSTR * text)
1745fdc4257SSteve Yin {
1755fdc4257SSteve Yin
1765fdc4257SSteve Yin return CAccTextBase::get_textAfterOffset(offset, boundaryType,
1775fdc4257SSteve Yin startOffset, endOffset, text);
1785fdc4257SSteve Yin }
1795fdc4257SSteve Yin
1805fdc4257SSteve Yin /**
1815fdc4257SSteve Yin * Get special text at some position.
1825fdc4257SSteve Yin * @param offset Special position.
1835fdc4257SSteve Yin * @param boundaryType Boundary type.
1845fdc4257SSteve Yin * @param startOffset Variant to accept the start offset.
1855fdc4257SSteve Yin * @param endOffset Variant to accept the end offset.
1865fdc4257SSteve Yin * @param text Variant to accept the special text.
1875fdc4257SSteve Yin * @return Result.
1885fdc4257SSteve Yin */
get_textAtOffset(long offset,IA2TextBoundaryType boundaryType,long * startOffset,long * endOffset,BSTR * text)1895fdc4257SSteve Yin STDMETHODIMP CAccHypertext::get_textAtOffset(long offset, IA2TextBoundaryType boundaryType, long * startOffset, long * endOffset, BSTR * text)
1905fdc4257SSteve Yin {
1915fdc4257SSteve Yin
1925fdc4257SSteve Yin return CAccTextBase::get_textAtOffset(offset, boundaryType,
1935fdc4257SSteve Yin startOffset, endOffset, text);
1945fdc4257SSteve Yin }
1955fdc4257SSteve Yin
1965fdc4257SSteve Yin /**
1975fdc4257SSteve Yin * Remove selection.
1985fdc4257SSteve Yin * @param selectionIndex Special selection index
1995fdc4257SSteve Yin * @param success Variant to accept the memthod called result.
2005fdc4257SSteve Yin * @return Result.
2015fdc4257SSteve Yin */
removeSelection(long selectionIndex)2025fdc4257SSteve Yin STDMETHODIMP CAccHypertext::removeSelection(long selectionIndex)
2035fdc4257SSteve Yin {
2045fdc4257SSteve Yin
2055fdc4257SSteve Yin return CAccTextBase::removeSelection(selectionIndex);
2065fdc4257SSteve Yin }
2075fdc4257SSteve Yin
2085fdc4257SSteve Yin /**
2095fdc4257SSteve Yin * Set caret position.
2105fdc4257SSteve Yin * @param offset Special position.
2115fdc4257SSteve Yin * @param success Variant to accept the memthod called result.
2125fdc4257SSteve Yin * @return Result.
2135fdc4257SSteve Yin */
setCaretOffset(long offset)2145fdc4257SSteve Yin STDMETHODIMP CAccHypertext::setCaretOffset(long offset)
2155fdc4257SSteve Yin {
2165fdc4257SSteve Yin
2175fdc4257SSteve Yin return CAccTextBase::setCaretOffset(offset);
2185fdc4257SSteve Yin }
2195fdc4257SSteve Yin
2205fdc4257SSteve Yin /**
2215fdc4257SSteve Yin * Set special selection.
2225fdc4257SSteve Yin * @param selectionIndex Special selection index.
2235fdc4257SSteve Yin * @param startOffset start position.
2245fdc4257SSteve Yin * @param endOffset end position.
2255fdc4257SSteve Yin * @param success Variant to accept the memthod called result.
2265fdc4257SSteve Yin * @return Result.
2275fdc4257SSteve Yin */
setSelection(long selectionIndex,long startOffset,long endOffset)2285fdc4257SSteve Yin STDMETHODIMP CAccHypertext::setSelection(long selectionIndex, long startOffset, long endOffset)
2295fdc4257SSteve Yin {
2305fdc4257SSteve Yin
2315fdc4257SSteve Yin return CAccTextBase::setSelection(selectionIndex, startOffset,
2325fdc4257SSteve Yin endOffset);
2335fdc4257SSteve Yin }
2345fdc4257SSteve Yin
2355fdc4257SSteve Yin /**
2365fdc4257SSteve Yin * Get characters count.
2375fdc4257SSteve Yin * @param nCharacters Variant to accept the characters count.
2385fdc4257SSteve Yin * @return Result.
2395fdc4257SSteve Yin */
get_nCharacters(long * nCharacters)2405fdc4257SSteve Yin STDMETHODIMP CAccHypertext::get_nCharacters(long * nCharacters)
2415fdc4257SSteve Yin {
2425fdc4257SSteve Yin
2435fdc4257SSteve Yin return CAccTextBase::get_nCharacters(nCharacters);
2445fdc4257SSteve Yin }
2455fdc4257SSteve Yin
get_newText(IA2TextSegment * newText)2465fdc4257SSteve Yin STDMETHODIMP CAccHypertext::get_newText( IA2TextSegment *newText)
2475fdc4257SSteve Yin {
2485fdc4257SSteve Yin return CAccTextBase::get_newText(newText);
2495fdc4257SSteve Yin }
2505fdc4257SSteve Yin
get_oldText(IA2TextSegment * oldText)2515fdc4257SSteve Yin STDMETHODIMP CAccHypertext::get_oldText( IA2TextSegment *oldText)
2525fdc4257SSteve Yin {
2535fdc4257SSteve Yin return CAccTextBase::get_oldText(oldText);
2545fdc4257SSteve Yin }
2555fdc4257SSteve Yin
2565fdc4257SSteve Yin /**
2575fdc4257SSteve Yin * Scroll to special sub-string .
2585fdc4257SSteve Yin * @param startIndex Start index of sub string.
2595fdc4257SSteve Yin * @param endIndex End index of sub string.
2605fdc4257SSteve Yin * @return Result.
2615fdc4257SSteve Yin */
scrollSubstringToPoint(long startIndex,long endIndex,enum IA2CoordinateType coordinateType,long x,long y)2625fdc4257SSteve Yin STDMETHODIMP CAccHypertext::scrollSubstringToPoint(long startIndex, long endIndex,enum IA2CoordinateType coordinateType, long x, long y )
2635fdc4257SSteve Yin {
2645fdc4257SSteve Yin
2655fdc4257SSteve Yin return CAccTextBase::scrollSubstringToPoint(startIndex, endIndex, coordinateType, x, y);
2665fdc4257SSteve Yin }
scrollSubstringTo(long startIndex,long endIndex,enum IA2ScrollType scrollType)2675fdc4257SSteve Yin STDMETHODIMP CAccHypertext::scrollSubstringTo(long startIndex, long endIndex,enum IA2ScrollType scrollType)
2685fdc4257SSteve Yin {
2695fdc4257SSteve Yin
2705fdc4257SSteve Yin return CAccTextBase::scrollSubstringTo(startIndex, endIndex,scrollType);
2715fdc4257SSteve Yin }
2725fdc4257SSteve Yin
2735fdc4257SSteve Yin /**
2745fdc4257SSteve Yin * Get hyperlink count.
2755fdc4257SSteve Yin * @param hyperlinkCount Variant to accpet hyperlink count.
2765fdc4257SSteve Yin * @return Result.
2775fdc4257SSteve Yin */
get_nHyperlinks(long * hyperlinkCount)2785fdc4257SSteve Yin STDMETHODIMP CAccHypertext::get_nHyperlinks(long *hyperlinkCount)
2795fdc4257SSteve Yin {
2805fdc4257SSteve Yin
2815fdc4257SSteve Yin CHECK_ENABLE_INF
2825fdc4257SSteve Yin
2835fdc4257SSteve Yin ENTER_PROTECTED_BLOCK
2845fdc4257SSteve Yin
2855fdc4257SSteve Yin // #CHECK#
2865fdc4257SSteve Yin if(hyperlinkCount == NULL)
2875fdc4257SSteve Yin return E_INVALIDARG;
2885fdc4257SSteve Yin // #CHECK XInterface#
2895fdc4257SSteve Yin if(!pHyperText.is())
2905fdc4257SSteve Yin {
2915fdc4257SSteve Yin return E_FAIL;
2925fdc4257SSteve Yin }
2935fdc4257SSteve Yin
2945fdc4257SSteve Yin *hyperlinkCount = pHyperText->getHyperLinkCount();
2955fdc4257SSteve Yin return S_OK;
2965fdc4257SSteve Yin
2975fdc4257SSteve Yin LEAVE_PROTECTED_BLOCK
2985fdc4257SSteve Yin }
2995fdc4257SSteve Yin
3005fdc4257SSteve Yin /**
3015fdc4257SSteve Yin * Get special hyperlink.
3025fdc4257SSteve Yin * @param index Special hyperlink index.
3035fdc4257SSteve Yin * @param hyperlink Variant to accept special hyperlink via index.
3045fdc4257SSteve Yin * @return Result.
3055fdc4257SSteve Yin */
get_hyperlink(long index,IAccessibleHyperlink ** hyperlink)3065fdc4257SSteve Yin STDMETHODIMP CAccHypertext::get_hyperlink(long index,IAccessibleHyperlink **hyperlink)
3075fdc4257SSteve Yin {
3085fdc4257SSteve Yin
3095fdc4257SSteve Yin CHECK_ENABLE_INF
3105fdc4257SSteve Yin
3115fdc4257SSteve Yin ENTER_PROTECTED_BLOCK
3125fdc4257SSteve Yin
3135fdc4257SSteve Yin // #CHECK#
3145fdc4257SSteve Yin if(hyperlink == NULL)
3155fdc4257SSteve Yin return E_INVALIDARG;
3165fdc4257SSteve Yin // #CHECK XInterface#
3175fdc4257SSteve Yin if(!pHyperText.is())
3185fdc4257SSteve Yin {
3195fdc4257SSteve Yin return E_FAIL;
3205fdc4257SSteve Yin }
3215fdc4257SSteve Yin
3225fdc4257SSteve Yin Reference<XAccessibleHyperlink> pRLink = pHyperText->getHyperLink(index);
3235fdc4257SSteve Yin if(!pRLink.is())
3245fdc4257SSteve Yin {
3255fdc4257SSteve Yin *hyperlink = NULL;
3265fdc4257SSteve Yin return E_FAIL;
3275fdc4257SSteve Yin }
3285fdc4257SSteve Yin
3295fdc4257SSteve Yin IAccessibleHyperlink* plink = NULL;
330*b0a7a3cfSSteve Yin ActivateActContext();
3313a700b0aSSteve Yin HRESULT hr = CoCreateInstance( CLSID_AccHyperLink, NULL, CLSCTX_SERVER ,
3325fdc4257SSteve Yin IID_IAccessibleHyperlink,
3335fdc4257SSteve Yin (void **)&plink);
334*b0a7a3cfSSteve Yin DeactivateActContext();
3355fdc4257SSteve Yin if( SUCCEEDED(hr) )
3365fdc4257SSteve Yin {
3375fdc4257SSteve Yin IUNOXWrapper* wrapper = NULL;
3385fdc4257SSteve Yin plink->QueryInterface(IID_IUNOXWrapper, (void**)&wrapper);
3395fdc4257SSteve Yin if(wrapper)
3405fdc4257SSteve Yin {
3415fdc4257SSteve Yin wrapper->put_XSubInterface((long)pRLink.get()/*pXI*/);
3425fdc4257SSteve Yin wrapper->Release();
3435fdc4257SSteve Yin }
3445fdc4257SSteve Yin *hyperlink = plink;
3455fdc4257SSteve Yin return S_OK;
3465fdc4257SSteve Yin }
3475fdc4257SSteve Yin
3485fdc4257SSteve Yin return E_FAIL;
3495fdc4257SSteve Yin
3505fdc4257SSteve Yin LEAVE_PROTECTED_BLOCK
3515fdc4257SSteve Yin }
3525fdc4257SSteve Yin
3535fdc4257SSteve Yin /**
3545fdc4257SSteve Yin * Returns the index of the hyperlink that is associated with this character index.
3555fdc4257SSteve Yin * @param charIndex Special char index.
3565fdc4257SSteve Yin * @param hyperlinkIndex Variant to accept special hyperlink index.
3575fdc4257SSteve Yin * @return Result.
3585fdc4257SSteve Yin */
get_hyperlinkIndex(long charIndex,long * hyperlinkIndex)3595fdc4257SSteve Yin STDMETHODIMP CAccHypertext::get_hyperlinkIndex(long charIndex, long *hyperlinkIndex)
3605fdc4257SSteve Yin {
3615fdc4257SSteve Yin
3625fdc4257SSteve Yin CHECK_ENABLE_INF
3635fdc4257SSteve Yin
3645fdc4257SSteve Yin ENTER_PROTECTED_BLOCK
3655fdc4257SSteve Yin
3665fdc4257SSteve Yin // #CHECK#
3675fdc4257SSteve Yin if(hyperlinkIndex == NULL)
3685fdc4257SSteve Yin return E_INVALIDARG;
3695fdc4257SSteve Yin // #CHECK XInterface#
3705fdc4257SSteve Yin if(!pHyperText.is())
3715fdc4257SSteve Yin {
3725fdc4257SSteve Yin return E_FAIL;
3735fdc4257SSteve Yin }
3745fdc4257SSteve Yin
3755fdc4257SSteve Yin *hyperlinkIndex = pHyperText->getHyperLinkIndex(charIndex);
3765fdc4257SSteve Yin return S_OK;
3775fdc4257SSteve Yin
3785fdc4257SSteve Yin LEAVE_PROTECTED_BLOCK
3795fdc4257SSteve Yin }
3805fdc4257SSteve Yin
3815fdc4257SSteve Yin /**
3825fdc4257SSteve Yin * Put UNO interface.
3835fdc4257SSteve Yin * @param pXInterface UNO interface.
3845fdc4257SSteve Yin * @return Result.
3855fdc4257SSteve Yin */
put_XInterface(long pXInterface)3865fdc4257SSteve Yin STDMETHODIMP CAccHypertext::put_XInterface(long pXInterface)
3875fdc4257SSteve Yin {
3885fdc4257SSteve Yin
3895fdc4257SSteve Yin
3905fdc4257SSteve Yin ENTER_PROTECTED_BLOCK
3915fdc4257SSteve Yin
3925fdc4257SSteve Yin CAccTextBase::put_XInterface(pXInterface);
3935fdc4257SSteve Yin //special query.
3945fdc4257SSteve Yin if(pUNOInterface == NULL)
3955fdc4257SSteve Yin return E_FAIL;
3965fdc4257SSteve Yin Reference<XAccessibleContext> pRContext = pUNOInterface->getAccessibleContext();
3975fdc4257SSteve Yin if( !pRContext.is() )
3985fdc4257SSteve Yin {
3995fdc4257SSteve Yin return E_FAIL;
4005fdc4257SSteve Yin }
4015fdc4257SSteve Yin Reference<XAccessibleHypertext> pRXI(pRContext,UNO_QUERY);
4025fdc4257SSteve Yin if( !pRXI.is() )
4035fdc4257SSteve Yin pHyperText = NULL;
4045fdc4257SSteve Yin else
4055fdc4257SSteve Yin pHyperText = pRXI.get();
4065fdc4257SSteve Yin return S_OK;
4075fdc4257SSteve Yin
4085fdc4257SSteve Yin LEAVE_PROTECTED_BLOCK
4095fdc4257SSteve Yin }
410