Disconnect all GTK signals referencing a wx object which is being destructed

or which is destroying the associated GTK object


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72696 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Paul Cornett
2012-10-17 16:23:18 +00:00
parent 5475b39f53
commit 8ab7533289
28 changed files with 96 additions and 90 deletions

View File

@@ -81,7 +81,7 @@ static gboolean expose_event(GtkWidget* widget, GdkEventExpose* gdk_event, wxMin
wxGTKCairoDC dc(cr);
#else
if (!win->m_hasVMT || gdk_event->count > 0 ||
if (gdk_event->count > 0 ||
gdk_event->window != gtk_widget_get_window(widget))
{
return false;
@@ -144,7 +144,7 @@ extern "C" {
static gboolean
gtk_window_button_press_callback(GtkWidget* widget, GdkEventButton* gdk_event, wxMiniFrame* win)
{
if (!win->m_hasVMT || gdk_event->window != gtk_widget_get_window(widget))
if (gdk_event->window != gtk_widget_get_window(widget))
return false;
if (g_blockEventsOnDrag) return TRUE;
if (g_blockEventsOnScroll) return TRUE;
@@ -224,7 +224,7 @@ extern "C" {
static gboolean
gtk_window_button_release_callback(GtkWidget* widget, GdkEventButton* gdk_event, wxMiniFrame* win)
{
if (!win->m_hasVMT || gdk_event->window != gtk_widget_get_window(widget))
if (gdk_event->window != gtk_widget_get_window(widget))
return false;
if (g_blockEventsOnDrag) return TRUE;
if (g_blockEventsOnScroll) return TRUE;
@@ -257,9 +257,8 @@ extern "C" {
static gboolean
gtk_window_leave_callback(GtkWidget *widget,
GdkEventCrossing* gdk_event,
wxMiniFrame *win)
wxMiniFrame*)
{
if (!win->m_hasVMT) return FALSE;
if (g_blockEventsOnDrag) return FALSE;
if (gdk_event->window != gtk_widget_get_window(widget))
return false;
@@ -278,7 +277,7 @@ extern "C" {
static gboolean
gtk_window_motion_notify_callback( GtkWidget *widget, GdkEventMotion *gdk_event, wxMiniFrame *win )
{
if (!win->m_hasVMT || gdk_event->window != gtk_widget_get_window(widget))
if (gdk_event->window != gtk_widget_get_window(widget))
return false;
if (g_blockEventsOnDrag) return TRUE;
if (g_blockEventsOnScroll) return TRUE;
@@ -340,6 +339,15 @@ static unsigned char close_bits[]={
IMPLEMENT_DYNAMIC_CLASS(wxMiniFrame,wxFrame)
wxMiniFrame::~wxMiniFrame()
{
if (m_widget)
{
GtkWidget* eventbox = gtk_bin_get_child(GTK_BIN(m_widget));
GTKDisconnect(eventbox);
}
}
bool wxMiniFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title,
const wxPoint &pos, const wxSize &size,
long style, const wxString &name )