Compile fix in dialup,

Removed GTK's native tab traversal and fixed some related probs,
  Fixed a crash in wxListCtrl,
  Added configure correction ofr HP-UX GNU shared linker.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4548 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
1999-11-13 15:58:53 +00:00
parent 7aa733b31e
commit 69ffe1d20b
13 changed files with 370 additions and 329 deletions

532
configure vendored

File diff suppressed because it is too large Load Diff

View File

@@ -1718,7 +1718,7 @@ if test "$wxUSE_SHARED" = "yes"; then
case "${host}" in case "${host}" in
*-hp-hpux* ) *-hp-hpux* )
if test "$GCC" = yes ; then if test "$GCC" = yes ; then
SHARED_LD="${CC} -shared -o" SHARED_LD="${CC} -shared -fPIC -o"
PIC_FLAG="-fPIC" PIC_FLAG="-fPIC"
else else
SHARED_LD="${CXX} -b -o" SHARED_LD="${CXX} -b -o"

View File

@@ -2225,10 +2225,10 @@ void wxListMainWindow::CalculatePositions()
line->GetSize( lineWidth, lineHeight ); line->GetSize( lineWidth, lineHeight );
if (lineWidth > maxWidth) maxWidth = lineWidth; if (lineWidth > maxWidth) maxWidth = lineWidth;
y += lineSpacing; y += lineSpacing;
if (m_currentVisibleLines > m_visibleLines)
m_visibleLines = m_currentVisibleLines;
if (y+lineSpacing-6 >= clientHeight) // -6 for earlier "line breaking" if (y+lineSpacing-6 >= clientHeight) // -6 for earlier "line breaking"
{ {
if (m_currentVisibleLines > m_visibleLines)
m_visibleLines = m_currentVisibleLines;
m_currentVisibleLines = 0; m_currentVisibleLines = 0;
y = 5; y = 5;
x += maxWidth+6; x += maxWidth+6;
@@ -2247,7 +2247,6 @@ void wxListMainWindow::CalculatePositions()
if (!node) tries = 1; // everything fits, no second try required if (!node) tries = 1; // everything fits, no second try required
} }
} }
// m_visibleLines = (5+clientHeight+6) / (lineSpacing); // +6 for earlier "line breaking"
int scroll_pos = GetScrollPos( wxHORIZONTAL ); int scroll_pos = GetScrollPos( wxHORIZONTAL );
SetScrollbars( m_xScroll, m_yScroll, (entireWidth+15) / m_xScroll, 0, scroll_pos, 0, TRUE ); SetScrollbars( m_xScroll, m_yScroll, (entireWidth+15) / m_xScroll, 0, scroll_pos, 0, TRUE );

View File

