cp $(SAMPDIR)/minimal/*.xpm $(DISTDIR)/samples/minimal
cp $(SAMPDIR)/minimal/*.mms $(DISTDIR)/samples/minimal
+ mkdir $(DISTDIR)/samples/mobile
+ cp $(SAMPDIR)/mobile/Makefile.in $(DISTDIR)/samples/mobile
+ mkdir $(DISTDIR)/samples/mobile/wxedit
+ cp $(SAMPDIR)/mobile/wxedit/Makefile.in $(DISTDIR)/samples/mobile/wxedit
+ cp $(SAMPDIR)/mobile/wxedit/*.cpp $(DISTDIR)/samples/mobile/wxedit
+ cp $(SAMPDIR)/mobile/wxedit/*.h $(DISTDIR)/samples/mobile/wxedit
+
mkdir $(DISTDIR)/samples/dialup
cp $(SAMPDIR)/dialup/Makefile.in $(DISTDIR)/samples/dialup
cp $(SAMPDIR)/dialup/makefile.unx $(DISTDIR)/samples/dialup
*** wxWindows 2.3.3 ***
+Beta support for GTK 2.0.
+
+Added wxArtProvider for changing default icons and more.
+
+Corrected wxScrolledWindow in some rare cases.
+
+Added wxIconBundle for mini- and normal icons.
+
+Made wxWindow::SetFocus() work before a wxDialog
+is created. Until now always the first item
+was focussed.
+
+Corrected wxComboBox's semantics of pressing <Enter>.
+
+Corrected SeekI() return values and other related functions
+in wxFilterStream and wxBufferedStream.
+
Implemented new ref-counting for GDI classes.
New implemenation of wxCondition.
Added ICO, CUR and ANI image handler.
-wxFrame::SetMenuBar() corrected.
+wxFrame::SetMenuBar() corrected (for NULL etc.)
wxButton honours wxBU_EXACTFIT.
wxWindows no longer supports GTK 1.0 (as did some early
snapshots) so that you will need GTK 1.2 when using it.
GTK 1.2.6 or above is recommended although some programs
-will work with GTK 1.2.3 onwards.
+will work with GTK 1.2.3 onwards. There is now beta support
+for GTK 2.0.
-More information is available from my homepage at:
-
- http://wesley.informatik.uni-freiburg.de/~wxxt
-
-and about the wxWindows project as a whole (and the MSW
+More info about the wxWindows project (and the Windows
and Motif ports in particular) can be found at Julian's
homepage at:
bool m_isInAssert;
#endif // __WXDEBUG__
+ bool CallInternalIdle( wxWindow* win );
+
DECLARE_DYNAMIC_CLASS(wxApp)
DECLARE_EVENT_TABLE()
};
// OnInternalIdle
virtual void OnInternalIdle();
+ // Internal represention of Update()
+ void GtkUpdate();
+
// For delayed background
void GtkSetBackgroundColour( const wxColour &colour );
void GtkSetForegroundColour( const wxColour &colour );
bool m_isInAssert;
#endif // __WXDEBUG__
+ bool CallInternalIdle( wxWindow* win );
+
DECLARE_DYNAMIC_CLASS(wxApp)
DECLARE_EVENT_TABLE()
};
// OnInternalIdle
virtual void OnInternalIdle();
+ // Internal represention of Update()
+ void GtkUpdate();
+
// For delayed background
void GtkSetBackgroundColour( const wxColour &colour );
void GtkSetForegroundColour( const wxColour &colour );
wxWindow* win = node->GetData();
if (SendIdleEvents(win))
needMore = TRUE;
+
node = node->GetNext();
}
+ node = wxTopLevelWindows.GetFirst();
+ while (node)
+ {
+ wxWindow* win = node->GetData();
+ CallInternalIdle( win );
+
+ node = node->GetNext();
+ }
return needMore;
}
+bool wxApp::CallInternalIdle( wxWindow* win )
+{
+ win->OnInternalIdle();
+
+ wxNode* node = win->GetChildren().First();
+ while (node)
+ {
+ wxWindow* win = (wxWindow*) node->Data();
+ CallInternalIdle( win );
+
+ node = node->Next();
+ }
+
+ return TRUE;
+}
+
bool wxApp::SendIdleEvents( wxWindow* win )
{
bool needMore = FALSE;
node = node->Next();
}
- win->OnInternalIdle();
-
return needMore;
}
}
#endif
-#ifndef __WXUNIVERSAL__
- GtkPizza *pizza = GTK_PIZZA (widget);
-
- if (win->GetThemeEnabled())
- {
- wxWindow *parent = win->GetParent();
- while (parent && !parent->IsTopLevel())
- parent = parent->GetParent();
- if (!parent)
- parent = win;
-
- gtk_paint_flat_box (parent->m_widget->style,
- pizza->bin_window,
- GTK_STATE_NORMAL,
- GTK_SHADOW_NONE,
- &gdk_event->area,
- parent->m_widget,
- (char *)"base",
- 0, 0, -1, -1);
- }
-#endif
-
win->GetUpdateRegion().Union( gdk_event->area.x,
gdk_event->area.y,
gdk_event->area.width,
gdk_event->area.height );
// Actual redrawing takes place in idle time.
- win->Update();
+ win->GtkUpdate();
#ifdef __WXGTK20__
// Actual redrawing takes place in idle time.
- win->Update();
+ win->GtkUpdate();
#ifndef __WXUNIVERSAL__
// Redraw child widgets
void wxWindowGTK::OnInternalIdle()
{
// Update invalidated regions.
- Update();
+ GtkUpdate();
// Synthetize activate events.
if ( g_sendActivateEvent != -1 )
}
void wxWindowGTK::Update()
+{
+ GtkUpdate();
+}
+
+void wxWindowGTK::GtkUpdate()
{
#ifdef __WXGTK20__
if (m_wxwindow && GTK_PIZZA(m_wxwindow)->bin_window)
}
gdk_gc_set_foreground( g_eraseGC, m_backgroundColour.GetColor() );
+ // widget to draw on
+ GtkPizza *pizza = GTK_PIZZA (m_wxwindow);
+
+ // find ancestor from which to steal background
+ wxWindow *parent = GetParent();
+ while (parent && !parent->IsTopLevel())
+ parent = parent->GetParent();
+ if (!parent)
+ parent = this;
+
wxRegionIterator upd( m_clearRegion );
while (upd)
{
- gdk_draw_rectangle( GTK_PIZZA(m_wxwindow)->bin_window, g_eraseGC, 1,
- upd.GetX(), upd.GetY(), upd.GetWidth(), upd.GetHeight() );
+ if (GetThemeEnabled())
+ {
+ GdkRectangle rect;
+ rect.x = upd.GetX();
+ rect.y = upd.GetY();
+ rect.width = upd.GetWidth();
+ rect.height = upd.GetHeight();
+
+ gtk_paint_flat_box( parent->m_widget->style,
+ pizza->bin_window,
+ GTK_STATE_NORMAL,
+ GTK_SHADOW_NONE,
+ &rect,
+ parent->m_widget,
+ (char *)"base",
+ 0, 0, -1, -1 );
+ }
+ else
+ {
+ gdk_draw_rectangle( pizza->bin_window, g_eraseGC, 1,
+ upd.GetX(), upd.GetY(), upd.GetWidth(), upd.GetHeight() );
+ }
upd ++;
}
}
m_clearRegion.Union( 0,0,size.x,size.y );
// Better do this in idle?
- Update();
+ GtkUpdate();
}
}
wxWindow* win = node->GetData();
if (SendIdleEvents(win))
needMore = TRUE;
+
node = node->GetNext();
}
+ node = wxTopLevelWindows.GetFirst();
+ while (node)
+ {
+ wxWindow* win = node->GetData();
+ CallInternalIdle( win );
+
+ node = node->GetNext();
+ }
return needMore;
}
+bool wxApp::CallInternalIdle( wxWindow* win )
+{
+ win->OnInternalIdle();
+
+ wxNode* node = win->GetChildren().First();
+ while (node)
+ {
+ wxWindow* win = (wxWindow*) node->Data();
+ CallInternalIdle( win );
+
+ node = node->Next();
+ }
+
+ return TRUE;
+}
+
bool wxApp::SendIdleEvents( wxWindow* win )
{
bool needMore = FALSE;
node = node->Next();
}
- win->OnInternalIdle();
-
return needMore;
}
}
#endif
-#ifndef __WXUNIVERSAL__
- GtkPizza *pizza = GTK_PIZZA (widget);
-
- if (win->GetThemeEnabled())
- {
- wxWindow *parent = win->GetParent();
- while (parent && !parent->IsTopLevel())
- parent = parent->GetParent();
- if (!parent)
- parent = win;
-
- gtk_paint_flat_box (parent->m_widget->style,
- pizza->bin_window,
- GTK_STATE_NORMAL,
- GTK_SHADOW_NONE,
- &gdk_event->area,
- parent->m_widget,
- (char *)"base",
- 0, 0, -1, -1);
- }
-#endif
-
win->GetUpdateRegion().Union( gdk_event->area.x,
gdk_event->area.y,
gdk_event->area.width,
gdk_event->area.height );
// Actual redrawing takes place in idle time.
- win->Update();
+ win->GtkUpdate();
#ifdef __WXGTK20__
// Actual redrawing takes place in idle time.
- win->Update();
+ win->GtkUpdate();
#ifndef __WXUNIVERSAL__
// Redraw child widgets
void wxWindowGTK::OnInternalIdle()
{
// Update invalidated regions.
- Update();
+ GtkUpdate();
// Synthetize activate events.
if ( g_sendActivateEvent != -1 )
}
void wxWindowGTK::Update()
+{
+ GtkUpdate();
+}
+
+void wxWindowGTK::GtkUpdate()
{
#ifdef __WXGTK20__
if (m_wxwindow && GTK_PIZZA(m_wxwindow)->bin_window)
}
gdk_gc_set_foreground( g_eraseGC, m_backgroundColour.GetColor() );
+ // widget to draw on
+ GtkPizza *pizza = GTK_PIZZA (m_wxwindow);
+
+ // find ancestor from which to steal background
+ wxWindow *parent = GetParent();
+ while (parent && !parent->IsTopLevel())
+ parent = parent->GetParent();
+ if (!parent)
+ parent = this;
+
wxRegionIterator upd( m_clearRegion );
while (upd)
{
- gdk_draw_rectangle( GTK_PIZZA(m_wxwindow)->bin_window, g_eraseGC, 1,
- upd.GetX(), upd.GetY(), upd.GetWidth(), upd.GetHeight() );
+ if (GetThemeEnabled())
+ {
+ GdkRectangle rect;
+ rect.x = upd.GetX();
+ rect.y = upd.GetY();
+ rect.width = upd.GetWidth();
+ rect.height = upd.GetHeight();
+
+ gtk_paint_flat_box( parent->m_widget->style,
+ pizza->bin_window,
+ GTK_STATE_NORMAL,
+ GTK_SHADOW_NONE,
+ &rect,
+ parent->m_widget,
+ (char *)"base",
+ 0, 0, -1, -1 );
+ }
+ else
+ {
+ gdk_draw_rectangle( pizza->bin_window, g_eraseGC, 1,
+ upd.GetX(), upd.GetY(), upd.GetWidth(), upd.GetHeight() );
+ }
upd ++;
}
}
m_clearRegion.Union( 0,0,size.x,size.y );
// Better do this in idle?
- Update();
+ GtkUpdate();
}
}