Fixed missing paint events when overriding DoMoveWindow()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6717 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -97,6 +97,9 @@ void gtk_pizza_set_external (GtkPizza *pizza,
|
|||||||
void gtk_pizza_scroll (GtkPizza *pizza,
|
void gtk_pizza_scroll (GtkPizza *pizza,
|
||||||
gint dx,
|
gint dx,
|
||||||
gint dy);
|
gint dy);
|
||||||
|
|
||||||
|
gint gtk_pizza_child_resized (GtkPizza *pizza,
|
||||||
|
GtkWidget *widget);
|
||||||
|
|
||||||
void gtk_pizza_put (GtkPizza *pizza,
|
void gtk_pizza_put (GtkPizza *pizza,
|
||||||
GtkWidget *widget,
|
GtkWidget *widget,
|
||||||
|
@@ -97,6 +97,9 @@ void gtk_pizza_set_external (GtkPizza *pizza,
|
|||||||
void gtk_pizza_scroll (GtkPizza *pizza,
|
void gtk_pizza_scroll (GtkPizza *pizza,
|
||||||
gint dx,
|
gint dx,
|
||||||
gint dy);
|
gint dy);
|
||||||
|
|
||||||
|
gint gtk_pizza_child_resized (GtkPizza *pizza,
|
||||||
|
GtkWidget *widget);
|
||||||
|
|
||||||
void gtk_pizza_put (GtkPizza *pizza,
|
void gtk_pizza_put (GtkPizza *pizza,
|
||||||
GtkWidget *widget,
|
GtkWidget *widget,
|
||||||
|
@@ -301,7 +301,7 @@ MyPanel::MyPanel(wxFrame *frame)
|
|||||||
{
|
{
|
||||||
// using constraints doesn't work under GTK - the calendar window is never
|
// using constraints doesn't work under GTK - the calendar window is never
|
||||||
// repainted after it had been moved at least once!
|
// repainted after it had been moved at least once!
|
||||||
#if 0
|
#if 1
|
||||||
SetAutoLayout(TRUE);
|
SetAutoLayout(TRUE);
|
||||||
|
|
||||||
wxString date;
|
wxString date;
|
||||||
|
@@ -126,6 +126,7 @@ static void gtk_frame_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation*
|
|||||||
|
|
||||||
win->m_width = alloc->width;
|
win->m_width = alloc->width;
|
||||||
win->m_height = alloc->height;
|
win->m_height = alloc->height;
|
||||||
|
win->m_queuedFullRedraw = TRUE;
|
||||||
win->GtkUpdateSize();
|
win->GtkUpdateSize();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -402,7 +403,7 @@ void wxFrame::Init()
|
|||||||
m_menuBarDetached = FALSE;
|
m_menuBarDetached = FALSE;
|
||||||
m_toolBarDetached = FALSE;
|
m_toolBarDetached = FALSE;
|
||||||
m_insertInClientArea = TRUE;
|
m_insertInClientArea = TRUE;
|
||||||
m_isFrame = TRUE;
|
m_isFrame = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxFrame::Create( wxWindow *parent,
|
bool wxFrame::Create( wxWindow *parent,
|
||||||
@@ -416,6 +417,7 @@ bool wxFrame::Create( wxWindow *parent,
|
|||||||
wxTopLevelWindows.Append( this );
|
wxTopLevelWindows.Append( this );
|
||||||
|
|
||||||
m_needParent = FALSE;
|
m_needParent = FALSE;
|
||||||
|
m_isFrame = TRUE;
|
||||||
|
|
||||||
if (!PreCreation( parent, pos, size ) ||
|
if (!PreCreation( parent, pos, size ) ||
|
||||||
!CreateBase( parent, id, pos, size, style, wxDefaultValidator, name ))
|
!CreateBase( parent, id, pos, size, style, wxDefaultValidator, name ))
|
||||||
|
@@ -424,6 +424,33 @@ gtk_pizza_set_size (GtkPizza *pizza,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gint
|
||||||
|
gtk_pizza_child_resized (GtkPizza *pizza,
|
||||||
|
GtkWidget *widget)
|
||||||
|
{
|
||||||
|
GtkPizzaChild *child;
|
||||||
|
GList *children;
|
||||||
|
|
||||||
|
g_return_val_if_fail (pizza != NULL, FALSE);
|
||||||
|
g_return_val_if_fail (GTK_IS_PIZZA (pizza), FALSE);
|
||||||
|
g_return_val_if_fail (widget != NULL, FALSE);
|
||||||
|
|
||||||
|
children = pizza->children;
|
||||||
|
while (children)
|
||||||
|
{
|
||||||
|
child = children->data;
|
||||||
|
children = children->next;
|
||||||
|
|
||||||
|
if (child->widget == widget)
|
||||||
|
{
|
||||||
|
return ((child->width == widget->allocation.width) &&
|
||||||
|
(child->height == widget->allocation.height));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_pizza_map (GtkWidget *widget)
|
gtk_pizza_map (GtkWidget *widget)
|
||||||
{
|
{
|
||||||
|
@@ -46,10 +46,13 @@
|
|||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
#include <gdk/gdkprivate.h>
|
#include <gdk/gdkprivate.h>
|
||||||
#include <gdk/gdkkeysyms.h>
|
#include <gdk/gdkkeysyms.h>
|
||||||
#include <wx/gtk/win_gtk.h>
|
|
||||||
|
|
||||||
#include <gdk/gdkx.h>
|
#include <gdk/gdkx.h>
|
||||||
|
|
||||||
|
#include <gtk/gtk.h>
|
||||||
|
#include <gtk/gtkprivate.h>
|
||||||
|
|
||||||
|
#include "wx/gtk/win_gtk.h"
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// documentation on internals
|
// documentation on internals
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@@ -621,7 +624,7 @@ static int gtk_window_expose_callback( GtkWidget *widget, GdkEventExpose *gdk_ev
|
|||||||
wxapp_install_idle_handler();
|
wxapp_install_idle_handler();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if (win->GetName() == wxT("status_line"))
|
if (win->GetName() == wxT("panel"))
|
||||||
{
|
{
|
||||||
wxPrintf( wxT("OnExpose from ") );
|
wxPrintf( wxT("OnExpose from ") );
|
||||||
if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
|
if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
|
||||||
@@ -721,7 +724,7 @@ static void gtk_window_draw_callback( GtkWidget *widget, GdkRectangle *rect, wxW
|
|||||||
wxapp_install_idle_handler();
|
wxapp_install_idle_handler();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if (win->GetName() == wxT("status_line"))
|
if (win->GetName() == wxT("panel"))
|
||||||
{
|
{
|
||||||
wxPrintf( wxT("OnDraw from ") );
|
wxPrintf( wxT("OnDraw from ") );
|
||||||
if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
|
if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
|
||||||
@@ -737,6 +740,7 @@ static void gtk_window_draw_callback( GtkWidget *widget, GdkRectangle *rect, wxW
|
|||||||
|
|
||||||
if (!win->m_queuedFullRedraw)
|
if (!win->m_queuedFullRedraw)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (!(GTK_WIDGET_APP_PAINTABLE (widget)) &&
|
if (!(GTK_WIDGET_APP_PAINTABLE (widget)) &&
|
||||||
(pizza->clear_on_draw))
|
(pizza->clear_on_draw))
|
||||||
{
|
{
|
||||||
@@ -2571,8 +2575,14 @@ void wxWindow::OnInternalIdle()
|
|||||||
the actual size of window, in which case all expose events that resulted
|
the actual size of window, in which case all expose events that resulted
|
||||||
from resizing the window have been sent (and discarded) and we can
|
from resizing the window have been sent (and discarded) and we can
|
||||||
now do our full redraw and switch on expose event handling again. */
|
now do our full redraw and switch on expose event handling again. */
|
||||||
|
|
||||||
if ((m_width == m_widget->allocation.width) && (m_height == m_widget->allocation.height))
|
bool child_already_resized = FALSE;
|
||||||
|
if (m_isFrame)
|
||||||
|
child_already_resized = gtk_pizza_child_resized( GTK_PIZZA(m_wxwindow->parent), m_wxwindow );
|
||||||
|
else
|
||||||
|
child_already_resized = gtk_pizza_child_resized( GTK_PIZZA(m_widget->parent), m_widget );
|
||||||
|
|
||||||
|
if (child_already_resized)
|
||||||
{
|
{
|
||||||
m_queuedFullRedraw = FALSE;
|
m_queuedFullRedraw = FALSE;
|
||||||
m_updateRegion.Clear();
|
m_updateRegion.Clear();
|
||||||
|
@@ -126,6 +126,7 @@ static void gtk_frame_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation*
|
|||||||
|
|
||||||
win->m_width = alloc->width;
|
win->m_width = alloc->width;
|
||||||
win->m_height = alloc->height;
|
win->m_height = alloc->height;
|
||||||
|
win->m_queuedFullRedraw = TRUE;
|
||||||
win->GtkUpdateSize();
|
win->GtkUpdateSize();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -402,7 +403,7 @@ void wxFrame::Init()
|
|||||||
m_menuBarDetached = FALSE;
|
m_menuBarDetached = FALSE;
|
||||||
m_toolBarDetached = FALSE;
|
m_toolBarDetached = FALSE;
|
||||||
m_insertInClientArea = TRUE;
|
m_insertInClientArea = TRUE;
|
||||||
m_isFrame = TRUE;
|
m_isFrame = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxFrame::Create( wxWindow *parent,
|
bool wxFrame::Create( wxWindow *parent,
|
||||||
@@ -416,6 +417,7 @@ bool wxFrame::Create( wxWindow *parent,
|
|||||||
wxTopLevelWindows.Append( this );
|
wxTopLevelWindows.Append( this );
|
||||||
|
|
||||||
m_needParent = FALSE;
|
m_needParent = FALSE;
|
||||||
|
m_isFrame = TRUE;
|
||||||
|
|
||||||
if (!PreCreation( parent, pos, size ) ||
|
if (!PreCreation( parent, pos, size ) ||
|
||||||
!CreateBase( parent, id, pos, size, style, wxDefaultValidator, name ))
|
!CreateBase( parent, id, pos, size, style, wxDefaultValidator, name ))
|
||||||
|
@@ -424,6 +424,33 @@ gtk_pizza_set_size (GtkPizza *pizza,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gint
|
||||||
|
gtk_pizza_child_resized (GtkPizza *pizza,
|
||||||
|
GtkWidget *widget)
|
||||||
|
{
|
||||||
|
GtkPizzaChild *child;
|
||||||
|
GList *children;
|
||||||
|
|
||||||
|
g_return_val_if_fail (pizza != NULL, FALSE);
|
||||||
|
g_return_val_if_fail (GTK_IS_PIZZA (pizza), FALSE);
|
||||||
|
g_return_val_if_fail (widget != NULL, FALSE);
|
||||||
|
|
||||||
|
children = pizza->children;
|
||||||
|
while (children)
|
||||||
|
{
|
||||||
|
child = children->data;
|
||||||
|
children = children->next;
|
||||||
|
|
||||||
|
if (child->widget == widget)
|
||||||
|
{
|
||||||
|
return ((child->width == widget->allocation.width) &&
|
||||||
|
(child->height == widget->allocation.height));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_pizza_map (GtkWidget *widget)
|
gtk_pizza_map (GtkWidget *widget)
|
||||||
{
|
{
|
||||||
|
@@ -46,10 +46,13 @@
|
|||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
#include <gdk/gdkprivate.h>
|
#include <gdk/gdkprivate.h>
|
||||||
#include <gdk/gdkkeysyms.h>
|
#include <gdk/gdkkeysyms.h>
|
||||||
#include <wx/gtk/win_gtk.h>
|
|
||||||
|
|
||||||
#include <gdk/gdkx.h>
|
#include <gdk/gdkx.h>
|
||||||
|
|
||||||
|
#include <gtk/gtk.h>
|
||||||
|
#include <gtk/gtkprivate.h>
|
||||||
|
|
||||||
|
#include "wx/gtk/win_gtk.h"
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// documentation on internals
|
// documentation on internals
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@@ -621,7 +624,7 @@ static int gtk_window_expose_callback( GtkWidget *widget, GdkEventExpose *gdk_ev
|
|||||||
wxapp_install_idle_handler();
|
wxapp_install_idle_handler();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if (win->GetName() == wxT("status_line"))
|
if (win->GetName() == wxT("panel"))
|
||||||
{
|
{
|
||||||
wxPrintf( wxT("OnExpose from ") );
|
wxPrintf( wxT("OnExpose from ") );
|
||||||
if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
|
if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
|
||||||
@@ -721,7 +724,7 @@ static void gtk_window_draw_callback( GtkWidget *widget, GdkRectangle *rect, wxW
|
|||||||
wxapp_install_idle_handler();
|
wxapp_install_idle_handler();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if (win->GetName() == wxT("status_line"))
|
if (win->GetName() == wxT("panel"))
|
||||||
{
|
{
|
||||||
wxPrintf( wxT("OnDraw from ") );
|
wxPrintf( wxT("OnDraw from ") );
|
||||||
if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
|
if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
|
||||||
@@ -737,6 +740,7 @@ static void gtk_window_draw_callback( GtkWidget *widget, GdkRectangle *rect, wxW
|
|||||||
|
|
||||||
if (!win->m_queuedFullRedraw)
|
if (!win->m_queuedFullRedraw)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (!(GTK_WIDGET_APP_PAINTABLE (widget)) &&
|
if (!(GTK_WIDGET_APP_PAINTABLE (widget)) &&
|
||||||
(pizza->clear_on_draw))
|
(pizza->clear_on_draw))
|
||||||
{
|
{
|
||||||
@@ -2571,8 +2575,14 @@ void wxWindow::OnInternalIdle()
|
|||||||
the actual size of window, in which case all expose events that resulted
|
the actual size of window, in which case all expose events that resulted
|
||||||
from resizing the window have been sent (and discarded) and we can
|
from resizing the window have been sent (and discarded) and we can
|
||||||
now do our full redraw and switch on expose event handling again. */
|
now do our full redraw and switch on expose event handling again. */
|
||||||
|
|
||||||
if ((m_width == m_widget->allocation.width) && (m_height == m_widget->allocation.height))
|
bool child_already_resized = FALSE;
|
||||||
|
if (m_isFrame)
|
||||||
|
child_already_resized = gtk_pizza_child_resized( GTK_PIZZA(m_wxwindow->parent), m_wxwindow );
|
||||||
|
else
|
||||||
|
child_already_resized = gtk_pizza_child_resized( GTK_PIZZA(m_widget->parent), m_widget );
|
||||||
|
|
||||||
|
if (child_already_resized)
|
||||||
{
|
{
|
||||||
m_queuedFullRedraw = FALSE;
|
m_queuedFullRedraw = FALSE;
|
||||||
m_updateRegion.Clear();
|
m_updateRegion.Clear();
|
||||||
|
Reference in New Issue
Block a user