make the Pen/Brush code backward compatible as discussed on wx-dev; marked the blocks of code to deprecate in future with FUTURE_WXWIN_COMPATIBILITY_3_0; add wxCHECK_MSG in all ports to block Get*() calls on invalid objects (as already is for all other refcounted objects and for most ports)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@52636 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -20,22 +20,7 @@
|
||||
// NOTE: these values cannot be combined together!
|
||||
enum wxBrushStyle
|
||||
{
|
||||
#if WXWIN_COMPATIBILITY_2_8
|
||||
/* start of deprecated values */
|
||||
wxSOLID = 100,
|
||||
wxTRANSPARENT = 106,
|
||||
wxSTIPPLE_MASK_OPAQUE = 107,
|
||||
wxSTIPPLE_MASK = 108,
|
||||
wxSTIPPLE = 109,
|
||||
wxBDIAGONAL_HATCH = 110,
|
||||
wxCROSSDIAG_HATCH = 111,
|
||||
wxFDIAGONAL_HATCH = 112,
|
||||
wxCROSS_HATCH = 113,
|
||||
wxHORIZONTAL_HATCH = 114,
|
||||
wxVERTICAL_HATCH = 115,
|
||||
wxFIRST_HATCH = wxBDIAGONAL_HATCH,
|
||||
wxLAST_HATCH = wxVERTICAL_HATCH,
|
||||
/* end of deprecated values */
|
||||
wxBRUSHSTYLE_INVALID = -1,
|
||||
|
||||
wxBRUSHSTYLE_SOLID = wxSOLID,
|
||||
wxBRUSHSTYLE_TRANSPARENT = wxTRANSPARENT,
|
||||
@@ -50,38 +35,6 @@ enum wxBrushStyle
|
||||
wxBRUSHSTYLE_VERTICAL_HATCH = wxVERTICAL_HATCH,
|
||||
wxBRUSHSTYLE_FIRST_HATCH = wxFIRST_HATCH,
|
||||
wxBRUSHSTYLE_LAST_HATCH = wxLAST_HATCH,
|
||||
wxBRUSHSTYLE_MAX
|
||||
#else
|
||||
wxBRUSHSTYLE_SOLID,
|
||||
wxBRUSHSTYLE_TRANSPARENT,
|
||||
|
||||
/* Brush Stippling. */
|
||||
|
||||
wxBRUSHSTYLE_STIPPLE_MASK_OPAQUE,
|
||||
/* mask is used for blitting monochrome using text fore and back ground colors */
|
||||
|
||||
wxBRUSHSTYLE_STIPPLE_MASK,
|
||||
/* mask is used for masking areas in the stipple bitmap (TO DO) */
|
||||
|
||||
wxBRUSHSTYLE_STIPPLE,
|
||||
/* drawn with a Pen, and without any Brush -- and it can be stippled. */
|
||||
|
||||
/* In wxWidgets < 2.6 use WX_HATCH macro */
|
||||
/* to verify these wx*_HATCH are in style */
|
||||
/* of wxBrush. In wxWidgets >= 2.6 use */
|
||||
/* wxBrush::IsHatch() instead. */
|
||||
wxBRUSHSTYLE_BDIAGONAL_HATCH,
|
||||
wxBRUSHSTYLE_CROSSDIAG_HATCH,
|
||||
wxBRUSHSTYLE_FDIAGONAL_HATCH,
|
||||
wxBRUSHSTYLE_CROSS_HATCH,
|
||||
wxBRUSHSTYLE_HORIZONTAL_HATCH,
|
||||
wxBRUSHSTYLE_VERTICAL_HATCH,
|
||||
|
||||
wxBRUSHSTYLE_FIRST_HATCH = wxBRUSHSTYLE_BDIAGONAL_HATCH,
|
||||
wxBRUSHSTYLE_LAST_HATCH = wxBRUSHSTYLE_VERTICAL_HATCH,
|
||||
|
||||
wxBRUSHSTYLE_MAX
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
@@ -95,6 +48,11 @@ public:
|
||||
|
||||
virtual bool IsHatch() const
|
||||
{ return (GetStyle()>=wxBRUSHSTYLE_FIRST_HATCH) && (GetStyle()<=wxBRUSHSTYLE_LAST_HATCH); }
|
||||
|
||||
#if FUTURE_WXWIN_COMPATIBILITY_3_0
|
||||
wxDEPRECATED_FUTURE( void SetStyle(int style) )
|
||||
{ SetStyle((wxBrushStyle)style); }
|
||||
#endif
|
||||
};
|
||||
|
||||
#if defined(__WXPALMOS__)
|
||||
|
@@ -30,6 +30,9 @@ class WXDLLEXPORT wxBrush: public wxBrushBase
|
||||
public:
|
||||
wxBrush();
|
||||
wxBrush(const wxColour& col, wxBrushStyle style = wxBRUSHSTYLE_SOLID);
|
||||
#if FUTURE_WXWIN_COMPATIBILITY_3_0
|
||||
wxDEPRECATED_FUTURE( wxBrush(const wxColour& col, int style) );
|
||||
#endif
|
||||
wxBrush(const wxBitmap& stipple);
|
||||
virtual ~wxBrush();
|
||||
|
||||
|
@@ -26,8 +26,8 @@ class WXDLLEXPORT wxPen: public wxGDIObject
|
||||
public:
|
||||
wxPen();
|
||||
wxPen(const wxColour& col, int width = 1, wxPenStyle style = wxPENSTYLE_SOLID);
|
||||
#if WXWIN_COMPATIBILITY_2_8
|
||||
wxDEPRECATED( wxPen(const wxColour& col, int width, wxBrushStyle style) );
|
||||
#if FUTURE_WXWIN_COMPATIBILITY_3_0
|
||||
wxDEPRECATED_FUTURE( wxPen(const wxColour& col, int width, int style) );
|
||||
#endif
|
||||
wxPen(const wxBitmap& stipple, int width);
|
||||
virtual ~wxPen();
|
||||
|
@@ -14,6 +14,11 @@
|
||||
#ifndef _WX_DEFS_H_
|
||||
#define _WX_DEFS_H_
|
||||
|
||||
// NOTE: this symbol will be replaced with "WXWIN_COMPATIBILITY_3_0" as soon
|
||||
// as the development branch for 3.1 is created
|
||||
#define FUTURE_WXWIN_COMPATIBILITY_3_0 1
|
||||
#define wxDEPRECATED_FUTURE( x ) x
|
||||
|
||||
/* ---------------------------------------------------------------------------- */
|
||||
/* compiler and OS identification */
|
||||
/* ---------------------------------------------------------------------------- */
|
||||
@@ -2099,6 +2104,40 @@ enum
|
||||
/* Also wxNORMAL for normal (non-italic text) */
|
||||
wxITALIC,
|
||||
wxSLANT,
|
||||
|
||||
|
||||
#if FUTURE_WXWIN_COMPATIBILITY_3_0
|
||||
/*
|
||||
WARNING: the following styles are deprecated; use the wxBrushStyle,
|
||||
wxPenStyle, wxPenCap, wxPenJoin enum values instead!
|
||||
*/
|
||||
|
||||
/* Pen styles */
|
||||
wxSOLID = 100,
|
||||
wxDOT,
|
||||
wxLONG_DASH,
|
||||
wxSHORT_DASH,
|
||||
wxDOT_DASH,
|
||||
wxUSER_DASH,
|
||||
|
||||
wxTRANSPARENT,
|
||||
|
||||
/* Brush & Pen Stippling. Note that a stippled pen cannot be dashed!! */
|
||||
/* Note also that stippling a Pen IS meaningfull, because a Line is */
|
||||
wxSTIPPLE_MASK_OPAQUE, /* mask is used for blitting monochrome using text fore and back ground colors */
|
||||
wxSTIPPLE_MASK, /* mask is used for masking areas in the stipple bitmap (TO DO) */
|
||||
/* drawn with a Pen, and without any Brush -- and it can be stippled. */
|
||||
wxSTIPPLE = 110,
|
||||
|
||||
wxBDIAGONAL_HATCH, /* In wxWidgets < 2.6 use WX_HATCH macro */
|
||||
wxCROSSDIAG_HATCH, /* to verify these wx*_HATCH are in style */
|
||||
wxFDIAGONAL_HATCH, /* of wxBrush. In wxWidgets >= 2.6 use */
|
||||
wxCROSS_HATCH, /* wxBrush::IsHatch() instead. */
|
||||
wxHORIZONTAL_HATCH,
|
||||
wxVERTICAL_HATCH,
|
||||
wxFIRST_HATCH = wxBDIAGONAL_HATCH,
|
||||
wxLAST_HATCH = wxVERTICAL_HATCH,
|
||||
#endif
|
||||
};
|
||||
|
||||
/* Logical ops */
|
||||
|
@@ -33,6 +33,9 @@ class WXDLLIMPEXP_CORE wxBrush : public wxBrushBase
|
||||
public:
|
||||
wxBrush() {}
|
||||
wxBrush(const wxColour &colour, wxBrushStyle style = wxBRUSHSTYLE_SOLID);
|
||||
#if FUTURE_WXWIN_COMPATIBILITY_3_0
|
||||
wxDEPRECATED_FUTURE( wxBrush(const wxColour& col, int style) );
|
||||
#endif
|
||||
wxBrush(const wxBitmap &stippleBitmap);
|
||||
|
||||
bool operator==(const wxBrush& brush) const;
|
||||
|
@@ -33,8 +33,8 @@ class WXDLLIMPEXP_CORE wxPen: public wxPenBase
|
||||
public:
|
||||
wxPen() {}
|
||||
wxPen(const wxColour &colour, int width = 1, wxPenStyle style = wxPENSTYLE_SOLID);
|
||||
#if WXWIN_COMPATIBILITY_2_8
|
||||
wxDEPRECATED( wxPen(const wxColour& col, int width, wxBrushStyle style) );
|
||||
#if FUTURE_WXWIN_COMPATIBILITY_3_0
|
||||
wxDEPRECATED_FUTURE( wxPen(const wxColour& col, int width, int style) );
|
||||
#endif
|
||||
|
||||
wxPen(const wxBitmap& stipple, int width);
|
||||
|
@@ -23,6 +23,9 @@ public:
|
||||
wxBrush() { }
|
||||
|
||||
wxBrush( const wxColour &colour, wxBrushStyle style = wxBRUSHSTYLE_SOLID );
|
||||
#if FUTURE_WXWIN_COMPATIBILITY_3_0
|
||||
wxDEPRECATED_FUTURE( wxBrush(const wxColour& col, int style) );
|
||||
#endif
|
||||
wxBrush( const wxBitmap &stippleBitmap );
|
||||
virtual ~wxBrush();
|
||||
|
||||
|
@@ -22,8 +22,8 @@ public:
|
||||
wxPen() { }
|
||||
|
||||
wxPen( const wxColour &colour, int width = 1, wxPenStyle style = wxPENSTYLE_SOLID );
|
||||
#if WXWIN_COMPATIBILITY_2_8
|
||||
wxDEPRECATED( wxPen(const wxColour& col, int width, wxBrushStyle style) );
|
||||
#if FUTURE_WXWIN_COMPATIBILITY_3_0
|
||||
wxDEPRECATED_FUTURE( wxPen(const wxColour& col, int width, int style) );
|
||||
#endif
|
||||
|
||||
virtual ~wxPen();
|
||||
|
@@ -33,6 +33,9 @@ public:
|
||||
wxBrush() { }
|
||||
|
||||
wxBrush( const wxColour &colour, wxBrushStyle style = wxBRUSHSTYLE_SOLID );
|
||||
#if FUTURE_WXWIN_COMPATIBILITY_3_0
|
||||
wxDEPRECATED_FUTURE( wxBrush(const wxColour& col, int style) );
|
||||
#endif
|
||||
wxBrush( const wxBitmap &stippleBitmap );
|
||||
virtual ~wxBrush();
|
||||
|
||||
|
@@ -38,8 +38,8 @@ public:
|
||||
wxPen() { }
|
||||
|
||||
wxPen( const wxColour &colour, int width = 1, wxPenStyle style = wxPENSTYLE_SOLID );
|
||||
#if WXWIN_COMPATIBILITY_2_8
|
||||
wxDEPRECATED( wxPen(const wxColour& col, int width, wxBrushStyle style) );
|
||||
#if FUTURE_WXWIN_COMPATIBILITY_3_0
|
||||
wxDEPRECATED_FUTURE( wxPen(const wxColour& col, int width, int style) );
|
||||
#endif
|
||||
|
||||
virtual ~wxPen();
|
||||
|
@@ -22,8 +22,8 @@ class WXDLLEXPORT wxPen : public wxPenBase
|
||||
public:
|
||||
wxPen();
|
||||
wxPen(const wxColour& col, int width = 1, wxPenStyle style = wxPENSTYLE_SOLID);
|
||||
#if WXWIN_COMPATIBILITY_2_8
|
||||
wxDEPRECATED( wxPen(const wxColour& col, int width, wxBrushStyle style) );
|
||||
#if FUTURE_WXWIN_COMPATIBILITY_3_0
|
||||
wxDEPRECATED_FUTURE( wxPen(const wxColour& col, int width, int style) );
|
||||
#endif
|
||||
|
||||
wxPen(const wxBitmap& stipple, int width);
|
||||
|
@@ -32,6 +32,9 @@ class WXDLLEXPORT wxBrush : public wxBrushBase
|
||||
public:
|
||||
wxBrush() {}
|
||||
wxBrush(const wxColour &colour, wxBrushStyle style = wxBRUSHSTYLE_SOLID);
|
||||
#if FUTURE_WXWIN_COMPATIBILITY_3_0
|
||||
wxDEPRECATED_FUTURE( wxBrush(const wxColour& col, int style) );
|
||||
#endif
|
||||
wxBrush(const wxBitmap &stippleBitmap);
|
||||
|
||||
bool operator==(const wxBrush& brush) const;
|
||||
|
@@ -32,8 +32,8 @@ class WXDLLEXPORT wxPen : public wxPenBase
|
||||
public:
|
||||
wxPen() {}
|
||||
wxPen(const wxColour &colour, int width = 1, wxPenStyle style = wxPENSTYLE_SOLID);
|
||||
#if WXWIN_COMPATIBILITY_2_8
|
||||
wxDEPRECATED( wxPen(const wxColour& col, int width, wxBrushStyle style) );
|
||||
#if FUTURE_WXWIN_COMPATIBILITY_3_0
|
||||
wxDEPRECATED_FUTURE( wxPen(const wxColour& col, int width, int style) );
|
||||
#endif
|
||||
|
||||
wxPen(const wxBitmap& stipple, int width);
|
||||
|
@@ -25,6 +25,9 @@ class WXDLLEXPORT wxBrush : public wxBrushBase
|
||||
public:
|
||||
wxBrush();
|
||||
wxBrush(const wxColour& col, wxBrushStyle style = wxBRUSHSTYLE_SOLID);
|
||||
#if FUTURE_WXWIN_COMPATIBILITY_3_0
|
||||
wxDEPRECATED_FUTURE( wxBrush(const wxColour& col, int style) );
|
||||
#endif
|
||||
wxBrush(const wxBitmap& stipple);
|
||||
virtual ~wxBrush();
|
||||
|
||||
|
@@ -24,8 +24,8 @@ class WXDLLEXPORT wxPen : public wxPenBase
|
||||
public:
|
||||
wxPen() { }
|
||||
wxPen(const wxColour& col, int width = 1, wxPenStyle style = wxPENSTYLE_SOLID);
|
||||
#if WXWIN_COMPATIBILITY_2_8
|
||||
wxDEPRECATED( wxPen(const wxColour& col, int width, wxBrushStyle style) );
|
||||
#if FUTURE_WXWIN_COMPATIBILITY_3_0
|
||||
wxDEPRECATED_FUTURE( wxPen(const wxColour& col, int width, int style) );
|
||||
#endif
|
||||
|
||||
wxPen(const wxBitmap& stipple, int width);
|
||||
|
@@ -49,6 +49,9 @@ class WXDLLEXPORT wxBrush: public wxBrushBase
|
||||
public:
|
||||
wxBrush();
|
||||
wxBrush(const wxColour& rCol, wxBrushStyle nStyle = wxBRUSHSTYLE_SOLID);
|
||||
#if FUTURE_WXWIN_COMPATIBILITY_3_0
|
||||
wxDEPRECATED_FUTURE( wxBrush(const wxColour& col, int style) );
|
||||
#endif
|
||||
wxBrush(const wxBitmap& rStipple);
|
||||
virtual ~wxBrush();
|
||||
|
||||
|
@@ -64,8 +64,8 @@ public:
|
||||
,int nWidth = 1
|
||||
,wxPenStyle nStyle = wxPENSTYLE_SOLID
|
||||
);
|
||||
#if WXWIN_COMPATIBILITY_2_8
|
||||
wxDEPRECATED( wxPen(const wxColour& col, int width, wxBrushStyle style) );
|
||||
#if FUTURE_WXWIN_COMPATIBILITY_3_0
|
||||
wxDEPRECATED_FUTURE( wxPen(const wxColour& col, int width, int style) );
|
||||
#endif
|
||||
|
||||
wxPen( const wxBitmap& rStipple
|
||||
|
@@ -27,6 +27,9 @@ class WXDLLEXPORT wxBrush : public wxBrushBase
|
||||
public:
|
||||
wxBrush();
|
||||
wxBrush(const wxColour& col, wxBrushStyle style = wxBRUSHSTYLE_SOLID);
|
||||
#if FUTURE_WXWIN_COMPATIBILITY_3_0
|
||||
wxDEPRECATED_FUTURE( wxBrush(const wxColour& col, int style) );
|
||||
#endif
|
||||
wxBrush(const wxBitmap& stipple);
|
||||
virtual ~wxBrush();
|
||||
|
||||
|
@@ -76,8 +76,8 @@ class WXDLLEXPORT wxPen : public wxPenBase
|
||||
public:
|
||||
wxPen();
|
||||
wxPen(const wxColour& col, int width = 1, wxPenStyle style = wxPENSTYLE_SOLID);
|
||||
#if WXWIN_COMPATIBILITY_2_8
|
||||
wxDEPRECATED( wxPen(const wxColour& col, int width, wxBrushStyle style) );
|
||||
#if FUTURE_WXWIN_COMPATIBILITY_3_0
|
||||
wxDEPRECATED_FUTURE( wxPen(const wxColour& col, int width, int style) );
|
||||
#endif
|
||||
|
||||
wxPen(const wxBitmap& stipple, int width);
|
||||
|
@@ -15,21 +15,9 @@
|
||||
#include "wx/gdiobj.h"
|
||||
#include "wx/gdicmn.h"
|
||||
|
||||
#if WXWIN_COMPATIBILITY_2_8
|
||||
#include "wx/brush.h" // needed for some deprecated declarations
|
||||
#endif
|
||||
|
||||
enum wxPenStyle
|
||||
{
|
||||
#if WXWIN_COMPATIBILITY_2_8
|
||||
/* start of deprecated values */
|
||||
/* wxSOLID, wxTRANSPARENT, wxSTIPPLE are already defined in wxBrushStyle */
|
||||
wxDOT = 101,
|
||||
wxLONG_DASH = 102,
|
||||
wxSHORT_DASH = 103,
|
||||
wxDOT_DASH = 104,
|
||||
wxUSER_DASH = 105,
|
||||
/* end of deprecated values */
|
||||
wxPENSTYLE_INVALID = -1,
|
||||
|
||||
wxPENSTYLE_SOLID = wxSOLID,
|
||||
wxPENSTYLE_DOT = wxDOT,
|
||||
@@ -52,45 +40,7 @@ enum wxPenStyle
|
||||
wxPENSTYLE_VERTICAL_HATCH = wxVERTICAL_HATCH,
|
||||
|
||||
wxPENSTYLE_FIRST_HATCH = wxFIRST_HATCH,
|
||||
wxPENSTYLE_LAST_HATCH = wxLAST_HATCH,
|
||||
|
||||
wxPENSTYLE_MAX
|
||||
#else
|
||||
wxPENSTYLE_SOLID,
|
||||
wxPENSTYLE_DOT,
|
||||
wxPENSTYLE_LONG_DASH,
|
||||
wxPENSTYLE_SHORT_DASH,
|
||||
wxPENSTYLE_DOT_DASH,
|
||||
wxPENSTYLE_USER_DASH,
|
||||
|
||||
wxPENSTYLE_TRANSPARENT,
|
||||
|
||||
/* Pen Stippling. */
|
||||
wxPENSTYLE_STIPPLE_MASK_OPAQUE,
|
||||
/* mask is used for blitting monochrome using text fore and back ground colors */
|
||||
|
||||
wxPENSTYLE_STIPPLE_MASK,
|
||||
/* mask is used for masking areas in the stipple bitmap (TO DO) */
|
||||
|
||||
wxPENSTYLE_STIPPLE,
|
||||
/* drawn with a Pen, and without any Brush -- and it can be stippled. */
|
||||
|
||||
/* In wxWidgets < 2.6 use WX_HATCH macro */
|
||||
/* to verify these wx*_HATCH are in style */
|
||||
/* of wxBrush. In wxWidgets >= 2.6 use */
|
||||
/* wxBrush::IsHatch() instead. */
|
||||
wxPENSTYLE_BDIAGONAL_HATCH,
|
||||
wxPENSTYLE_CROSSDIAG_HATCH,
|
||||
wxPENSTYLE_FDIAGONAL_HATCH,
|
||||
wxPENSTYLE_CROSS_HATCH,
|
||||
wxPENSTYLE_HORIZONTAL_HATCH,
|
||||
wxPENSTYLE_VERTICAL_HATCH,
|
||||
|
||||
wxPENSTYLE_FIRST_HATCH = wxPENSTYLE_BDIAGONAL_HATCH,
|
||||
wxPENSTYLE_LAST_HATCH = wxPENSTYLE_VERTICAL_HATCH,
|
||||
|
||||
wxPENSTYLE_MAX
|
||||
#endif
|
||||
wxPENSTYLE_LAST_HATCH = wxLAST_HATCH
|
||||
};
|
||||
|
||||
enum wxPenJoin
|
||||
@@ -135,8 +85,8 @@ public:
|
||||
virtual int GetWidth() const = 0;
|
||||
virtual int GetDashes(wxDash **ptr) const = 0;
|
||||
|
||||
#if WXWIN_COMPATIBILITY_2_8
|
||||
void SetStyle(wxBrushStyle style)
|
||||
#if FUTURE_WXWIN_COMPATIBILITY_3_0
|
||||
wxDEPRECATED_FUTURE( void SetStyle(int style) )
|
||||
{ SetStyle((wxPenStyle)style); }
|
||||
#endif
|
||||
};
|
||||
@@ -167,6 +117,11 @@ class WXDLLIMPEXP_CORE wxPenList: public wxGDIObjListBase
|
||||
{
|
||||
public:
|
||||
wxPen *FindOrCreatePen(const wxColour& colour, int width, wxPenStyle style);
|
||||
|
||||
#if FUTURE_WXWIN_COMPATIBILITY_3_0
|
||||
wxPen *FindOrCreatePen(const wxColour& colour, int width, int style)
|
||||
{ return FindOrCreatePen(colour, width, (wxPenStyle)style); }
|
||||
#endif
|
||||
#if WXWIN_COMPATIBILITY_2_6
|
||||
wxDEPRECATED( void AddPen(wxPen*) );
|
||||
wxDEPRECATED( void RemovePen(wxPen*) );
|
||||
|
@@ -32,6 +32,9 @@ public:
|
||||
wxBrush() { }
|
||||
|
||||
wxBrush( const wxColour &colour, wxBrushStyle style = wxBRUSHSTYLE_SOLID );
|
||||
#if FUTURE_WXWIN_COMPATIBILITY_3_0
|
||||
wxDEPRECATED_FUTURE( wxBrush(const wxColour& col, int style) );
|
||||
#endif
|
||||
wxBrush( const wxBitmap &stippleBitmap );
|
||||
virtual ~wxBrush();
|
||||
|
||||
|
@@ -35,8 +35,8 @@ public:
|
||||
wxPen() { }
|
||||
|
||||
wxPen( const wxColour &colour, int width = 1, wxPenStyle style = wxPENSTYLE_SOLID );
|
||||
#if WXWIN_COMPATIBILITY_2_8
|
||||
wxDEPRECATED( wxPen(const wxColour& col, int width, wxBrushStyle style) );
|
||||
#if FUTURE_WXWIN_COMPATIBILITY_3_0
|
||||
wxDEPRECATED_FUTURE( wxPen(const wxColour& col, int width, int style) );
|
||||
#endif
|
||||
|
||||
wxPen( const wxBitmap &stipple, int width );
|
||||
|
Reference in New Issue
Block a user