@@ -190,7 +190,7 @@ void wxPanel::OnSize(wxSizeEvent& WXUNUSED(event))
void wxPanel::SetFocus() void wxPanel::SetFocus()
{ {
// If the panel gets the focus *by way of getting it set directly* // If the panel gets the focus *by way of getting it set directly*
// we move it to the first window that can get it. // we move the focus to the first window that can get it.
wxNode *node = GetChildren().First(); wxNode *node = GetChildren().First();
while (node) while (node)
@@ -213,13 +213,15 @@ void wxPanel::SetFocus()
void wxPanel::OnFocus(wxFocusEvent& event) void wxPanel::OnFocus(wxFocusEvent& event)
{ {
// If the panel gets the focus *by way of getting clicked on* // If the panel gets the focus *by way of getting clicked on*
// we move it to either the last window that had the focus or // we move the focus to either the last window that had the
// the first one that can get it. // focus or the first one that can get it.
if (m_winLastFocused) if (m_winLastFocused)
{ {
// it might happen that the window got reparented... // It might happen that the window got reparented or no longer
if ( m_winLastFocused->GetParent() == this ) // accepts the focus.
if ((m_winLastFocused->GetParent() == this) &&
(m_winLastFocused->AcceptsFocus()))
{ {
m_winLastFocused->SetFocus(); m_winLastFocused->SetFocus();
return; return;

View File

@@ -14,16 +14,12 @@
#include "wx/dialog.h" #include "wx/dialog.h"
#include "wx/frame.h" #include "wx/frame.h"
#include "wx/app.h" #include "wx/app.h"
#include "wx/cursor.h"
#include "gdk/gdk.h" #include "gdk/gdk.h"
#include "gtk/gtk.h" #include "gtk/gtk.h"
#include "gdk/gdkkeysyms.h"
#include "wx/gtk/win_gtk.h" #include "wx/gtk/win_gtk.h"
#include "wx/cursor.h"
/*
#include "gdk/gdkprivate.h"
#include "gdk/gdkx.h"
*/
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// idle system // idle system
@@ -39,6 +35,20 @@ extern int g_openDialogs;
extern wxList wxPendingDelete; extern wxList wxPendingDelete;
//-----------------------------------------------------------------------------
// "focus" from m_window
//-----------------------------------------------------------------------------
static gint gtk_dialog_focus_callback( GtkWidget *widget, GtkDirectionType WXUNUSED(d), wxWindow *WXUNUSED(win) )
{
if (g_isIdle)
wxapp_install_idle_handler();
// This disables GTK's tab traversal
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "focus" );
return TRUE;
}
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// "delete_event" // "delete_event"
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@@ -268,6 +278,9 @@ bool wxDialog::Create( wxWindow *parent,
return FALSE; return FALSE;
} }
// All dialogs should really have this style
m_windowStyle |= wxTAB_TRAVERSAL;
m_insertCallback = (wxInsertChildFunction) wxInsertChildInDialog; m_insertCallback = (wxInsertChildFunction) wxInsertChildInDialog;
m_widget = gtk_window_new( GTK_WINDOW_DIALOG ); m_widget = gtk_window_new( GTK_WINDOW_DIALOG );
@@ -307,6 +320,10 @@ bool wxDialog::Create( wxWindow *parent,
gtk_signal_connect( GTK_OBJECT(m_widget), "configure_event", gtk_signal_connect( GTK_OBJECT(m_widget), "configure_event",
GTK_SIGNAL_FUNC(gtk_dialog_configure_callback), (gpointer)this ); GTK_SIGNAL_FUNC(gtk_dialog_configure_callback), (gpointer)this );
/* disable native tab traversal */
gtk_signal_connect( GTK_OBJECT(m_widget), "focus",
GTK_SIGNAL_FUNC(gtk_dialog_focus_callback), (gpointer)this );
return TRUE; return TRUE;
} }

View File

@@ -63,6 +63,20 @@ extern void debug_focus_in( GtkWidget* widget, const wxChar* name, const wxChar
#endif #endif
//-----------------------------------------------------------------------------
// "focus" from m_window
//-----------------------------------------------------------------------------
static gint gtk_frame_focus_callback( GtkWidget *widget, GtkDirectionType WXUNUSED(d), wxWindow *WXUNUSED(win) )
{
if (g_isIdle)
wxapp_install_idle_handler();
// This disables GTK's tab traversal
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "focus" );
return TRUE;
}
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// "size_allocate" // "size_allocate"
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@@ -465,6 +479,10 @@ bool wxFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title,
gtk_signal_connect( GTK_OBJECT(m_widget), "configure_event", gtk_signal_connect( GTK_OBJECT(m_widget), "configure_event",
GTK_SIGNAL_FUNC(gtk_frame_configure_callback), (gpointer)this ); GTK_SIGNAL_FUNC(gtk_frame_configure_callback), (gpointer)this );
/* disable native tab traversal */
gtk_signal_connect( GTK_OBJECT(m_widget), "focus",
GTK_SIGNAL_FUNC(gtk_frame_focus_callback), (gpointer)this );
return TRUE; return TRUE;
} }

View File

@@ -34,7 +34,7 @@ extern bool g_isIdle;
// data // data
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
extern bool g_blockEventsOnDrag; extern bool g_blockEventsOnDrag;
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// "clicked" // "clicked"
@@ -334,7 +334,6 @@ void wxRadioBox::SetFocus()
if (button->active) if (button->active)
{ {
gtk_widget_grab_focus( GTK_WIDGET(button) ); gtk_widget_grab_focus( GTK_WIDGET(button) );
return; return;
} }
node = node->Next(); node = node->Next();

View File

@@ -795,29 +795,6 @@ static gint gtk_window_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_e
*/ */
#endif #endif
/*
Damn, I forgot why this didn't work, but it didn't work.
// win is a panel: up can be propagated to the panel
if ((!ret) && (win->m_wxwindow) && (win->m_parent) && (win->m_parent->AcceptsFocus()) &&
(gdk_event->keyval == GDK_Up))
{
win->m_parent->SetFocus();
ret = TRUE;
}
// win is a panel: left/right can be propagated to the panel
if ((!ret) && (win->m_wxwindow) &&
((gdk_event->keyval == GDK_Right) || (gdk_event->keyval == GDK_Left) ||
(gdk_event->keyval == GDK_Up) || (gdk_event->keyval == GDK_Down)))
{
wxNavigationKeyEvent new_event;
new_event.SetDirection( (gdk_event->keyval == GDK_Right) || (gdk_event->keyval == GDK_Down) );
new_event.SetCurrentFocus( win );
ret = win->GetEventHandler()->ProcessEvent( new_event );
}
*/
if (ret) if (ret)
{ {
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "key_press_event" ); gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "key_press_event" );

View File

@@ -14,16 +14,12 @@
#include "wx/dialog.h" #include "wx/dialog.h"
#include "wx/frame.h" #include "wx/frame.h"
#include "wx/app.h" #include "wx/app.h"
#include "wx/cursor.h"
#include "gdk/gdk.h" #include "gdk/gdk.h"
#include "gtk/gtk.h" #include "gtk/gtk.h"
#include "gdk/gdkkeysyms.h"
#include "wx/gtk/win_gtk.h" #include "wx/gtk/win_gtk.h"
#include "wx/cursor.h"
/*
#include "gdk/gdkprivate.h"
#include "gdk/gdkx.h"
*/
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// idle system // idle system
@@ -39,6 +35,20 @@ extern int g_openDialogs;
extern wxList wxPendingDelete; extern wxList wxPendingDelete;
//-----------------------------------------------------------------------------
// "focus" from m_window
//-----------------------------------------------------------------------------
static gint gtk_dialog_focus_callback( GtkWidget *widget, GtkDirectionType WXUNUSED(d), wxWindow *WXUNUSED(win) )
{
if (g_isIdle)
wxapp_install_idle_handler();
// This disables GTK's tab traversal
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "focus" );
return TRUE;
}
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// "delete_event" // "delete_event"
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@@ -268,6 +278,9 @@ bool wxDialog::Create( wxWindow *parent,
return FALSE; return FALSE;
} }
// All dialogs should really have this style
m_windowStyle |= wxTAB_TRAVERSAL;
m_insertCallback = (wxInsertChildFunction) wxInsertChildInDialog; m_insertCallback = (wxInsertChildFunction) wxInsertChildInDialog;
m_widget = gtk_window_new( GTK_WINDOW_DIALOG ); m_widget = gtk_window_new( GTK_WINDOW_DIALOG );
@@ -307,6 +320,10 @@ bool wxDialog::Create( wxWindow *parent,
gtk_signal_connect( GTK_OBJECT(m_widget), "configure_event", gtk_signal_connect( GTK_OBJECT(m_widget), "configure_event",
GTK_SIGNAL_FUNC(gtk_dialog_configure_callback), (gpointer)this ); GTK_SIGNAL_FUNC(gtk_dialog_configure_callback), (gpointer)this );
/* disable native tab traversal */
gtk_signal_connect( GTK_OBJECT(m_widget), "focus",
GTK_SIGNAL_FUNC(gtk_dialog_focus_callback), (gpointer)this );
return TRUE; return TRUE;
} }

