callcatcher: various unused code
This commit is contained in:
@@ -210,7 +210,6 @@ public:
|
||||
|
||||
// Behavior Flags
|
||||
SfxScrollingMode GetScrollingMode() const;
|
||||
void SetScrollingMode( SfxScrollingMode eMode );
|
||||
|
||||
// Misc
|
||||
virtual sal_uInt16 PrepareClose( sal_Bool bUI = sal_True, sal_Bool bForBrowsing = sal_False );
|
||||
@@ -284,7 +283,6 @@ public:
|
||||
|
||||
sal_Bool TryContextMenuInterception( Menu& rIn, const ::rtl::OUString& rMenuIdentifier, Menu*& rpOut, ::com::sun::star::ui::ContextMenuExecuteEvent aEvent );
|
||||
|
||||
void SetAdditionalPrintOptions( const com::sun::star::uno::Sequence < com::sun::star::beans::PropertyValue >& );
|
||||
void ExecPrint( const com::sun::star::uno::Sequence < com::sun::star::beans::PropertyValue >&, sal_Bool, sal_Bool );
|
||||
|
||||
void AddRemoveClipboardListener( const com::sun::star::uno::Reference < com::sun::star::datatransfer::clipboard::XClipboardListener>&, sal_Bool );
|
||||
|
@@ -1886,13 +1886,6 @@ SfxScrollingMode SfxViewShell::GetScrollingMode() const
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
void SfxViewShell::SetScrollingMode( SfxScrollingMode eMode )
|
||||
{
|
||||
pImp->m_eScroll = eMode;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
SfxObjectShell* SfxViewShell::GetObjectShell()
|
||||
{
|
||||
return pFrame ? pFrame->GetObjectShell() : NULL;
|
||||
@@ -2149,11 +2142,6 @@ sal_Bool SfxViewShell::HasMouseClickListeners_Impl()
|
||||
? pImp->m_pController->HasMouseClickListeners_Impl() : sal_False;
|
||||
}
|
||||
|
||||
void SfxViewShell::SetAdditionalPrintOptions( const com::sun::star::uno::Sequence < com::sun::star::beans::PropertyValue >& rOpts )
|
||||
{
|
||||
pImp->aPrintOpts = rOpts;
|
||||
}
|
||||
|
||||
sal_Bool SfxViewShell::Escape()
|
||||
{
|
||||
return GetViewFrame()->GetBindings().Execute( SID_TERMINATE_INPLACEACTIVATION );
|
||||
|
@@ -52,10 +52,7 @@ public:
|
||||
|
||||
sal_uInt16 GetCurWhich() const { return *pRanges + nOfst; }
|
||||
sal_uInt16 NextWhich();
|
||||
sal_uInt16 PrevWhich();
|
||||
|
||||
sal_uInt16 FirstWhich();
|
||||
sal_uInt16 LastWhich();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@@ -76,26 +76,6 @@ sal_uInt16 SfxWhichIter::NextWhich()
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
|
||||
sal_uInt16 SfxWhichIter::PrevWhich()
|
||||
{
|
||||
DBG_CHKTHIS(SfxWhichIter, 0);
|
||||
while ( pRanges != pStart || 0 != nOfst )
|
||||
{
|
||||
if(nOfst)
|
||||
--nOfst;
|
||||
else {
|
||||
pRanges -= 2;
|
||||
nOfst = *(pRanges+1) - (*pRanges);
|
||||
}
|
||||
sal_uInt16 nWhich = *pRanges + nOfst;
|
||||
if ( nWhich >= nFrom && nWhich <= nTo )
|
||||
return nWhich;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
|
||||
sal_uInt16 SfxWhichIter::FirstWhich()
|
||||
{
|
||||
DBG_CHKTHIS(SfxWhichIter, 0);
|
||||
@@ -106,18 +86,4 @@ sal_uInt16 SfxWhichIter::FirstWhich()
|
||||
return NextWhich();
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
|
||||
sal_uInt16 SfxWhichIter::LastWhich()
|
||||
{
|
||||
DBG_CHKTHIS(SfxWhichIter, 0);
|
||||
while(*pRanges)
|
||||
++pRanges;
|
||||
nOfst = 0;
|
||||
sal_uInt16 nWhich = *(pRanges-1);
|
||||
if ( nWhich >= nFrom && nWhich <= nTo )
|
||||
return nWhich;
|
||||
return PrevWhich();
|
||||
}
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
||||
|
@@ -248,8 +248,6 @@ public:
|
||||
void SetFrameDragSingles(sal_Bool bOn=sal_True) { SetFrameHandles(bOn); }
|
||||
sal_Bool IsFrameDragSingles() const { return IsFrameHandles(); }
|
||||
|
||||
sal_Bool HasMarkableObj() const;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// migrate selections
|
||||
|
||||
@@ -427,7 +425,6 @@ public:
|
||||
sal_Bool MarkGluePoint(const SdrObject* pObj, sal_uInt16 nId, const SdrPageView* pPV, sal_Bool bUnmark=sal_False);
|
||||
sal_Bool UnmarkGluePoint(const SdrObject* pObj, sal_uInt16 nId, const SdrPageView* pPV) { return MarkGluePoint(pObj,nId,pPV,sal_True); }
|
||||
sal_Bool IsGluePointMarked(const SdrObject* pObj, sal_uInt16 nId) const;
|
||||
sal_Bool UnmarkGluePoint(const SdrHdl& rHdl);
|
||||
|
||||
// Hdl eines markierten GluePoints holen. Nicht markierte
|
||||
// GluePoints haben keine Handles
|
||||
|
@@ -63,7 +63,6 @@ protected:
|
||||
public:
|
||||
TYPEINFO();
|
||||
SdrVirtObj(SdrObject& rNewObj);
|
||||
SdrVirtObj(SdrObject& rNewObj, const Point& rAnchorPos);
|
||||
virtual ~SdrVirtObj();
|
||||
virtual SdrObject& ReferencedObj();
|
||||
virtual const SdrObject& GetReferencedObj() const;
|
||||
|
@@ -257,18 +257,14 @@ public:
|
||||
// - Klebepunkt-Editmode
|
||||
// - TextEdit
|
||||
// - ... to be continued
|
||||
sal_Bool IsMarkPossible() const;
|
||||
void MarkAll();
|
||||
void UnmarkAll();
|
||||
sal_Bool MarkNext(sal_Bool bPrev=sal_False);
|
||||
sal_Bool MarkNext(const Point& rPnt, sal_Bool bPrev=sal_False);
|
||||
|
||||
const Rectangle& GetMarkedRect() const;
|
||||
void SetMarkedRect(const Rectangle& rRect);
|
||||
|
||||
virtual void DeleteMarked();
|
||||
sal_Bool IsDeleteMarkedPossible() const;
|
||||
sal_Bool IsDeletePossible() const { return IsDeleteMarkedPossible(); }
|
||||
|
||||
// Markieren von Objekten, Polygonpunkten oder Klebepunkten (je nach View-
|
||||
// Kontext) durch Aufziehen eines Selektionsrahmens.
|
||||
|
@@ -297,8 +297,6 @@ public:
|
||||
);
|
||||
virtual ~XLineEndList();
|
||||
|
||||
using XPropertyList::Replace;
|
||||
XLineEndEntry* Replace(XLineEndEntry* pEntry, long nIndex);
|
||||
using XPropertyList::Remove;
|
||||
XLineEndEntry* Remove(long nIndex);
|
||||
using XPropertyList::Get;
|
||||
|
@@ -539,25 +539,6 @@ void SdrMarkView::BrkMarkGluePoints()
|
||||
}
|
||||
}
|
||||
|
||||
sal_Bool SdrMarkView::HasMarkableObj() const
|
||||
{
|
||||
sal_uIntPtr nCount=0;
|
||||
|
||||
SdrPageView* pPV = GetSdrPageView();
|
||||
if(pPV)
|
||||
{
|
||||
SdrObjList* pOL=pPV->GetObjList();
|
||||
sal_uIntPtr nObjAnz=pOL->GetObjCount();
|
||||
for (sal_uIntPtr nObjNum=0; nObjNum<nObjAnz && nCount==0; nObjNum++) {
|
||||
SdrObject* pObj=pOL->GetObj(nObjNum);
|
||||
if (IsObjMarkable(pObj,pPV)) {
|
||||
nCount++;
|
||||
}
|
||||
}
|
||||
}
|
||||
return nCount!=0;
|
||||
}
|
||||
|
||||
void SdrMarkView::hideMarkHandles()
|
||||
{
|
||||
if(!mbMarkHandlesHidden)
|
||||
|
@@ -632,13 +632,6 @@ sal_Bool SdrMarkView::IsGluePointMarked(const SdrObject* pObj, sal_uInt16 nId) c
|
||||
return bRet;
|
||||
}
|
||||
|
||||
sal_Bool SdrMarkView::UnmarkGluePoint(const SdrHdl& rHdl)
|
||||
{
|
||||
if (&rHdl!=NULL && rHdl.GetKind()==HDL_GLUE && rHdl.GetObj()!=NULL) {
|
||||
return MarkGluePoint(rHdl.GetObj(),(sal_uInt16)rHdl.GetObjHdlNum(),rHdl.GetPageView(),sal_True);
|
||||
} else return sal_False;
|
||||
}
|
||||
|
||||
SdrHdl* SdrMarkView::GetGluePointHdl(const SdrObject* pObj, sal_uInt16 nId) const
|
||||
{
|
||||
ForceUndirtyMrkPnt();
|
||||
|
@@ -66,15 +66,6 @@ SdrVirtObj::SdrVirtObj(SdrObject& rNewObj):
|
||||
bClosedObj=rRefObj.IsClosedObj();
|
||||
}
|
||||
|
||||
SdrVirtObj::SdrVirtObj(SdrObject& rNewObj, const Point& rAnchorPos):
|
||||
rRefObj(rNewObj)
|
||||
{
|
||||
aAnchor=rAnchorPos;
|
||||
bVirtObj=sal_True; // Ja, ich bin ein virtuelles Objekt
|
||||
rRefObj.AddReference(*this);
|
||||
bClosedObj=rRefObj.IsClosedObj();
|
||||
}
|
||||
|
||||
SdrVirtObj::~SdrVirtObj()
|
||||
{
|
||||
rRefObj.DelReference(*this);
|
||||
|
@@ -1382,26 +1382,6 @@ void SdrView::UnmarkAll()
|
||||
else UnmarkAllObj();
|
||||
}
|
||||
|
||||
sal_Bool SdrView::IsMarkPossible() const
|
||||
{
|
||||
if(IsTextEdit())
|
||||
{
|
||||
return SdrTextObj::HasTextImpl( pTextEditOutliner );
|
||||
}
|
||||
|
||||
if(IsGluePointEditMode())
|
||||
{
|
||||
return HasMarkableGluePoints();
|
||||
}
|
||||
|
||||
if(HasMarkedPoints())
|
||||
{
|
||||
return HasMarkablePoints();
|
||||
}
|
||||
|
||||
return HasMarkableObj();
|
||||
}
|
||||
|
||||
sal_Bool SdrView::MarkNext(sal_Bool bPrev)
|
||||
{
|
||||
if (IsTextEdit()) {
|
||||
@@ -1441,15 +1421,6 @@ const Rectangle& SdrView::GetMarkedRect() const
|
||||
return GetMarkedObjRect();
|
||||
}
|
||||
|
||||
void SdrView::SetMarkedRect(const Rectangle& rRect)
|
||||
{
|
||||
if (IsGluePointEditMode() && HasMarkedGluePoints()) {
|
||||
//SetMarkedGluePointsRect(rRect); fehlende Implementation !!!
|
||||
} else if (HasMarkedPoints()) {
|
||||
//SetMarkedPointsRect(rRect); fehlende Implementation !!!
|
||||
} else SetMarkedObjRect(rRect);
|
||||
}
|
||||
|
||||
void SdrView::DeleteMarked()
|
||||
{
|
||||
if (IsTextEdit())
|
||||
@@ -1492,15 +1463,6 @@ sal_Bool SdrView::BegMark(const Point& rPnt, sal_Bool bAddMark, sal_Bool bUnmark
|
||||
}
|
||||
}
|
||||
|
||||
sal_Bool SdrView::IsDeleteMarkedPossible() const
|
||||
{
|
||||
if (IsReadOnly()) return sal_False;
|
||||
if (IsTextEdit()) return sal_True;
|
||||
if (IsGluePointEditMode() && HasMarkedGluePoints()) return sal_True;
|
||||
if (HasMarkedPoints()) return sal_True;
|
||||
return IsDeleteMarkedObjPossible();
|
||||
}
|
||||
|
||||
void SdrView::ConfigurationChanged( ::utl::ConfigurationBroadcaster*p, sal_uInt32 nHint)
|
||||
{
|
||||
onAccessibilityOptionsChanged();
|
||||
|
@@ -157,11 +157,6 @@ XLineEndList::~XLineEndList()
|
||||
impDestroy();
|
||||
}
|
||||
|
||||
XLineEndEntry* XLineEndList::Replace(XLineEndEntry* pEntry, long nIndex )
|
||||
{
|
||||
return (XLineEndEntry*) XPropertyList::Replace(pEntry, nIndex);
|
||||
}
|
||||
|
||||
XLineEndEntry* XLineEndList::Remove(long nIndex)
|
||||
{
|
||||
return (XLineEndEntry*) XPropertyList::Remove(nIndex);
|
||||
|
@@ -139,9 +139,6 @@ namespace utl
|
||||
<p>Usually, in your derived class you simply add a member of the correct type of the configuration
|
||||
value, and then call this method with the address of this member.</p>
|
||||
|
||||
<p>If the value you want to access may be <NULL/> at runtime, and if you want to recognize such
|
||||
<NULL/> values, you may consider using <method>registerNullValueExchangeLocation</method>.</p>
|
||||
|
||||
@param _pRelativePathAscii
|
||||
is a relative (ASCII) path of the node which should be "mirrored" into the accessor.
|
||||
@param _pContainer
|
||||
@@ -155,21 +152,6 @@ namespace utl
|
||||
const ::com::sun::star::uno::Type& _rValueType
|
||||
);
|
||||
|
||||
/** registers a data accessor of an arbitrary type.
|
||||
|
||||
<p>Usually, in your derived class you simply add a member of type <type scope="com.sun.star.uno">Any</type>,
|
||||
and then call this method with the address of this member.</p>
|
||||
|
||||
@param _pRelativePathAscii
|
||||
is a relative (ASCII) path of the node which should be "mirrored" into the accessor.
|
||||
@param _pContainer
|
||||
points to the Any you want to hold the value
|
||||
*/
|
||||
void registerNullValueExchangeLocation(
|
||||
const sal_Char* _pRelativePathAscii,
|
||||
::com::sun::star::uno::Any* _pContainer
|
||||
);
|
||||
|
||||
public:
|
||||
/** reads the configuration data
|
||||
|
||||
|
@@ -322,16 +322,6 @@ namespace utl
|
||||
implRegisterExchangeLocation( aNewAccessor );
|
||||
}
|
||||
|
||||
void OConfigurationValueContainer::registerNullValueExchangeLocation( const sal_Char* _pRelativePath, Any* _pContainer )
|
||||
{
|
||||
// build an accessor for this container
|
||||
NodeValueAccessor aNewAccessor( ::rtl::OUString::createFromAscii( _pRelativePath ) );
|
||||
aNewAccessor.bind( _pContainer );
|
||||
|
||||
// insert it into our structure
|
||||
implRegisterExchangeLocation( aNewAccessor );
|
||||
}
|
||||
|
||||
void OConfigurationValueContainer::read( )
|
||||
{
|
||||
std::for_each(
|
||||
|
@@ -665,7 +665,6 @@ SdrHint::SetRect(Rectangle const&)
|
||||
SdrLayerAdmin::MoveLayer(SdrLayer*, unsigned short)
|
||||
SdrMark::GetObjList() const
|
||||
SdrMark::GetPage() const
|
||||
SdrMarkView::UnmarkGluePoint(SdrHdl const&)
|
||||
SdrMediaObj::getGraphic() const
|
||||
SdrMediaObj::hasPreferredSize() const
|
||||
SdrModel::BegUndo(SdrUndoGroup*)
|
||||
@@ -720,11 +719,8 @@ SdrTextObj::StopTextAnimation(OutputDevice*, long)
|
||||
SdrUndoAttrObj::SetRepeatAttr(SfxItemSet const&)
|
||||
SdrUndoGroup::SdrUndoGroup(SdrModel&, String const&)
|
||||
SdrUndoGroup::push_front(SdrUndoAction*)
|
||||
SdrView::IsDeleteMarkedPossible() const
|
||||
SdrView::IsMarkPossible() const
|
||||
SdrView::MarkNext(Point const&, unsigned char)
|
||||
SdrView::MarkNext(unsigned char)
|
||||
SdrView::SetMarkedRect(Rectangle const&)
|
||||
SdrViewIter::FirstOutDev()
|
||||
SdrViewIter::FirstPageView()
|
||||
SdrViewIter::FirstWindow()
|
||||
@@ -732,7 +728,6 @@ SdrViewIter::NextOutDev()
|
||||
SdrViewIter::NextPageView()
|
||||
SdrViewIter::NextWindow()
|
||||
SdrViewIter::SdrViewIter(SdrModel const*)
|
||||
SdrVirtObj::SdrVirtObj(SdrObject&, Point const&)
|
||||
SectReprArr::Insert(SectRepr* const&, unsigned short&)
|
||||
SectReprArr::Insert(SectRepr* const*, unsigned short)
|
||||
SectReprArr::Insert(SectReprArr const*, unsigned short, unsigned short)
|
||||
@@ -748,7 +743,6 @@ SfxAppMenuControl_Impl::RegisterControl(unsigned short, SfxModule*)
|
||||
SfxApplication::Main()
|
||||
SfxBasicManagerHolder::isAnyContainerModified() const
|
||||
SfxBrushItemLink::Set(SfxBrushItemLink*)
|
||||
SfxChildWindow::SetPosSizePixel(Point const&, Size&)
|
||||
SfxChildWindowContext::GetAlignment() const
|
||||
SfxControllerItem::GetCoreMetric() const
|
||||
SfxControllerItem::UpdateSlot()
|
||||
@@ -837,9 +831,6 @@ SfxUShortRangesItem::SfxUShortRangesItem(unsigned short, unsigned short const*)
|
||||
SfxUnoStyleSheet::SfxUnoStyleSheet(SfxStyleSheet const&)
|
||||
SfxViewFactory::~SfxViewFactory()
|
||||
SfxViewFrame::Hide()
|
||||
SfxViewShell::SetAdditionalPrintOptions(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&)
|
||||
SfxViewShell::SetScrollingMode(SfxScrollingMode)
|
||||
SfxWhichIter::LastWhich()
|
||||
Slider::SetRangeMax(long)
|
||||
Slider::SetRangeMin(long)
|
||||
Slider::Slider(Window*, ResId const&)
|
||||
@@ -861,7 +852,6 @@ SpinButton::SpinButton(Window*, ResId const&)
|
||||
SplitWindow::CalcWindowSizePixel(Size const&, WindowAlign, long, unsigned char)
|
||||
SplitWindow::GetItemWindow(unsigned short) const
|
||||
SplitWindow::SetItemBackground(unsigned short, Wallpaper const&)
|
||||
Splitter::GetKeyboardStepSize() const
|
||||
SrchAttrItemList::Replace(SearchAttrItem const&, unsigned short)
|
||||
SrchAttrItemList::Replace(SearchAttrItem const*, unsigned short, unsigned short)
|
||||
SrchAttrItemList::_ForEach(unsigned short, unsigned short, unsigned char (*)(SearchAttrItem const&, void*), void*)
|
||||
@@ -1369,7 +1359,6 @@ SwpHtStart::Insert(SwTxtAttr const*&, unsigned short&)
|
||||
SwpHtStart::Insert(SwTxtAttr const**, unsigned short)
|
||||
SwpHtStart::Insert(SwpHtStart const*, unsigned short, unsigned short)
|
||||
SwpHtStart::Remove(SwTxtAttr const*&, unsigned short)
|
||||
SymCharConverter::Convert(Font&, String&, OutputDevice*)
|
||||
SystemChildWindow::SystemChildWindow(Window*, ResId const&)
|
||||
TB::NeedsPositioning()
|
||||
TESortedPositions::Insert(TESortedPositions const*, unsigned short, unsigned short)
|
||||
@@ -1450,7 +1439,6 @@ WrongRanges::_ForEach(unsigned short, unsigned short, unsigned char (*)(WrongRan
|
||||
X11SalGraphics::SetMask(int&, int&, unsigned int&, unsigned int&, int&, int&, unsigned long)
|
||||
X509Certificate_NssImpl::getImplementation(com::sun::star::uno::Reference<com::sun::star::uno::XInterface>)
|
||||
XFillExchangeData::RegisterClipboardFormatName()
|
||||
XLineEndList::Replace(XLineEndEntry*, long)
|
||||
XMLAutoTextEventExport::XMLAutoTextEventExport(com::sun::star::uno::Reference<com::sun::star::lang::XMultiServiceFactory> const&, rtl::OUString const&, com::sun::star::uno::Reference<com::sun::star::xml::sax::XDocumentHandler> const&, com::sun::star::uno::Reference<com::sun::star::frame::XModel> const&, com::sun::star::uno::Reference<com::sun::star::container::XNameAccess> const&, unsigned short)
|
||||
XMLElement::Equals(rtl::OUString)
|
||||
XMLEmbeddedObjectExportFilter::XMLEmbeddedObjectExportFilter()
|
||||
@@ -3041,12 +3029,12 @@ utl::MultiAtomProvider::getLastAtom(int) const
|
||||
utl::MultiAtomProvider::hasAtom(int, int) const
|
||||
utl::MultiAtomProvider::insertAtomClass(int)
|
||||
utl::MultiAtomProvider::overrideAtom(int, int, rtl::OUString const&)
|
||||
utl::NodeValueAccessor::bind(com::sun::star::uno::Any*)
|
||||
utl::OConfigurationNode::appendNode(rtl::OUString const&, utl::OConfigurationNode const&) const
|
||||
utl::OConfigurationTreeRoot::OConfigurationTreeRoot(com::sun::star::uno::Reference<com::sun::star::util::XChangesBatch> const&)
|
||||
utl::OConfigurationTreeRoot::OConfigurationTreeRoot(comphelper::ComponentContext const&, char const*, bool)
|
||||
utl::OConfigurationValueContainer::OConfigurationValueContainer(com::sun::star::uno::Reference<com::sun::star::lang::XMultiServiceFactory> const&, osl::Mutex&, rtl::OUString const&, unsigned short, int)
|
||||
utl::OConfigurationValueContainer::getServiceFactory() const
|
||||
utl::OConfigurationValueContainer::registerNullValueExchangeLocation(char const*, com::sun::star::uno::Any*)
|
||||
utl::TransliterationWrapper::compareSubstring(String const&, int, int, String const&, int, int) const
|
||||
vcl::Clipboard_getSupportedServiceNames()
|
||||
vcl::I18nHelper::GetDate(Date const&) const
|
||||
|
@@ -114,7 +114,6 @@ public:
|
||||
// set the stepsize of the splitter for cursor movement
|
||||
// the default is 10% of the reference window's width/height
|
||||
void SetKeyboardStepSize( long nStepSize );
|
||||
long GetKeyboardStepSize() const;
|
||||
|
||||
void SetStartSplitHdl( const Link& rLink ) { maStartSplitHdl = rLink; }
|
||||
const Link& GetStartSplitHdl() const { return maStartSplitHdl; }
|
||||
|
@@ -194,13 +194,6 @@ void Splitter::SetKeyboardStepSize( long nStepSize )
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
|
||||
long Splitter::GetKeyboardStepSize() const
|
||||
{
|
||||
return mnKeyboardStepSize;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
|
||||
Splitter* Splitter::ImplFindSibling()
|
||||
{
|
||||
// look for another splitter with the same parent but different orientation
|
||||
|
Reference in New Issue
Block a user