From f7bdcdd70dc6e74e35185559e1c2ff2cac3e9e6e Mon Sep 17 00:00:00 2001 From: Robert Roebling Date: Thu, 17 Jun 1999 19:46:17 +0000 Subject: [PATCH] Made the RTTI thing an option. Added submenus to controls sample. Failed at producing tear-off menus. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2819 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- configure.in | 37 +++++++++++++++++++++-------------- docs/gtk/install.txt | 11 +++++++++++ docs/wine/install.txt | 11 +++++++++++ samples/config/conftest.cpp | 6 ++++++ samples/controls/controls.cpp | 7 +++++++ src/gtk/app.cpp | 5 ----- src/gtk/cursor.cpp | 2 +- src/gtk/menu.cpp | 28 ++++++++++++++++++++++---- src/gtk1/app.cpp | 5 ----- src/gtk1/cursor.cpp | 2 +- src/gtk1/menu.cpp | 28 ++++++++++++++++++++++---- 11 files changed, 107 insertions(+), 35 deletions(-) diff --git a/configure.in b/configure.in index 46f5a70b65..c631edf60f 100644 --- a/configure.in +++ b/configure.in @@ -230,6 +230,8 @@ if test $DEBUG_CONFIGURE = 1; then DEFAULT_wxUSE_OPTIMISE=no DEFAULT_wxUSE_PROFILE=no + DEFAULT_wxUSE_NO_RTTI=no + DEFAULT_wxUSE_NO_EXCEPTIONS=no DEFAULT_wxUSE_DEBUG_FLAG=yes DEFAULT_wxUSE_DEBUG_INFO=yes DEFAULT_wxUSE_DEBUG_GDB=yes @@ -325,6 +327,8 @@ else DEFAULT_wxUSE_OPTIMISE=yes DEFAULT_wxUSE_PROFILE=no + DEFAULT_wxUSE_NO_RTTI=no + DEFAULT_wxUSE_NO_EXCEPTIONS=no DEFAULT_wxUSE_DEBUG_FLAG=no DEFAULT_wxUSE_DEBUG_INFO=no DEFAULT_wxUSE_DEBUG_GDB=no @@ -474,12 +478,14 @@ elif test "$wxUSE_DEBUG" = "no"; then DEFAULT_wxUSE_DEBUG_INFO=no fi -WX_ARG_ENABLE(debug_flag, [ --enable-debug_flag set __WXDEBUG__ flag (recommended for developers!)], wxUSE_DEBUG_FLAG) -WX_ARG_ENABLE(debug_info, [ --enable-debug_info create code with debugging information], wxUSE_DEBUG_INFO) -WX_ARG_ENABLE(debug_gdb, [ --enable-debug_gdb create code with extra GDB debugging information], wxUSE_DEBUG_GDB) -WX_ARG_ENABLE(debug_cntxt, [ --enable-debug_cntxt use wxDebugContext], wxUSE_DEBUG_CONTEXT) -WX_ARG_ENABLE(mem_tracing, [ --enable-mem_tracing create code with memory tracing], wxUSE_MEM_TRACING) -WX_ARG_ENABLE(profile, [ --enable-profile create code with profiling information], wxUSE_PROFILE) +WX_ARG_ENABLE(debug_flag, [ --enable-debug_flag set __WXDEBUG__ flag (recommended for developers!)], wxUSE_DEBUG_FLAG) +WX_ARG_ENABLE(debug_info, [ --enable-debug_info create code with debugging information], wxUSE_DEBUG_INFO) +WX_ARG_ENABLE(debug_gdb, [ --enable-debug_gdb create code with extra GDB debugging information], wxUSE_DEBUG_GDB) +WX_ARG_ENABLE(debug_cntxt, [ --enable-debug_cntxt use wxDebugContext], wxUSE_DEBUG_CONTEXT) +WX_ARG_ENABLE(mem_tracing, [ --enable-mem_tracing create code with memory tracing], wxUSE_MEM_TRACING) +WX_ARG_ENABLE(profile, [ --enable-profile create code with profiling information], wxUSE_PROFILE) +WX_ARG_ENABLE(no_rtti, [ --enable-no_rtti create code without RTTI information], wxUSE_NO_RTTI) +WX_ARG_ENABLE(no_exceptions, [ --enable-no_exceptions create code without exceptions information], wxUSE_NO_EXCEPTIONS) dnl --------------------------------------------------------------------------- dnl --disable-gui will build only non-GUI part of wxWindows @@ -1379,6 +1385,16 @@ if test "$wxUSE_PROFILE" = "yes" ; then PROFILE="-pg" fi +if test "$GCC" = yes ; then + if test "$wxUSE_NO_RTTI" = "yes" ; then + WXDEBUG_DEFINE="$WXDEBUG_DEFINE -fno-rtti" + fi + if test "$wxUSE_NO_EXCEPTIONS" = "yes" ; then + WXDEBUG_DEFINE="$WXDEBUG_DEFINE -fno-exceptions" + fi +fi + + CXXFLAGS=`echo "${CXXFLAGS}" | sed "s/\-O.//g" ` CFLAGS=`echo "${CFLAGS}" | sed "s/\-O.//g" ` if test "$wxUSE_OPTIMISE" = "no" ; then @@ -1386,15 +1402,6 @@ if test "$wxUSE_OPTIMISE" = "no" ; then else if test "$GCC" = yes ; then OPTIMISE="-O2" - - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -fno-rtti -fno-exceptions" - AC_TRY_COMPILE( - [], [int some_variable = 0;], - WXDEBUG_DEFINE="$WXDEBUG_DEFINE -fno-rtti -fno-exceptions", - ) - CFLAGS="$save_CFLAGS" - case "${host}" in i586-*-*|i686-*-* ) OPTIMISE="${OPTIMISE} " diff --git a/docs/gtk/install.txt b/docs/gtk/install.txt index 1f02ca024e..bec266257b 100644 --- a/docs/gtk/install.txt +++ b/docs/gtk/install.txt @@ -248,6 +248,17 @@ The following options handle the kind of library you want to build. --enable-profile Add profiling info to the object files. Currently broken, I think. + --enable-no_rtti Enable compilation without creation of + C++ RTTI information in object files. + This will speed-up compilation and reduce + binary size. + + --enable-no_rtti Enable compilation without creation of + C++ exception information in object files. + This will speed-up compilation and reduce + binary size. Also fewer crashes during the + actual compilation... + --enable-mem_tracing Add built-in memory tracing. --enable-dmalloc Use the dmalloc memory debugger. diff --git a/docs/wine/install.txt b/docs/wine/install.txt index bd923a3d50..cc53d660ca 100644 --- a/docs/wine/install.txt +++ b/docs/wine/install.txt @@ -186,6 +186,17 @@ The following options handle the kind of library you want to build. --enable-profile Add profiling info to the object files. Currently broken, I think. + --enable-no_rtti Enable compilation without creation of + C++ RTTI information in object files. + This will speed-up compilation and reduce + binary size. + + --enable-no_rtti Enable compilation without creation of + C++ exception information in object files. + This will speed-up compilation and reduce + binary size. Also fewer crashes during the + actual compilation... + --enable-mem_tracing Add built-in memory tracing. --enable-dmalloc Use the dmalloc memory debugger. diff --git a/samples/config/conftest.cpp b/samples/config/conftest.cpp index b5ed3c607f..fe26c3b968 100644 --- a/samples/config/conftest.cpp +++ b/samples/config/conftest.cpp @@ -141,6 +141,12 @@ int MyApp::OnExit() MyFrame::MyFrame() : wxFrame((wxFrame *) NULL, -1, "wxConfig Demo") { + // submenu + wxMenu *sub_menu = new wxMenu( wxMENU_TEAROFF ); + sub_menu->Append(Minimal_About, "&About", "About this sample"); + sub_menu->Append(Minimal_About, "&About", "About this sample"); + sub_menu->Append(Minimal_About, "&About", "About this sample"); + // menu wxMenu *file_menu = new wxMenu; diff --git a/samples/controls/controls.cpp b/samples/controls/controls.cpp index a88d9e49f4..fb6ff1c2ad 100644 --- a/samples/controls/controls.cpp +++ b/samples/controls/controls.cpp @@ -164,9 +164,16 @@ bool MyApp::OnInit() frame->SetIcon( wxICON(mondrian) ); + // submenu + wxMenu *sub_menu = new wxMenu( wxMENU_TEAROFF ); + sub_menu->Append(MINIMAL_ABOUT, "&About", "About this sample"); + sub_menu->Append(MINIMAL_ABOUT, "&About", "About this sample"); + sub_menu->Append(MINIMAL_ABOUT, "&About", "About this sample"); + wxMenu *file_menu = new wxMenu; file_menu->Append(MINIMAL_ABOUT, "&About\tF1"); file_menu->Append(MINIMAL_QUIT, "E&xit\tAlt-X", "Quit controls sample"); + file_menu->Append( 0, "&Submenu", sub_menu ); wxMenuBar *menu_bar = new wxMenuBar( wxMB_DOCKABLE ); menu_bar->Append(file_menu, "&File"); diff --git a/src/gtk/app.cpp b/src/gtk/app.cpp index df4d2f0eb1..f4e7a220a2 100644 --- a/src/gtk/app.cpp +++ b/src/gtk/app.cpp @@ -44,8 +44,6 @@ // global data //----------------------------------------------------------------------------- -extern wxCursor g_globalCursor; - wxApp *wxTheApp = (wxApp *) NULL; wxAppInitializerFunction wxApp::m_appInitFn = (wxAppInitializerFunction) NULL; @@ -577,9 +575,6 @@ bool wxApp::Initialize() wxImage::InitStandardHandlers(); - // Not needed, leave it as default. (KB) - // g_globalCursor = wxCursor(wxCURSOR_DEFAULT); - wxModule::RegisterModules(); if (!wxModule::InitializeModules()) return FALSE; diff --git a/src/gtk/cursor.cpp b/src/gtk/cursor.cpp index c4883adbf5..9335e8c837 100644 --- a/src/gtk/cursor.cpp +++ b/src/gtk/cursor.cpp @@ -64,7 +64,7 @@ wxCursor::wxCursor( int cursorId ) GdkCursorType gdk_cur = GDK_LEFT_PTR; switch (cursorId) { - case wxCURSOR_DEFAULT: gdk_cur = GDK_ARROW; break; + case wxCURSOR_DEFAULT: gdk_cur = GDK_LEFT_PTR; break; case wxCURSOR_HAND: gdk_cur = GDK_HAND1; break; case wxCURSOR_CROSS: gdk_cur = GDK_CROSSHAIR; break; case wxCURSOR_SIZEWE: gdk_cur = GDK_SB_H_DOUBLE_ARROW; break; diff --git a/src/gtk/menu.cpp b/src/gtk/menu.cpp index a267b1bab8..46b158cce4 100644 --- a/src/gtk/menu.cpp +++ b/src/gtk/menu.cpp @@ -218,9 +218,13 @@ void wxMenuBar::Append( wxMenu *menu, const wxString &title ) entry.accelerator = (gchar*) NULL; entry.callback = (GtkItemFactoryCallback) NULL; entry.callback_action = 0; - entry.item_type = (m_style & wxMB_TEAROFF || menu->GetStyle() & - wxMENU_TEAROFF) ? - "" : ""; + +/* + if ((m_style & wxMB_TEAROFF) || (menu->GetStyle() & wxMENU_TEAROFF)) + entry.item_type = ""; + else +*/ + entry.item_type = ""; gtk_item_factory_create_item( m_factory, &entry, (gpointer) this, 2 ); /* what is 2 ? */ @@ -236,6 +240,16 @@ void wxMenuBar::Append( wxMenu *menu, const wxString &title ) gtk_menu_item_set_submenu( GTK_MENU_ITEM(menu->m_owner), menu->m_menu ); +/* + if ((m_style & wxMB_TEAROFF) || (menu->GetStyle() & wxMENU_TEAROFF)) + { + entry.item_type = ""; + tmp.Remove( 0, 6 ); + tmp.Append( _T("/tearoff") ); + strcpy( buf, tmp.mb_str() ); + gtk_item_factory_create_item( m_factory, &entry, (gpointer) this, 2 ); + } +*/ #else menu->m_owner = gtk_menu_item_new_with_label( str.mb_str() ); @@ -845,7 +859,13 @@ void wxMenu::Append( int id, const wxString &item, wxMenu *subMenu, const wxStri entry.path = buf; entry.callback = (GtkItemFactoryCallback) 0; entry.callback_action = 0; - entry.item_type = (m_style & wxMENU_TEAROFF) ? "" : ""; + +/* + if (m_style & wxMENU_TEAROFF) + entry.item_type = ""; + else +*/ + entry.item_type = ""; gtk_item_factory_create_item( m_factory, &entry, (gpointer) this, 2 ); /* what is 2 ? */ diff --git a/src/gtk1/app.cpp b/src/gtk1/app.cpp index df4d2f0eb1..f4e7a220a2 100644 --- a/src/gtk1/app.cpp +++ b/src/gtk1/app.cpp @@ -44,8 +44,6 @@ // global data //----------------------------------------------------------------------------- -extern wxCursor g_globalCursor; - wxApp *wxTheApp = (wxApp *) NULL; wxAppInitializerFunction wxApp::m_appInitFn = (wxAppInitializerFunction) NULL; @@ -577,9 +575,6 @@ bool wxApp::Initialize() wxImage::InitStandardHandlers(); - // Not needed, leave it as default. (KB) - // g_globalCursor = wxCursor(wxCURSOR_DEFAULT); - wxModule::RegisterModules(); if (!wxModule::InitializeModules()) return FALSE; diff --git a/src/gtk1/cursor.cpp b/src/gtk1/cursor.cpp index c4883adbf5..9335e8c837 100644 --- a/src/gtk1/cursor.cpp +++ b/src/gtk1/cursor.cpp @@ -64,7 +64,7 @@ wxCursor::wxCursor( int cursorId ) GdkCursorType gdk_cur = GDK_LEFT_PTR; switch (cursorId) { - case wxCURSOR_DEFAULT: gdk_cur = GDK_ARROW; break; + case wxCURSOR_DEFAULT: gdk_cur = GDK_LEFT_PTR; break; case wxCURSOR_HAND: gdk_cur = GDK_HAND1; break; case wxCURSOR_CROSS: gdk_cur = GDK_CROSSHAIR; break; case wxCURSOR_SIZEWE: gdk_cur = GDK_SB_H_DOUBLE_ARROW; break; diff --git a/src/gtk1/menu.cpp b/src/gtk1/menu.cpp index a267b1bab8..46b158cce4 100644 --- a/src/gtk1/menu.cpp +++ b/src/gtk1/menu.cpp @@ -218,9 +218,13 @@ void wxMenuBar::Append( wxMenu *menu, const wxString &title ) entry.accelerator = (gchar*) NULL; entry.callback = (GtkItemFactoryCallback) NULL; entry.callback_action = 0; - entry.item_type = (m_style & wxMB_TEAROFF || menu->GetStyle() & - wxMENU_TEAROFF) ? - "" : ""; + +/* + if ((m_style & wxMB_TEAROFF) || (menu->GetStyle() & wxMENU_TEAROFF)) + entry.item_type = ""; + else +*/ + entry.item_type = ""; gtk_item_factory_create_item( m_factory, &entry, (gpointer) this, 2 ); /* what is 2 ? */ @@ -236,6 +240,16 @@ void wxMenuBar::Append( wxMenu *menu, const wxString &title ) gtk_menu_item_set_submenu( GTK_MENU_ITEM(menu->m_owner), menu->m_menu ); +/* + if ((m_style & wxMB_TEAROFF) || (menu->GetStyle() & wxMENU_TEAROFF)) + { + entry.item_type = ""; + tmp.Remove( 0, 6 ); + tmp.Append( _T("/tearoff") ); + strcpy( buf, tmp.mb_str() ); + gtk_item_factory_create_item( m_factory, &entry, (gpointer) this, 2 ); + } +*/ #else menu->m_owner = gtk_menu_item_new_with_label( str.mb_str() ); @@ -845,7 +859,13 @@ void wxMenu::Append( int id, const wxString &item, wxMenu *subMenu, const wxStri entry.path = buf; entry.callback = (GtkItemFactoryCallback) 0; entry.callback_action = 0; - entry.item_type = (m_style & wxMENU_TEAROFF) ? "" : ""; + +/* + if (m_style & wxMENU_TEAROFF) + entry.item_type = ""; + else +*/ + entry.item_type = ""; gtk_item_factory_create_item( m_factory, &entry, (gpointer) this, 2 ); /* what is 2 ? */ -- 2.45.2