Changed time of sending the wxSizeEvent and assorted things,

this made wxGLCanvas work,
  wxMiniFrame looks correct again,
  Corrected makefile for HTML help


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3989 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
1999-10-14 13:09:01 +00:00
parent 791a21023f
commit 5451765210
18 changed files with 252 additions and 90 deletions

View File

@@ -246,6 +246,7 @@ void wxDialog::Init()
m_returnCode = 0;
m_sizeSet = FALSE;
m_modalShowing = FALSE;
m_isFrame = TRUE;
}
wxDialog::wxDialog( wxWindow *parent,

View File

@@ -71,10 +71,20 @@ static void gtk_frame_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation*
if (g_isIdle)
wxapp_install_idle_handler();
if (!win->m_hasVMT) return;
if (!win->m_hasVMT)
return;
if ((win->m_width != alloc->width) || (win->m_height != alloc->height))
{
/*
wxPrintf( "OnSize from " );
if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
wxPrintf( win->GetClassInfo()->GetClassName() );
wxPrintf( " %d %d %d %d\n", (int)alloc->x,
(int)alloc->y,
(int)alloc->width,
(int)alloc->height );
*/
win->m_width = alloc->width;
win->m_height = alloc->height;
win->UpdateSize();
@@ -334,6 +344,7 @@ static void wxInsertChildInFrame( wxFrame* parent, wxWindow* child )
BEGIN_EVENT_TABLE(wxFrame, wxWindow)
EVT_SIZE(wxFrame::OnSize)
EVT_IDLE(wxFrame::OnIdle)
EVT_CLOSE(wxFrame::OnCloseWindow)
EVT_MENU_HIGHLIGHT_ALL(wxFrame::OnMenuHighlight)
END_EVENT_TABLE()
@@ -356,6 +367,7 @@ void wxFrame::Init()
m_menuBarDetached = FALSE;
m_toolBarDetached = FALSE;
m_insertInClientArea = TRUE;
m_isFrame = TRUE;
}
wxFrame::wxFrame( wxWindow *parent, wxWindowID id, const wxString &title,
@@ -429,6 +441,10 @@ bool wxFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title,
if (m_parent) m_parent->AddChild( this );
/* the user resized the frame by dragging etc. */
gtk_signal_connect( GTK_OBJECT(m_widget), "size_allocate",
GTK_SIGNAL_FUNC(gtk_frame_size_callback), (gpointer)this );
PostCreation();
/* we cannot set MWM hints and icons before the widget has
@@ -436,10 +452,6 @@ bool wxFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title,
gtk_signal_connect( GTK_OBJECT(m_widget), "realize",
GTK_SIGNAL_FUNC(gtk_frame_realized_callback), (gpointer) this );
/* the user resized the frame by dragging etc. */
gtk_signal_connect( GTK_OBJECT(m_widget), "size_allocate",
GTK_SIGNAL_FUNC(gtk_frame_size_callback), (gpointer)this );
/* the only way to get the window size is to connect to this event */
gtk_signal_connect( GTK_OBJECT(m_widget), "configure_event",
GTK_SIGNAL_FUNC(gtk_frame_configure_callback), (gpointer)this );
@@ -775,20 +787,23 @@ void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int height
/* we actually set the size of a frame here and no-where else */
gtk_widget_set_usize( m_widget, m_width, m_height );
m_sizeSet = TRUE;
/* send size event to frame */
m_sizeSet = TRUE;
// send size event to frame
wxSizeEvent event( wxSize(m_width,m_height), GetId() );
event.SetEventObject( this );
GetEventHandler()->ProcessEvent( event );
/* send size event to status bar */
/*
// send size event to status bar
if (m_frameStatusBar)
{
wxSizeEvent event2( wxSize(m_frameStatusBar->m_width,m_frameStatusBar->m_height), m_frameStatusBar->GetId() );
event2.SetEventObject( m_frameStatusBar );
m_frameStatusBar->GetEventHandler()->ProcessEvent( event2 );
}
*/
m_resizing = FALSE;
}
@@ -804,9 +819,14 @@ void wxFrame::MakeModal( bool modal )
void wxFrame::OnInternalIdle()
{
if (!m_sizeSet && GTK_WIDGET_REALIZED(m_wxwindow))
{
GtkOnSize( m_x, m_y, m_width, m_height );
DoMenuUpdates();
// we'll come back later
if (g_isIdle)
wxapp_install_idle_handler();
return;
}
if (m_frameMenuBar) m_frameMenuBar->OnInternalIdle();
#if wxUSE_TOOLBAR

View File

@@ -71,8 +71,10 @@ static void gtk_window_own_expose_callback( GtkWidget *widget, GdkEventExpose *g
if (!win->m_hasVMT) return;
if (gdk_event->count > 0) return;
GtkMyFixed *myfixed = GTK_MYFIXED(widget);
gtk_draw_shadow( widget->style,
widget->window,
myfixed->bin_window,
GTK_STATE_NORMAL,
GTK_SHADOW_OUT,
0, 0,
@@ -83,20 +85,20 @@ static void gtk_window_own_expose_callback( GtkWidget *widget, GdkEventExpose *g
(win->GetWindowStyle() & wxTINY_CAPTION_HORIZ) ||
(win->GetWindowStyle() & wxTINY_CAPTION_VERT)))
{
GdkGC *gc = gdk_gc_new( widget->window );
GdkGC *gc = gdk_gc_new( myfixed->bin_window );
GdkFont *font = wxSMALL_FONT->GetInternalFont(1.0);
int x = 2;
if (win->GetWindowStyle() & wxSYSTEM_MENU) x = 18;
gdk_gc_set_foreground( gc, &widget->style->bg[GTK_STATE_SELECTED] );
gdk_draw_rectangle( widget->window, gc, TRUE,
gdk_draw_rectangle( myfixed->bin_window, gc, TRUE,
x,
3,
win->m_width - 4 - x,
font->ascent + font->descent+1 );
gdk_gc_set_foreground( gc, &widget->style->white );
gdk_draw_string( widget->window, font, gc,
gdk_draw_string( myfixed->bin_window, font, gc,
x+2,
3+font->ascent,
win->m_title.mb_str() );
@@ -115,8 +117,10 @@ static void gtk_window_own_draw_callback( GtkWidget *widget, GdkRectangle *WXUNU
if (!win->m_hasVMT) return;
GtkMyFixed *myfixed = GTK_MYFIXED(widget);
gtk_draw_shadow( widget->style,
widget->window,
myfixed->bin_window,
GTK_STATE_NORMAL,
GTK_SHADOW_OUT,
0, 0,
@@ -127,20 +131,20 @@ static void gtk_window_own_draw_callback( GtkWidget *widget, GdkRectangle *WXUNU
(win->GetWindowStyle() & wxTINY_CAPTION_HORIZ) ||
(win->GetWindowStyle() & wxTINY_CAPTION_VERT)))
{
GdkGC *gc = gdk_gc_new( widget->window );
GdkGC *gc = gdk_gc_new( myfixed->bin_window );
GdkFont *font = wxSMALL_FONT->GetInternalFont(1.0);
int x = 2;
if (win->GetWindowStyle() & wxSYSTEM_MENU) x = 17;
gdk_gc_set_foreground( gc, &widget->style->bg[GTK_STATE_SELECTED] );
gdk_draw_rectangle( widget->window, gc, TRUE,
gdk_draw_rectangle( myfixed->bin_window, gc, TRUE,
x,
3,
win->m_width - 4 - x,
font->ascent + font->descent+1 );
gdk_gc_set_foreground( gc, &widget->style->white );
gdk_draw_string( widget->window, font, gc,
gdk_draw_string( myfixed->bin_window, font, gc,
x+2,
3+font->ascent,
win->m_title.mb_str() );

View File

@@ -67,10 +67,6 @@ static void gtk_radiobutton_clicked_callback( GtkWidget *WXUNUSED(widget), wxRad
IMPLEMENT_DYNAMIC_CLASS(wxRadioBox,wxControl)
BEGIN_EVENT_TABLE(wxRadioBox, wxControl)
EVT_SIZE(wxRadioBox::OnSize)
END_EVENT_TABLE()
wxRadioBox::wxRadioBox()
{
}
@@ -161,11 +157,11 @@ wxRadioBox::~wxRadioBox()
}
}
void wxRadioBox::OnSize( wxSizeEvent &event )
void wxRadioBox::DoSetSize( int x, int y, int width, int height, int sizeFlags )
{
wxWindow::DoSetSize( x, y, width, height, sizeFlags );
LayoutItems();
event.Skip();
}
wxSize wxRadioBox::LayoutItems()

View File

@@ -313,6 +313,39 @@ static void gtk_window_own_draw_callback( GtkWidget *widget, GdkRectangle *WXUNU
#endif // GTK_MINOR_VERSION > 0
//-----------------------------------------------------------------------------
// "size_allocate"
//-----------------------------------------------------------------------------
static void gtk_window_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation* alloc, wxWindow *win )
{
if (g_isIdle)
wxapp_install_idle_handler();
if (!win->m_hasVMT)
return;
if (win->m_sizeSet)
return;
win->m_sizeSet = TRUE;
/*
wxPrintf( "OnSize from " );
if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
wxPrintf( win->GetClassInfo()->GetClassName() );
wxPrintf( " %d %d %d %d\n", (int)alloc->x,
(int)alloc->y,
(int)alloc->width,
(int)alloc->height );
*/
wxSizeEvent event( win->GetSize(), win->GetId() );
event.SetEventObject( win );
win->GetEventHandler()->ProcessEvent( event );
}
//-----------------------------------------------------------------------------
// key event conversion routines
//-----------------------------------------------------------------------------
@@ -694,6 +727,10 @@ static void gtk_window_expose_callback( GtkWidget *WXUNUSED(widget), GdkEventExp
(int)gdk_event->area.height );
*/
wxEraseEvent eevent( win->GetId() );
eevent.SetEventObject( win );
win->GetEventHandler()->ProcessEvent(eevent);
wxPaintEvent event( win->GetId() );
event.SetEventObject( win );
win->GetEventHandler()->ProcessEvent( event );
@@ -726,6 +763,10 @@ static void gtk_window_draw_callback( GtkWidget *widget, GdkRectangle *rect, wxW
(int)rect->height );
*/
wxEraseEvent eevent( win->GetId() );
eevent.SetEventObject( win );
win->GetEventHandler()->ProcessEvent(eevent);
wxPaintEvent event( win->GetId() );
event.SetEventObject( win );
win->GetEventHandler()->ProcessEvent( event );
@@ -1784,6 +1825,7 @@ void wxWindow::Init()
m_isStaticBox = FALSE;
m_isRadioButton = FALSE;
m_isFrame = FALSE;
m_acceptsFocus = FALSE;
m_cursor = *wxSTANDARD_CURSOR;
@@ -2027,6 +2069,13 @@ void wxWindow::PostCreation()
{
wxASSERT_MSG( (m_widget != NULL), wxT("invalid window") );
if (!m_isFrame)
{
/* frames have their own callback */
gtk_signal_connect( GTK_OBJECT(m_widget), "size_allocate",
GTK_SIGNAL_FUNC(gtk_window_size_callback), (gpointer)this );
}
if (m_wxwindow)
{
if (!m_noExpose)
@@ -2115,9 +2164,14 @@ void wxWindow::DoSetSize( int x, int y, int width, int height, int sizeFlags )
m_y = y;
m_width = width;
m_height = height;
m_sizeSet = FALSE;
}
else
{
int old_width = m_width;
int old_height = m_height;
GtkMyFixed *myfixed = GTK_MYFIXED(m_parent->m_wxwindow);
if ((sizeFlags & wxSIZE_ALLOW_MINUS_ONE) == 0)
@@ -2166,14 +2220,19 @@ void wxWindow::DoSetSize( int x, int y, int width, int height, int sizeFlags )
m_y-border,
m_width+2*border,
m_height+border+bottom_border );
if ((old_width != m_width) ||
(old_height != m_height))
{
m_sizeSet = FALSE;
}
}
m_sizeSet = TRUE;
/*
wxSizeEvent event( wxSize(m_width,m_height), GetId() );
event.SetEventObject( this );
GetEventHandler()->ProcessEvent( event );
*/
m_resizing = FALSE;
}
@@ -2929,7 +2988,7 @@ bool wxWindow::DoPopupMenu( wxMenu *menu, int x, int y )
(GtkMenuPositionFunc) pop_pos_callback,
(gpointer) this, // client data
0, // button used to activate it
0 //gs_timeLastClick // the time of activation
gs_timeLastClick // the time of activation
);
while (is_waiting)