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:
parent
07a9af327e
commit
8cb9f0d0f8
@ -97,6 +97,9 @@ void gtk_pizza_set_external (GtkPizza *pizza,
|
||||
void gtk_pizza_scroll (GtkPizza *pizza,
|
||||
gint dx,
|
||||
gint dy);
|
||||
|
||||
gint gtk_pizza_child_resized (GtkPizza *pizza,
|
||||
GtkWidget *widget);
|
||||
|
||||
void gtk_pizza_put (GtkPizza *pizza,
|
||||
GtkWidget *widget,
|
||||
|
@ -97,6 +97,9 @@ void gtk_pizza_set_external (GtkPizza *pizza,
|
||||
void gtk_pizza_scroll (GtkPizza *pizza,
|
||||
gint dx,
|
||||
gint dy);
|
||||
|
||||
gint gtk_pizza_child_resized (GtkPizza *pizza,
|
||||
GtkWidget *widget);
|
||||
|
||||
void gtk_pizza_put (GtkPizza *pizza,
|
||||
GtkWidget *widget,
|
||||
|
@ -301,7 +301,7 @@ MyPanel::MyPanel(wxFrame *frame)
|
||||
{
|
||||
// using constraints doesn't work under GTK - the calendar window is never
|
||||
// repainted after it had been moved at least once!
|
||||
#if 0
|
||||
#if 1
|
||||
SetAutoLayout(TRUE);
|
||||
|
||||
wxString date;
|
||||
|
@ -126,6 +126,7 @@ static void gtk_frame_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation*
|
||||
|
||||
win->m_width = alloc->width;
|
||||
win->m_height = alloc->height;
|
||||
win->m_queuedFullRedraw = TRUE;
|
||||
win->GtkUpdateSize();
|
||||
}
|
||||
}
|
||||
@ -402,7 +403,7 @@ void wxFrame::Init()
|
||||
m_menuBarDetached = FALSE;
|
||||
m_toolBarDetached = FALSE;
|
||||
m_insertInClientArea = TRUE;
|
||||
m_isFrame = TRUE;
|
||||
m_isFrame = FALSE;
|
||||
}
|
||||
|
||||
bool wxFrame::Create( wxWindow *parent,
|
||||
@ -416,6 +417,7 @@ bool wxFrame::Create( wxWindow *parent,
|
||||
wxTopLevelWindows.Append( this );
|
||||
|
||||
m_needParent = FALSE;
|
||||
m_isFrame = TRUE;
|
||||
|
||||
if (!PreCreation( parent, pos, size ) ||
|
||||
!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
|
||||
gtk_pizza_map (GtkWidget *widget)
|
||||
{
|
||||
|
@ -46,10 +46,13 @@
|
||||
#include <gtk/gtk.h>
|
||||
#include <gdk/gdkprivate.h>
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
#include <wx/gtk/win_gtk.h>
|
||||
|
||||
#include <gdk/gdkx.h>
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
#include <gtk/gtkprivate.h>
|
||||
|
||||
#include "wx/gtk/win_gtk.h"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// documentation on internals
|
||||
//-----------------------------------------------------------------------------
|
||||
@ -621,7 +624,7 @@ static int gtk_window_expose_callback( GtkWidget *widget, GdkEventExpose *gdk_ev
|
||||
wxapp_install_idle_handler();
|
||||
|
||||
/*
|
||||
if (win->GetName() == wxT("status_line"))
|
||||
if (win->GetName() == wxT("panel"))
|
||||
{
|
||||
wxPrintf( wxT("OnExpose from ") );
|
||||
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();
|
||||
|
||||
/*
|
||||
if (win->GetName() == wxT("status_line"))
|
||||
if (win->GetName() == wxT("panel"))
|
||||
{
|
||||
wxPrintf( wxT("OnDraw from ") );
|
||||
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 (!(GTK_WIDGET_APP_PAINTABLE (widget)) &&
|
||||
(pizza->clear_on_draw))
|
||||
{
|
||||
@ -2571,8 +2575,14 @@ void wxWindow::OnInternalIdle()
|
||||
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
|
||||
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_updateRegion.Clear();
|
||||
|
@ -126,6 +126,7 @@ static void gtk_frame_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation*
|
||||
|
||||
win->m_width = alloc->width;
|
||||
win->m_height = alloc->height;
|
||||
win->m_queuedFullRedraw = TRUE;
|
||||
win->GtkUpdateSize();
|
||||
}
|
||||
}
|
||||
@ -402,7 +403,7 @@ void wxFrame::Init()
|
||||
m_menuBarDetached = FALSE;
|
||||
m_toolBarDetached = FALSE;
|
||||
m_insertInClientArea = TRUE;
|
||||
m_isFrame = TRUE;
|
||||
m_isFrame = FALSE;
|
||||
}
|
||||
|
||||
bool wxFrame::Create( wxWindow *parent,
|
||||
@ -416,6 +417,7 @@ bool wxFrame::Create( wxWindow *parent,
|
||||
wxTopLevelWindows.Append( this );
|
||||
|
||||
m_needParent = FALSE;
|
||||
m_isFrame = TRUE;
|
||||
|
||||
if (!PreCreation( parent, pos, size ) ||
|
||||
!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
|
||||
gtk_pizza_map (GtkWidget *widget)
|
||||
{
|
||||
|
@ -46,10 +46,13 @@
|
||||
#include <gtk/gtk.h>
|
||||
#include <gdk/gdkprivate.h>
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
#include <wx/gtk/win_gtk.h>
|
||||
|
||||
#include <gdk/gdkx.h>
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
#include <gtk/gtkprivate.h>
|
||||
|
||||
#include "wx/gtk/win_gtk.h"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// documentation on internals
|
||||
//-----------------------------------------------------------------------------
|
||||
@ -621,7 +624,7 @@ static int gtk_window_expose_callback( GtkWidget *widget, GdkEventExpose *gdk_ev
|
||||
wxapp_install_idle_handler();
|
||||
|
||||
/*
|
||||
if (win->GetName() == wxT("status_line"))
|
||||
if (win->GetName() == wxT("panel"))
|
||||
{
|
||||
wxPrintf( wxT("OnExpose from ") );
|
||||
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();
|
||||
|
||||
/*
|
||||
if (win->GetName() == wxT("status_line"))
|
||||
if (win->GetName() == wxT("panel"))
|
||||
{
|
||||
wxPrintf( wxT("OnDraw from ") );
|
||||
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 (!(GTK_WIDGET_APP_PAINTABLE (widget)) &&
|
||||
(pizza->clear_on_draw))
|
||||
{
|
||||
@ -2571,8 +2575,14 @@ void wxWindow::OnInternalIdle()
|
||||
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
|
||||
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_updateRegion.Clear();
|
||||
|
Loading…
Reference in New Issue
Block a user