Big fix for GTK 1.1.5
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1031 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -155,7 +155,6 @@ void wxClipboard::SetData( wxDataObject *data )
|
|||||||
selection_handler,
|
selection_handler,
|
||||||
NULL );
|
NULL );
|
||||||
break;
|
break;
|
||||||
*/
|
|
||||||
case wxDF_TEXT:
|
case wxDF_TEXT:
|
||||||
gtk_selection_add_handler( m_clipboardWidget,
|
gtk_selection_add_handler( m_clipboardWidget,
|
||||||
g_clipboardAtom,
|
g_clipboardAtom,
|
||||||
@@ -163,6 +162,7 @@ void wxClipboard::SetData( wxDataObject *data )
|
|||||||
selection_handler,
|
selection_handler,
|
||||||
NULL );
|
NULL );
|
||||||
break;
|
break;
|
||||||
|
*/
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@@ -122,6 +122,8 @@ gdk_window_transparent_new ( GdkWindow *parent,
|
|||||||
gprivate->height = (attributes->height > 1) ? (attributes->height) : (1);
|
gprivate->height = (attributes->height > 1) ? (attributes->height) : (1);
|
||||||
gprivate->window_type = attributes->window_type;
|
gprivate->window_type = attributes->window_type;
|
||||||
gprivate->extension_events = FALSE;
|
gprivate->extension_events = FALSE;
|
||||||
|
|
||||||
|
#ifndef NEW_GTK_DND_CODE
|
||||||
gprivate->dnd_drag_data_type = None;
|
gprivate->dnd_drag_data_type = None;
|
||||||
gprivate->dnd_drag_data_typesavail =
|
gprivate->dnd_drag_data_typesavail =
|
||||||
gprivate->dnd_drop_data_typesavail = NULL;
|
gprivate->dnd_drop_data_typesavail = NULL;
|
||||||
@@ -130,6 +132,7 @@ gdk_window_transparent_new ( GdkWindow *parent,
|
|||||||
gprivate->dnd_drop_data_numtypesavail =
|
gprivate->dnd_drop_data_numtypesavail =
|
||||||
gprivate->dnd_drag_data_numtypesavail = 0;
|
gprivate->dnd_drag_data_numtypesavail = 0;
|
||||||
gprivate->dnd_drag_eventmask = gprivate->dnd_drag_savedeventmask = 0;
|
gprivate->dnd_drag_eventmask = gprivate->dnd_drag_savedeventmask = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
gprivate->filters = NULL;
|
gprivate->filters = NULL;
|
||||||
gprivate->children = NULL;
|
gprivate->children = NULL;
|
||||||
|
@@ -17,6 +17,16 @@
|
|||||||
#include "wx/utils.h"
|
#include "wx/utils.h"
|
||||||
#include <wx/intl.h>
|
#include <wx/intl.h>
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
// conditional compilation
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#if (GTK_MINOR_VERSION == 1)
|
||||||
|
#if (GTK_MICRO_VERSION >= 5)
|
||||||
|
#define NEW_GTK_SCROLL_CODE
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// data
|
// data
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@@ -91,7 +101,12 @@ bool wxListBox::Create( wxWindow *parent, wxWindowID id,
|
|||||||
|
|
||||||
gtk_list_set_selection_mode( GTK_LIST(m_list), mode );
|
gtk_list_set_selection_mode( GTK_LIST(m_list), mode );
|
||||||
|
|
||||||
|
#ifdef NEW_GTK_SCROLL_CODE
|
||||||
|
gtk_scrolled_window_add_with_viewport( GTK_SCROLLED_WINDOW(m_widget), GTK_WIDGET(m_list) );
|
||||||
|
#else
|
||||||
gtk_container_add( GTK_CONTAINER(m_widget), GTK_WIDGET(m_list) );
|
gtk_container_add( GTK_CONTAINER(m_widget), GTK_WIDGET(m_list) );
|
||||||
|
#endif
|
||||||
|
|
||||||
gtk_widget_show( GTK_WIDGET(m_list) );
|
gtk_widget_show( GTK_WIDGET(m_list) );
|
||||||
|
|
||||||
wxSize newSize = size;
|
wxSize newSize = size;
|
||||||
@@ -163,7 +178,9 @@ void wxListBox::AppendCommon( const wxString &item )
|
|||||||
|
|
||||||
ConnectWidget( list_item );
|
ConnectWidget( list_item );
|
||||||
|
|
||||||
|
#ifndef NEW_GTK_DND_CODE
|
||||||
if (m_dropTarget) m_dropTarget->RegisterWidget( list_item );
|
if (m_dropTarget) m_dropTarget->RegisterWidget( list_item );
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxListBox::Append( const wxString &item )
|
void wxListBox::Append( const wxString &item )
|
||||||
@@ -481,46 +498,31 @@ void wxListBox::SetDropTarget( wxDropTarget *dropTarget )
|
|||||||
{
|
{
|
||||||
wxCHECK_RET( m_list != NULL, "invalid listbox" );
|
wxCHECK_RET( m_list != NULL, "invalid listbox" );
|
||||||
|
|
||||||
|
#ifndef NEW_GTK_DND_CODE
|
||||||
if (m_dropTarget)
|
if (m_dropTarget)
|
||||||
{
|
{
|
||||||
GList *child = m_list->children;
|
GList *child = m_list->children;
|
||||||
while (child)
|
while (child)
|
||||||
{
|
{
|
||||||
#ifdef NEW_GTK_DND_CODE
|
|
||||||
GtkBin *item = GTK_BIN( child->data );
|
|
||||||
m_dropTarget->UnregisterWidget( item->child );
|
|
||||||
#else
|
|
||||||
m_dropTarget->UnregisterWidget( GTK_WIDGET( child->data ) );
|
m_dropTarget->UnregisterWidget( GTK_WIDGET( child->data ) );
|
||||||
#endif
|
|
||||||
child = child->next;
|
child = child->next;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
wxWindow::SetDropTarget( dropTarget );
|
||||||
|
|
||||||
#ifndef NEW_GTK_DND_CODE
|
#ifndef NEW_GTK_DND_CODE
|
||||||
if (m_dropTarget) m_dropTarget->UnregisterWidget( m_list );
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (m_dropTarget) delete m_dropTarget;
|
|
||||||
m_dropTarget = dropTarget;
|
|
||||||
|
|
||||||
#ifndef NEW_GTK_DND_CODE
|
|
||||||
if (m_dropTarget) m_dropTarget->RegisterWidget( dnd_widget );
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (m_dropTarget)
|
if (m_dropTarget)
|
||||||
{
|
{
|
||||||
GList *child = m_list->children;
|
GList *child = m_list->children;
|
||||||
while (child)
|
while (child)
|
||||||
{
|
{
|
||||||
#ifdef NEW_GTK_DND_CODE
|
|
||||||
GtkBin *item = GTK_BIN( child->data );
|
|
||||||
m_dropTarget->RegisterWidget( item->child );
|
|
||||||
#else
|
|
||||||
m_dropTarget->RegisterWidget( GTK_WIDGET( child->data ) );
|
m_dropTarget->RegisterWidget( GTK_WIDGET( child->data ) );
|
||||||
#endif
|
|
||||||
child = child->next;
|
child = child->next;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
GtkWidget *wxListBox::GetConnectWidget()
|
GtkWidget *wxListBox::GetConnectWidget()
|
||||||
|
@@ -10,6 +10,16 @@
|
|||||||
#include "wx/gtk/win_gtk.h"
|
#include "wx/gtk/win_gtk.h"
|
||||||
#include <gtk/gtkfeatures.h>
|
#include <gtk/gtkfeatures.h>
|
||||||
|
|
||||||
|
/*-------------------------------------------------------------------------
|
||||||
|
// conditional compilation
|
||||||
|
//------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
#if (GTK_MINOR_VERSION == 1)
|
||||||
|
#if (GTK_MICRO_VERSION >= 5)
|
||||||
|
#define NEW_GTK_CONSTRUCT_CODE
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif /* __cplusplus */
|
#endif /* __cplusplus */
|
||||||
@@ -17,7 +27,9 @@ extern "C" {
|
|||||||
static void gtk_myfixed_class_init (GtkMyFixedClass *klass);
|
static void gtk_myfixed_class_init (GtkMyFixedClass *klass);
|
||||||
static void gtk_myfixed_init (GtkMyFixed *myfixed);
|
static void gtk_myfixed_init (GtkMyFixed *myfixed);
|
||||||
static void gtk_myfixed_map (GtkWidget *widget);
|
static void gtk_myfixed_map (GtkWidget *widget);
|
||||||
|
#ifndef NEW_GTK_CONSTRUCT_CODE
|
||||||
static void gtk_myfixed_unmap (GtkWidget *widget);
|
static void gtk_myfixed_unmap (GtkWidget *widget);
|
||||||
|
#endif
|
||||||
static void gtk_myfixed_realize (GtkWidget *widget);
|
static void gtk_myfixed_realize (GtkWidget *widget);
|
||||||
static void gtk_myfixed_size_request (GtkWidget *widget,
|
static void gtk_myfixed_size_request (GtkWidget *widget,
|
||||||
GtkRequisition *requisition);
|
GtkRequisition *requisition);
|
||||||
@@ -39,6 +51,9 @@ static void gtk_myfixed_foreach (GtkContainer *container,
|
|||||||
#endif
|
#endif
|
||||||
GtkCallback callback,
|
GtkCallback callback,
|
||||||
gpointer callback_data);
|
gpointer callback_data);
|
||||||
|
#ifdef NEW_GTK_CONSTRUCT_CODE
|
||||||
|
static GtkType gtk_myfixed_child_type (GtkContainer *container);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
static GtkContainerClass *parent_class = NULL;
|
static GtkContainerClass *parent_class = NULL;
|
||||||
@@ -58,8 +73,14 @@ gtk_myfixed_get_type ()
|
|||||||
sizeof (GtkMyFixedClass),
|
sizeof (GtkMyFixedClass),
|
||||||
(GtkClassInitFunc) gtk_myfixed_class_init,
|
(GtkClassInitFunc) gtk_myfixed_class_init,
|
||||||
(GtkObjectInitFunc) gtk_myfixed_init,
|
(GtkObjectInitFunc) gtk_myfixed_init,
|
||||||
(GtkArgSetFunc) NULL,
|
#ifndef NEW_GTK_CONSTRUCT_CODE
|
||||||
|
(GtkArgSetFunc) NULL,
|
||||||
(GtkArgGetFunc) NULL,
|
(GtkArgGetFunc) NULL,
|
||||||
|
#else
|
||||||
|
/* reserved_1 */ NULL,
|
||||||
|
/* reserved_2 */ NULL,
|
||||||
|
(GtkClassInitFunc) NULL,
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
myfixed_type = gtk_type_unique (gtk_container_get_type (), &myfixed_info);
|
myfixed_type = gtk_type_unique (gtk_container_get_type (), &myfixed_info);
|
||||||
@@ -79,10 +100,16 @@ gtk_myfixed_class_init (GtkMyFixedClass *klass)
|
|||||||
widget_class = (GtkWidgetClass*) klass;
|
widget_class = (GtkWidgetClass*) klass;
|
||||||
container_class = (GtkContainerClass*) klass;
|
container_class = (GtkContainerClass*) klass;
|
||||||
|
|
||||||
|
#ifndef NEW_GTK_CONSTRUCT_CODE
|
||||||
parent_class = gtk_type_class (gtk_container_get_type ());
|
parent_class = gtk_type_class (gtk_container_get_type ());
|
||||||
|
#else
|
||||||
|
parent_class = gtk_type_class (GTK_TYPE_CONTAINER);
|
||||||
|
#endif
|
||||||
|
|
||||||
widget_class->map = gtk_myfixed_map;
|
widget_class->map = gtk_myfixed_map;
|
||||||
|
#ifndef NEW_GTK_CONSTRUCT_CODE
|
||||||
widget_class->unmap = gtk_myfixed_unmap;
|
widget_class->unmap = gtk_myfixed_unmap;
|
||||||
|
#endif
|
||||||
widget_class->realize = gtk_myfixed_realize;
|
widget_class->realize = gtk_myfixed_realize;
|
||||||
widget_class->size_request = gtk_myfixed_size_request;
|
widget_class->size_request = gtk_myfixed_size_request;
|
||||||
widget_class->size_allocate = gtk_myfixed_size_allocate;
|
widget_class->size_allocate = gtk_myfixed_size_allocate;
|
||||||
@@ -96,13 +123,28 @@ gtk_myfixed_class_init (GtkMyFixedClass *klass)
|
|||||||
#else
|
#else
|
||||||
container_class->foreach = gtk_myfixed_foreach;
|
container_class->foreach = gtk_myfixed_foreach;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef NEW_GTK_CONSTRUCT_CODE
|
||||||
|
container_class->child_type = gtk_myfixed_child_type;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef NEW_GTK_CONSTRUCT_CODE
|
||||||
|
static GtkType
|
||||||
|
gtk_myfixed_child_type (GtkContainer *container)
|
||||||
|
{
|
||||||
|
return GTK_TYPE_WIDGET;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_myfixed_init (GtkMyFixed *myfixed)
|
gtk_myfixed_init (GtkMyFixed *myfixed)
|
||||||
{
|
{
|
||||||
GTK_WIDGET_UNSET_FLAGS (myfixed, GTK_NO_WINDOW);
|
GTK_WIDGET_UNSET_FLAGS (myfixed, GTK_NO_WINDOW);
|
||||||
|
|
||||||
|
#ifndef NEW_GTK_CONSTRUCT_CODE
|
||||||
GTK_WIDGET_SET_FLAGS (myfixed, GTK_BASIC);
|
GTK_WIDGET_SET_FLAGS (myfixed, GTK_BASIC);
|
||||||
|
#endif
|
||||||
|
|
||||||
myfixed->children = NULL;
|
myfixed->children = NULL;
|
||||||
}
|
}
|
||||||
@@ -209,6 +251,7 @@ gtk_myfixed_map (GtkWidget *widget)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef NEW_GTK_CONSTRUCT_CODE
|
||||||
static void
|
static void
|
||||||
gtk_myfixed_unmap (GtkWidget *widget)
|
gtk_myfixed_unmap (GtkWidget *widget)
|
||||||
{
|
{
|
||||||
@@ -217,6 +260,7 @@ gtk_myfixed_unmap (GtkWidget *widget)
|
|||||||
|
|
||||||
GTK_WIDGET_UNSET_FLAGS (widget, GTK_MAPPED);
|
GTK_WIDGET_UNSET_FLAGS (widget, GTK_MAPPED);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_myfixed_realize (GtkWidget *widget)
|
gtk_myfixed_realize (GtkWidget *widget)
|
||||||
|
@@ -109,6 +109,16 @@
|
|||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
// conditional compilation
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#if (GTK_MINOR_VERSION == 1)
|
||||||
|
#if (GTK_MICRO_VERSION >= 5)
|
||||||
|
#define NEW_GTK_SCROLL_CODE
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// data
|
// data
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@@ -956,6 +966,7 @@ bool wxWindow::Create( wxWindow *parent, wxWindowID id,
|
|||||||
PreCreation( parent, id, pos, size, style, name );
|
PreCreation( parent, id, pos, size, style, name );
|
||||||
|
|
||||||
m_widget = gtk_scrolled_window_new( (GtkAdjustment *) NULL, (GtkAdjustment *) NULL );
|
m_widget = gtk_scrolled_window_new( (GtkAdjustment *) NULL, (GtkAdjustment *) NULL );
|
||||||
|
GTK_WIDGET_UNSET_FLAGS( m_widget, GTK_CAN_FOCUS );
|
||||||
|
|
||||||
GtkScrolledWindow *s_window = GTK_SCROLLED_WINDOW(m_widget);
|
GtkScrolledWindow *s_window = GTK_SCROLLED_WINDOW(m_widget);
|
||||||
|
|
||||||
@@ -992,7 +1003,15 @@ bool wxWindow::Create( wxWindow *parent, wxWindowID id,
|
|||||||
gtk_signal_connect(GTK_OBJECT(m_vAdjust), "changed",
|
gtk_signal_connect(GTK_OBJECT(m_vAdjust), "changed",
|
||||||
(GtkSignalFunc) gtk_window_vscroll_change_callback, (gpointer) this );
|
(GtkSignalFunc) gtk_window_vscroll_change_callback, (gpointer) this );
|
||||||
|
|
||||||
|
m_wxwindow = gtk_myfixed_new();
|
||||||
|
|
||||||
|
#ifdef NEW_GTK_SCROLL_CODE
|
||||||
|
gtk_scrolled_window_add_with_viewport( GTK_SCROLLED_WINDOW(m_widget), m_wxwindow );
|
||||||
|
GtkViewport *viewport = GTK_VIEWPORT(s_window->child);
|
||||||
|
#else
|
||||||
|
gtk_container_add( GTK_CONTAINER(m_widget), m_wxwindow );
|
||||||
GtkViewport *viewport = GTK_VIEWPORT(s_window->viewport);
|
GtkViewport *viewport = GTK_VIEWPORT(s_window->viewport);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (m_windowStyle & wxRAISED_BORDER)
|
if (m_windowStyle & wxRAISED_BORDER)
|
||||||
{
|
{
|
||||||
@@ -1007,17 +1026,11 @@ bool wxWindow::Create( wxWindow *parent, wxWindowID id,
|
|||||||
gtk_viewport_set_shadow_type( viewport, GTK_SHADOW_NONE );
|
gtk_viewport_set_shadow_type( viewport, GTK_SHADOW_NONE );
|
||||||
}
|
}
|
||||||
|
|
||||||
m_wxwindow = gtk_myfixed_new();
|
|
||||||
|
|
||||||
GTK_WIDGET_UNSET_FLAGS( m_widget, GTK_CAN_FOCUS );
|
|
||||||
|
|
||||||
if (m_windowStyle & wxTAB_TRAVERSAL == wxTAB_TRAVERSAL)
|
if (m_windowStyle & wxTAB_TRAVERSAL == wxTAB_TRAVERSAL)
|
||||||
GTK_WIDGET_UNSET_FLAGS( m_wxwindow, GTK_CAN_FOCUS );
|
GTK_WIDGET_UNSET_FLAGS( m_wxwindow, GTK_CAN_FOCUS );
|
||||||
else
|
else
|
||||||
GTK_WIDGET_SET_FLAGS( m_wxwindow, GTK_CAN_FOCUS );
|
GTK_WIDGET_SET_FLAGS( m_wxwindow, GTK_CAN_FOCUS );
|
||||||
|
|
||||||
gtk_container_add( GTK_CONTAINER(m_widget), m_wxwindow );
|
|
||||||
|
|
||||||
// shut the viewport up
|
// shut the viewport up
|
||||||
gtk_viewport_set_hadjustment( viewport, (GtkAdjustment*) gtk_adjustment_new( 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) );
|
gtk_viewport_set_hadjustment( viewport, (GtkAdjustment*) gtk_adjustment_new( 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) );
|
||||||
gtk_viewport_set_vadjustment( viewport, (GtkAdjustment*) gtk_adjustment_new( 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) );
|
gtk_viewport_set_vadjustment( viewport, (GtkAdjustment*) gtk_adjustment_new( 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) );
|
||||||
@@ -1403,7 +1416,12 @@ void wxWindow::SetClientSize( int width, int height )
|
|||||||
GtkScrolledWindow *scroll_window = GTK_SCROLLED_WINDOW(m_widget);
|
GtkScrolledWindow *scroll_window = GTK_SCROLLED_WINDOW(m_widget);
|
||||||
GtkScrolledWindowClass *scroll_class = GTK_SCROLLED_WINDOW_CLASS( GTK_OBJECT(m_widget)->klass );
|
GtkScrolledWindowClass *scroll_class = GTK_SCROLLED_WINDOW_CLASS( GTK_OBJECT(m_widget)->klass );
|
||||||
|
|
||||||
|
#ifdef NEW_GTK_SCROLL_CODE
|
||||||
|
GtkWidget *viewport = scroll_window->child;
|
||||||
|
#else
|
||||||
GtkWidget *viewport = scroll_window->viewport;
|
GtkWidget *viewport = scroll_window->viewport;
|
||||||
|
#endif
|
||||||
|
|
||||||
GtkStyleClass *viewport_class = viewport->style->klass;
|
GtkStyleClass *viewport_class = viewport->style->klass;
|
||||||
|
|
||||||
GtkWidget *hscrollbar = scroll_window->hscrollbar;
|
GtkWidget *hscrollbar = scroll_window->hscrollbar;
|
||||||
@@ -1463,7 +1481,12 @@ void wxWindow::GetClientSize( int *width, int *height ) const
|
|||||||
GtkScrolledWindow *scroll_window = GTK_SCROLLED_WINDOW(m_widget);
|
GtkScrolledWindow *scroll_window = GTK_SCROLLED_WINDOW(m_widget);
|
||||||
GtkScrolledWindowClass *scroll_class = GTK_SCROLLED_WINDOW_CLASS( GTK_OBJECT(m_widget)->klass );
|
GtkScrolledWindowClass *scroll_class = GTK_SCROLLED_WINDOW_CLASS( GTK_OBJECT(m_widget)->klass );
|
||||||
|
|
||||||
|
#ifdef NEW_GTK_SCROLL_CODE
|
||||||
|
GtkWidget *viewport = scroll_window->child;
|
||||||
|
#else
|
||||||
GtkWidget *viewport = scroll_window->viewport;
|
GtkWidget *viewport = scroll_window->viewport;
|
||||||
|
#endif
|
||||||
|
|
||||||
GtkStyleClass *viewport_class = viewport->style->klass;
|
GtkStyleClass *viewport_class = viewport->style->klass;
|
||||||
|
|
||||||
GtkWidget *hscrollbar = scroll_window->hscrollbar;
|
GtkWidget *hscrollbar = scroll_window->hscrollbar;
|
||||||
|
@@ -155,7 +155,6 @@ void wxClipboard::SetData( wxDataObject *data )
|
|||||||
selection_handler,
|
selection_handler,
|
||||||
NULL );
|
NULL );
|
||||||
break;
|
break;
|
||||||
*/
|
|
||||||
case wxDF_TEXT:
|
case wxDF_TEXT:
|
||||||
gtk_selection_add_handler( m_clipboardWidget,
|
gtk_selection_add_handler( m_clipboardWidget,
|
||||||
g_clipboardAtom,
|
g_clipboardAtom,
|
||||||
@@ -163,6 +162,7 @@ void wxClipboard::SetData( wxDataObject *data )
|
|||||||
selection_handler,
|
selection_handler,
|
||||||
NULL );
|
NULL );
|
||||||
break;
|
break;
|
||||||
|
*/
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@@ -122,6 +122,8 @@ gdk_window_transparent_new ( GdkWindow *parent,
|
|||||||
gprivate->height = (attributes->height > 1) ? (attributes->height) : (1);
|
gprivate->height = (attributes->height > 1) ? (attributes->height) : (1);
|
||||||
gprivate->window_type = attributes->window_type;
|
gprivate->window_type = attributes->window_type;
|
||||||
gprivate->extension_events = FALSE;
|
gprivate->extension_events = FALSE;
|
||||||
|
|
||||||
|
#ifndef NEW_GTK_DND_CODE
|
||||||
gprivate->dnd_drag_data_type = None;
|
gprivate->dnd_drag_data_type = None;
|
||||||
gprivate->dnd_drag_data_typesavail =
|
gprivate->dnd_drag_data_typesavail =
|
||||||
gprivate->dnd_drop_data_typesavail = NULL;
|
gprivate->dnd_drop_data_typesavail = NULL;
|
||||||
@@ -130,6 +132,7 @@ gdk_window_transparent_new ( GdkWindow *parent,
|
|||||||
gprivate->dnd_drop_data_numtypesavail =
|
gprivate->dnd_drop_data_numtypesavail =
|
||||||
gprivate->dnd_drag_data_numtypesavail = 0;
|
gprivate->dnd_drag_data_numtypesavail = 0;
|
||||||
gprivate->dnd_drag_eventmask = gprivate->dnd_drag_savedeventmask = 0;
|
gprivate->dnd_drag_eventmask = gprivate->dnd_drag_savedeventmask = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
gprivate->filters = NULL;
|
gprivate->filters = NULL;
|
||||||
gprivate->children = NULL;
|
gprivate->children = NULL;
|
||||||
|
@@ -17,6 +17,16 @@
|
|||||||
#include "wx/utils.h"
|
#include "wx/utils.h"
|
||||||
#include <wx/intl.h>
|
#include <wx/intl.h>
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
// conditional compilation
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#if (GTK_MINOR_VERSION == 1)
|
||||||
|
#if (GTK_MICRO_VERSION >= 5)
|
||||||
|
#define NEW_GTK_SCROLL_CODE
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// data
|
// data
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@@ -91,7 +101,12 @@ bool wxListBox::Create( wxWindow *parent, wxWindowID id,
|
|||||||
|
|
||||||
gtk_list_set_selection_mode( GTK_LIST(m_list), mode );
|
gtk_list_set_selection_mode( GTK_LIST(m_list), mode );
|
||||||
|
|
||||||
|
#ifdef NEW_GTK_SCROLL_CODE
|
||||||
|
gtk_scrolled_window_add_with_viewport( GTK_SCROLLED_WINDOW(m_widget), GTK_WIDGET(m_list) );
|
||||||
|
#else
|
||||||
gtk_container_add( GTK_CONTAINER(m_widget), GTK_WIDGET(m_list) );
|
gtk_container_add( GTK_CONTAINER(m_widget), GTK_WIDGET(m_list) );
|
||||||
|
#endif
|
||||||
|
|
||||||
gtk_widget_show( GTK_WIDGET(m_list) );
|
gtk_widget_show( GTK_WIDGET(m_list) );
|
||||||
|
|
||||||
wxSize newSize = size;
|
wxSize newSize = size;
|
||||||
@@ -163,7 +178,9 @@ void wxListBox::AppendCommon( const wxString &item )
|
|||||||
|
|
||||||
ConnectWidget( list_item );
|
ConnectWidget( list_item );
|
||||||
|
|
||||||
|
#ifndef NEW_GTK_DND_CODE
|
||||||
if (m_dropTarget) m_dropTarget->RegisterWidget( list_item );
|
if (m_dropTarget) m_dropTarget->RegisterWidget( list_item );
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxListBox::Append( const wxString &item )
|
void wxListBox::Append( const wxString &item )
|
||||||
@@ -481,46 +498,31 @@ void wxListBox::SetDropTarget( wxDropTarget *dropTarget )
|
|||||||
{
|
{
|
||||||
wxCHECK_RET( m_list != NULL, "invalid listbox" );
|
wxCHECK_RET( m_list != NULL, "invalid listbox" );
|
||||||
|
|
||||||
|
#ifndef NEW_GTK_DND_CODE
|
||||||
if (m_dropTarget)
|
if (m_dropTarget)
|
||||||
{
|
{
|
||||||
GList *child = m_list->children;
|
GList *child = m_list->children;
|
||||||
while (child)
|
while (child)
|
||||||
{
|
{
|
||||||
#ifdef NEW_GTK_DND_CODE
|
|
||||||
GtkBin *item = GTK_BIN( child->data );
|
|
||||||
m_dropTarget->UnregisterWidget( item->child );
|
|
||||||
#else
|
|
||||||
m_dropTarget->UnregisterWidget( GTK_WIDGET( child->data ) );
|
m_dropTarget->UnregisterWidget( GTK_WIDGET( child->data ) );
|
||||||
#endif
|
|
||||||
child = child->next;
|
child = child->next;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
wxWindow::SetDropTarget( dropTarget );
|
||||||
|
|
||||||
#ifndef NEW_GTK_DND_CODE
|
#ifndef NEW_GTK_DND_CODE
|
||||||
if (m_dropTarget) m_dropTarget->UnregisterWidget( m_list );
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (m_dropTarget) delete m_dropTarget;
|
|
||||||
m_dropTarget = dropTarget;
|
|
||||||
|
|
||||||
#ifndef NEW_GTK_DND_CODE
|
|
||||||
if (m_dropTarget) m_dropTarget->RegisterWidget( dnd_widget );
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (m_dropTarget)
|
if (m_dropTarget)
|
||||||
{
|
{
|
||||||
GList *child = m_list->children;
|
GList *child = m_list->children;
|
||||||
while (child)
|
while (child)
|
||||||
{
|
{
|
||||||
#ifdef NEW_GTK_DND_CODE
|
|
||||||
GtkBin *item = GTK_BIN( child->data );
|
|
||||||
m_dropTarget->RegisterWidget( item->child );
|
|
||||||
#else
|
|
||||||
m_dropTarget->RegisterWidget( GTK_WIDGET( child->data ) );
|
m_dropTarget->RegisterWidget( GTK_WIDGET( child->data ) );
|
||||||
#endif
|
|
||||||
child = child->next;
|
child = child->next;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
GtkWidget *wxListBox::GetConnectWidget()
|
GtkWidget *wxListBox::GetConnectWidget()
|
||||||
|
@@ -10,6 +10,16 @@
|
|||||||
#include "wx/gtk/win_gtk.h"
|
#include "wx/gtk/win_gtk.h"
|
||||||
#include <gtk/gtkfeatures.h>
|
#include <gtk/gtkfeatures.h>
|
||||||
|
|
||||||
|
/*-------------------------------------------------------------------------
|
||||||
|
// conditional compilation
|
||||||
|
//------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
#if (GTK_MINOR_VERSION == 1)
|
||||||
|
#if (GTK_MICRO_VERSION >= 5)
|
||||||
|
#define NEW_GTK_CONSTRUCT_CODE
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif /* __cplusplus */
|
#endif /* __cplusplus */
|
||||||
@@ -17,7 +27,9 @@ extern "C" {
|
|||||||
static void gtk_myfixed_class_init (GtkMyFixedClass *klass);
|
static void gtk_myfixed_class_init (GtkMyFixedClass *klass);
|
||||||
static void gtk_myfixed_init (GtkMyFixed *myfixed);
|
static void gtk_myfixed_init (GtkMyFixed *myfixed);
|
||||||
static void gtk_myfixed_map (GtkWidget *widget);
|
static void gtk_myfixed_map (GtkWidget *widget);
|
||||||
|
#ifndef NEW_GTK_CONSTRUCT_CODE
|
||||||
static void gtk_myfixed_unmap (GtkWidget *widget);
|
static void gtk_myfixed_unmap (GtkWidget *widget);
|
||||||
|
#endif
|
||||||
static void gtk_myfixed_realize (GtkWidget *widget);
|
static void gtk_myfixed_realize (GtkWidget *widget);
|
||||||
static void gtk_myfixed_size_request (GtkWidget *widget,
|
static void gtk_myfixed_size_request (GtkWidget *widget,
|
||||||
GtkRequisition *requisition);
|
GtkRequisition *requisition);
|
||||||
@@ -39,6 +51,9 @@ static void gtk_myfixed_foreach (GtkContainer *container,
|
|||||||
#endif
|
#endif
|
||||||
GtkCallback callback,
|
GtkCallback callback,
|
||||||
gpointer callback_data);
|
gpointer callback_data);
|
||||||
|
#ifdef NEW_GTK_CONSTRUCT_CODE
|
||||||
|
static GtkType gtk_myfixed_child_type (GtkContainer *container);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
static GtkContainerClass *parent_class = NULL;
|
static GtkContainerClass *parent_class = NULL;
|
||||||
@@ -58,8 +73,14 @@ gtk_myfixed_get_type ()
|
|||||||
sizeof (GtkMyFixedClass),
|
sizeof (GtkMyFixedClass),
|
||||||
(GtkClassInitFunc) gtk_myfixed_class_init,
|
(GtkClassInitFunc) gtk_myfixed_class_init,
|
||||||
(GtkObjectInitFunc) gtk_myfixed_init,
|
(GtkObjectInitFunc) gtk_myfixed_init,
|
||||||
(GtkArgSetFunc) NULL,
|
#ifndef NEW_GTK_CONSTRUCT_CODE
|
||||||
|
(GtkArgSetFunc) NULL,
|
||||||
(GtkArgGetFunc) NULL,
|
(GtkArgGetFunc) NULL,
|
||||||
|
#else
|
||||||
|
/* reserved_1 */ NULL,
|
||||||
|
/* reserved_2 */ NULL,
|
||||||
|
(GtkClassInitFunc) NULL,
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
myfixed_type = gtk_type_unique (gtk_container_get_type (), &myfixed_info);
|
myfixed_type = gtk_type_unique (gtk_container_get_type (), &myfixed_info);
|
||||||
@@ -79,10 +100,16 @@ gtk_myfixed_class_init (GtkMyFixedClass *klass)
|
|||||||
widget_class = (GtkWidgetClass*) klass;
|
widget_class = (GtkWidgetClass*) klass;
|
||||||
container_class = (GtkContainerClass*) klass;
|
container_class = (GtkContainerClass*) klass;
|
||||||
|
|
||||||
|
#ifndef NEW_GTK_CONSTRUCT_CODE
|
||||||
parent_class = gtk_type_class (gtk_container_get_type ());
|
parent_class = gtk_type_class (gtk_container_get_type ());
|
||||||
|
#else
|
||||||
|
parent_class = gtk_type_class (GTK_TYPE_CONTAINER);
|
||||||
|
#endif
|
||||||
|
|
||||||
widget_class->map = gtk_myfixed_map;
|
widget_class->map = gtk_myfixed_map;
|
||||||
|
#ifndef NEW_GTK_CONSTRUCT_CODE
|
||||||
widget_class->unmap = gtk_myfixed_unmap;
|
widget_class->unmap = gtk_myfixed_unmap;
|
||||||
|
#endif
|
||||||
widget_class->realize = gtk_myfixed_realize;
|
widget_class->realize = gtk_myfixed_realize;
|
||||||
widget_class->size_request = gtk_myfixed_size_request;
|
widget_class->size_request = gtk_myfixed_size_request;
|
||||||
widget_class->size_allocate = gtk_myfixed_size_allocate;
|
widget_class->size_allocate = gtk_myfixed_size_allocate;
|
||||||
@@ -96,13 +123,28 @@ gtk_myfixed_class_init (GtkMyFixedClass *klass)
|
|||||||
#else
|
#else
|
||||||
container_class->foreach = gtk_myfixed_foreach;
|
container_class->foreach = gtk_myfixed_foreach;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef NEW_GTK_CONSTRUCT_CODE
|
||||||
|
container_class->child_type = gtk_myfixed_child_type;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef NEW_GTK_CONSTRUCT_CODE
|
||||||
|
static GtkType
|
||||||
|
gtk_myfixed_child_type (GtkContainer *container)
|
||||||
|
{
|
||||||
|
return GTK_TYPE_WIDGET;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_myfixed_init (GtkMyFixed *myfixed)
|
gtk_myfixed_init (GtkMyFixed *myfixed)
|
||||||
{
|
{
|
||||||
GTK_WIDGET_UNSET_FLAGS (myfixed, GTK_NO_WINDOW);
|
GTK_WIDGET_UNSET_FLAGS (myfixed, GTK_NO_WINDOW);
|
||||||
|
|
||||||
|
#ifndef NEW_GTK_CONSTRUCT_CODE
|
||||||
GTK_WIDGET_SET_FLAGS (myfixed, GTK_BASIC);
|
GTK_WIDGET_SET_FLAGS (myfixed, GTK_BASIC);
|
||||||
|
#endif
|
||||||
|
|
||||||
myfixed->children = NULL;
|
myfixed->children = NULL;
|
||||||
}
|
}
|
||||||
@@ -209,6 +251,7 @@ gtk_myfixed_map (GtkWidget *widget)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef NEW_GTK_CONSTRUCT_CODE
|
||||||
static void
|
static void
|
||||||
gtk_myfixed_unmap (GtkWidget *widget)
|
gtk_myfixed_unmap (GtkWidget *widget)
|
||||||
{
|
{
|
||||||
@@ -217,6 +260,7 @@ gtk_myfixed_unmap (GtkWidget *widget)
|
|||||||
|
|
||||||
GTK_WIDGET_UNSET_FLAGS (widget, GTK_MAPPED);
|
GTK_WIDGET_UNSET_FLAGS (widget, GTK_MAPPED);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_myfixed_realize (GtkWidget *widget)
|
gtk_myfixed_realize (GtkWidget *widget)
|
||||||
|
@@ -109,6 +109,16 @@
|
|||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
// conditional compilation
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#if (GTK_MINOR_VERSION == 1)
|
||||||
|
#if (GTK_MICRO_VERSION >= 5)
|
||||||
|
#define NEW_GTK_SCROLL_CODE
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// data
|
// data
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@@ -956,6 +966,7 @@ bool wxWindow::Create( wxWindow *parent, wxWindowID id,
|
|||||||
PreCreation( parent, id, pos, size, style, name );
|
PreCreation( parent, id, pos, size, style, name );
|
||||||
|
|
||||||
m_widget = gtk_scrolled_window_new( (GtkAdjustment *) NULL, (GtkAdjustment *) NULL );
|
m_widget = gtk_scrolled_window_new( (GtkAdjustment *) NULL, (GtkAdjustment *) NULL );
|
||||||
|
GTK_WIDGET_UNSET_FLAGS( m_widget, GTK_CAN_FOCUS );
|
||||||
|
|
||||||
GtkScrolledWindow *s_window = GTK_SCROLLED_WINDOW(m_widget);
|
GtkScrolledWindow *s_window = GTK_SCROLLED_WINDOW(m_widget);
|
||||||
|
|
||||||
@@ -992,7 +1003,15 @@ bool wxWindow::Create( wxWindow *parent, wxWindowID id,
|
|||||||
gtk_signal_connect(GTK_OBJECT(m_vAdjust), "changed",
|
gtk_signal_connect(GTK_OBJECT(m_vAdjust), "changed",
|
||||||
(GtkSignalFunc) gtk_window_vscroll_change_callback, (gpointer) this );
|
(GtkSignalFunc) gtk_window_vscroll_change_callback, (gpointer) this );
|
||||||
|
|
||||||
|
m_wxwindow = gtk_myfixed_new();
|
||||||
|
|
||||||
|
#ifdef NEW_GTK_SCROLL_CODE
|
||||||
|
gtk_scrolled_window_add_with_viewport( GTK_SCROLLED_WINDOW(m_widget), m_wxwindow );
|
||||||
|
GtkViewport *viewport = GTK_VIEWPORT(s_window->child);
|
||||||
|
#else
|
||||||
|
gtk_container_add( GTK_CONTAINER(m_widget), m_wxwindow );
|
||||||
GtkViewport *viewport = GTK_VIEWPORT(s_window->viewport);
|
GtkViewport *viewport = GTK_VIEWPORT(s_window->viewport);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (m_windowStyle & wxRAISED_BORDER)
|
if (m_windowStyle & wxRAISED_BORDER)
|
||||||
{
|
{
|
||||||
@@ -1007,17 +1026,11 @@ bool wxWindow::Create( wxWindow *parent, wxWindowID id,
|
|||||||
gtk_viewport_set_shadow_type( viewport, GTK_SHADOW_NONE );
|
gtk_viewport_set_shadow_type( viewport, GTK_SHADOW_NONE );
|
||||||
}
|
}
|
||||||
|
|
||||||
m_wxwindow = gtk_myfixed_new();
|
|
||||||
|
|
||||||
GTK_WIDGET_UNSET_FLAGS( m_widget, GTK_CAN_FOCUS );
|
|
||||||
|
|
||||||
if (m_windowStyle & wxTAB_TRAVERSAL == wxTAB_TRAVERSAL)
|
if (m_windowStyle & wxTAB_TRAVERSAL == wxTAB_TRAVERSAL)
|
||||||
GTK_WIDGET_UNSET_FLAGS( m_wxwindow, GTK_CAN_FOCUS );
|
GTK_WIDGET_UNSET_FLAGS( m_wxwindow, GTK_CAN_FOCUS );
|
||||||
else
|
else
|
||||||
GTK_WIDGET_SET_FLAGS( m_wxwindow, GTK_CAN_FOCUS );
|
GTK_WIDGET_SET_FLAGS( m_wxwindow, GTK_CAN_FOCUS );
|
||||||
|
|
||||||
gtk_container_add( GTK_CONTAINER(m_widget), m_wxwindow );
|
|
||||||
|
|
||||||
// shut the viewport up
|
// shut the viewport up
|
||||||
gtk_viewport_set_hadjustment( viewport, (GtkAdjustment*) gtk_adjustment_new( 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) );
|
gtk_viewport_set_hadjustment( viewport, (GtkAdjustment*) gtk_adjustment_new( 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) );
|
||||||
gtk_viewport_set_vadjustment( viewport, (GtkAdjustment*) gtk_adjustment_new( 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) );
|
gtk_viewport_set_vadjustment( viewport, (GtkAdjustment*) gtk_adjustment_new( 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) );
|
||||||
@@ -1403,7 +1416,12 @@ void wxWindow::SetClientSize( int width, int height )
|
|||||||
GtkScrolledWindow *scroll_window = GTK_SCROLLED_WINDOW(m_widget);
|
GtkScrolledWindow *scroll_window = GTK_SCROLLED_WINDOW(m_widget);
|
||||||
GtkScrolledWindowClass *scroll_class = GTK_SCROLLED_WINDOW_CLASS( GTK_OBJECT(m_widget)->klass );
|
GtkScrolledWindowClass *scroll_class = GTK_SCROLLED_WINDOW_CLASS( GTK_OBJECT(m_widget)->klass );
|
||||||
|
|
||||||
|
#ifdef NEW_GTK_SCROLL_CODE
|
||||||
|
GtkWidget *viewport = scroll_window->child;
|
||||||
|
#else
|
||||||
GtkWidget *viewport = scroll_window->viewport;
|
GtkWidget *viewport = scroll_window->viewport;
|
||||||
|
#endif
|
||||||
|
|
||||||
GtkStyleClass *viewport_class = viewport->style->klass;
|
GtkStyleClass *viewport_class = viewport->style->klass;
|
||||||
|
|
||||||
GtkWidget *hscrollbar = scroll_window->hscrollbar;
|
GtkWidget *hscrollbar = scroll_window->hscrollbar;
|
||||||
@@ -1463,7 +1481,12 @@ void wxWindow::GetClientSize( int *width, int *height ) const
|
|||||||
GtkScrolledWindow *scroll_window = GTK_SCROLLED_WINDOW(m_widget);
|
GtkScrolledWindow *scroll_window = GTK_SCROLLED_WINDOW(m_widget);
|
||||||
GtkScrolledWindowClass *scroll_class = GTK_SCROLLED_WINDOW_CLASS( GTK_OBJECT(m_widget)->klass );
|
GtkScrolledWindowClass *scroll_class = GTK_SCROLLED_WINDOW_CLASS( GTK_OBJECT(m_widget)->klass );
|
||||||
|
|
||||||
|
#ifdef NEW_GTK_SCROLL_CODE
|
||||||
|
GtkWidget *viewport = scroll_window->child;
|
||||||
|
#else
|
||||||
GtkWidget *viewport = scroll_window->viewport;
|
GtkWidget *viewport = scroll_window->viewport;
|
||||||
|
#endif
|
||||||
|
|
||||||
GtkStyleClass *viewport_class = viewport->style->klass;
|
GtkStyleClass *viewport_class = viewport->style->klass;
|
||||||
|
|
||||||
GtkWidget *hscrollbar = scroll_window->hscrollbar;
|
GtkWidget *hscrollbar = scroll_window->hscrollbar;
|
||||||
|
Reference in New Issue
Block a user