View File

@@ -63,6 +63,20 @@ extern void debug_focus_in( GtkWidget* widget, const wxChar* name, const wxChar
#endif #endif
//-----------------------------------------------------------------------------
// "focus" from m_window
//-----------------------------------------------------------------------------
static gint gtk_frame_focus_callback( GtkWidget *widget, GtkDirectionType WXUNUSED(d), wxWindow *WXUNUSED(win) )
{
if (g_isIdle)
wxapp_install_idle_handler();
// This disables GTK's tab traversal
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "focus" );
return TRUE;
}
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// "size_allocate" // "size_allocate"
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@@ -465,6 +479,10 @@ bool wxFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title,
gtk_signal_connect( GTK_OBJECT(m_widget), "configure_event", gtk_signal_connect( GTK_OBJECT(m_widget), "configure_event",
GTK_SIGNAL_FUNC(gtk_frame_configure_callback), (gpointer)this ); GTK_SIGNAL_FUNC(gtk_frame_configure_callback), (gpointer)this );
/* disable native tab traversal */
gtk_signal_connect( GTK_OBJECT(m_widget), "focus",
GTK_SIGNAL_FUNC(gtk_frame_focus_callback), (gpointer)this );
return TRUE; return TRUE;
} }

View File

@@ -34,7 +34,7 @@ extern bool g_isIdle;
// data // data
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
extern bool g_blockEventsOnDrag; extern bool g_blockEventsOnDrag;
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// "clicked" // "clicked"
@@ -334,7 +334,6 @@ void wxRadioBox::SetFocus()
if (button->active) if (button->active)
{ {
gtk_widget_grab_focus( GTK_WIDGET(button) ); gtk_widget_grab_focus( GTK_WIDGET(button) );
return; return;
} }
node = node->Next(); node = node->Next();

View File

@@ -795,29 +795,6 @@ static gint gtk_window_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_e
*/ */
#endif #endif
/*
Damn, I forgot why this didn't work, but it didn't work.
// win is a panel: up can be propagated to the panel
if ((!ret) && (win->m_wxwindow) && (win->m_parent) && (win->m_parent->AcceptsFocus()) &&
(gdk_event->keyval == GDK_Up))
{
win->m_parent->SetFocus();
ret = TRUE;
}
// win is a panel: left/right can be propagated to the panel
if ((!ret) && (win->m_wxwindow) &&
((gdk_event->keyval == GDK_Right) || (gdk_event->keyval == GDK_Left) ||
(gdk_event->keyval == GDK_Up) || (gdk_event->keyval == GDK_Down)))
{
wxNavigationKeyEvent new_event;
new_event.SetDirection( (gdk_event->keyval == GDK_Right) || (gdk_event->keyval == GDK_Down) );
new_event.SetCurrentFocus( win );
ret = win->GetEventHandler()->ProcessEvent( new_event );
}
*/
if (ret) if (ret)
{ {
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "key_press_event" ); gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "key_press_event" );

View File

@@ -524,7 +524,7 @@ wxDialUpManagerImpl::CheckIfconfig(void)
|| strstr(output,"sl") // slip || strstr(output,"sl") // slip
|| strstr(output,"pl") // plip || strstr(output,"pl") // plip
#else #else
wxASSERT(0); // unreachable code FALSE
#endif #endif
) )
rc = 1; rc = 1;