A few resize bugs removed

combo box now emits EVT_TEXT
  position of pop-up menu can now be set


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1481 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
1999-01-26 11:35:26 +00:00
parent 69919241d3
commit 0c77152e0d
11 changed files with 142 additions and 38 deletions

View File

@@ -308,10 +308,12 @@ void DnDFrame::OnLeftDown(wxMouseEvent &WXUNUSED(event) )
if ( !m_strText.IsEmpty() )
{
// start drag operation
#ifdef __WXMSW__
wxTextDataObject textData(m_strText);
wxDropSource dragSource( textData, this );
// wxDropSource dragSource( new wxTextDataObject (m_strText), this );
#else
wxDropSource dragSource( new wxTextDataObject (m_strText), this );
#endif
const char *pc;
switch ( dragSource.DoDragDrop(TRUE) )

View File

@@ -50,6 +50,20 @@ static void gtk_combo_clicked_callback( GtkWidget *WXUNUSED(widget), wxComboBox
combo->GetEventHandler()->ProcessEvent(event);
}
//-----------------------------------------------------------------------------
// "changed"
//-----------------------------------------------------------------------------
static void
gtk_text_changed_callback( GtkWidget *WXUNUSED(widget), wxComboBox *combo )
{
wxCommandEvent event( wxEVT_COMMAND_TEXT_UPDATED, combo->m_windowId );
event.SetString( copystring(combo->GetValue()) );
event.SetEventObject( combo );
combo->GetEventHandler()->ProcessEvent( event );
delete[] event.GetString();
}
//-----------------------------------------------------------------------------
// wxComboBox
//-----------------------------------------------------------------------------
@@ -115,6 +129,9 @@ bool wxComboBox::Create( wxWindow *parent, wxWindowID id, const wxString& value,
gtk_widget_realize( GTK_COMBO(m_widget)->entry );
gtk_widget_realize( GTK_COMBO(m_widget)->button );
gtk_signal_connect( GTK_OBJECT(GTK_COMBO(m_widget)->entry), "changed",
GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this);
SetBackgroundColour( parent->GetBackgroundColour() );
SetForegroundColour( parent->GetForegroundColour() );

View File

@@ -263,8 +263,8 @@ void wxDialog::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int heigh
if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth;
if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight;
if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_minWidth;
if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_minHeight;
if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_maxWidth;
if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_maxHeight;
gtk_widget_set_usize( m_widget, m_width, m_height );
@@ -350,8 +350,8 @@ void wxDialog::SetSize( int x, int y, int width, int height, int sizeFlags )
if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth;
if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight;
if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_minWidth;
if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_minHeight;
if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_maxWidth;
if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_maxHeight;
if ((m_x != -1) || (m_y != -1))
{

View File

@@ -299,8 +299,8 @@ void wxFrame::SetSize( int x, int y, int width, int height, int sizeFlags )
if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth;
if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight;
if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_minWidth;
if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_minHeight;
if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_maxWidth;
if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_maxHeight;
if ((m_x != -1) || (m_y != -1))
{
@@ -393,8 +393,8 @@ void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int height
if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth;
if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight;
if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_minWidth;
if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_minHeight;
if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_maxWidth;
if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_maxHeight;
gtk_widget_set_usize( m_widget, m_width, m_height );

View File

@@ -42,10 +42,10 @@ gtk_text_changed_callback( GtkWidget *WXUNUSED(widget), wxTextCtrl *win )
win->CalculateScrollbar();
wxCommandEvent event( wxEVT_COMMAND_TEXT_UPDATED, win->m_windowId );
wxString val( win->GetValue() );
if (!val.IsNull()) event.m_commandString = WXSTRINGCAST val;
event.SetString( copystring(win->GetValue()) );
event.SetEventObject( win );
win->GetEventHandler()->ProcessEvent( event );
delete[] event.GetString();
}
//-----------------------------------------------------------------------------

View File

@@ -632,6 +632,10 @@ static gint gtk_window_button_press_callback( GtkWidget *widget, GdkEventButton
}
}
wxPoint pt(win->GetClientAreaOrigin());
event.m_x -= pt.x;
event.m_y -= pt.y;
event.SetEventObject( win );
gs_timeLastClick = gdk_event->time;
@@ -736,6 +740,10 @@ static gint gtk_window_button_release_callback( GtkWidget *widget, GdkEventButto
}
}
wxPoint pt(win->GetClientAreaOrigin());
event.m_x -= pt.x;
event.m_y -= pt.y;
event.SetEventObject( win );
if (win->GetEventHandler()->ProcessEvent( event ))
@@ -841,6 +849,10 @@ static gint gtk_window_motion_notify_callback( GtkWidget *widget, GdkEventMotion
}
}
wxPoint pt(win->GetClientAreaOrigin());
event.m_x -= pt.x;
event.m_y -= pt.y;
event.SetEventObject( win );
if (win->GetEventHandler()->ProcessEvent( event ))
@@ -966,6 +978,10 @@ static gint gtk_window_enter_callback( GtkWidget *widget, GdkEventCrossing *gdk_
event.m_x = (long)x;
event.m_y = (long)y;
wxPoint pt(win->GetClientAreaOrigin());
event.m_x -= pt.x;
event.m_y -= pt.y;
if (win->GetEventHandler()->ProcessEvent( event ))
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "enter_notify_event" );
@@ -1014,6 +1030,10 @@ static gint gtk_window_leave_callback( GtkWidget *widget, GdkEventCrossing *gdk_
event.m_x = (long)x;
event.m_y = (long)y;
wxPoint pt(win->GetClientAreaOrigin());
event.m_x -= pt.x;
event.m_y -= pt.y;
if (win->GetEventHandler()->ProcessEvent( event ))
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "leave_notify_event" );
@@ -2635,21 +2655,35 @@ static void SetInvokingWindow( wxMenu *menu, wxWindow *win )
}
}
bool wxWindow::PopupMenu( wxMenu *menu, int WXUNUSED(x), int WXUNUSED(y) )
static gint gs_pop_x = 0;
static gint gs_pop_y = 0;
static void pop_pos_callback( GtkMenu *menu, gint *x, gint *y, wxWindow *win )
{
win->ClientToScreen( &gs_pop_x, &gs_pop_y );
*x = gs_pop_x;
*y = gs_pop_y;
}
bool wxWindow::PopupMenu( wxMenu *menu, int x, int y )
{
wxCHECK_MSG( m_widget != NULL, FALSE, "invalid window" );
wxCHECK_MSG( menu != NULL, FALSE, "invalid popup-menu" );
SetInvokingWindow( menu, this );
gs_pop_x = x;
gs_pop_y = y;
gtk_menu_popup(
GTK_MENU(menu->m_menu),
(GtkWidget *)NULL, // parent menu shell
(GtkWidget *)NULL, // parent menu item
(GtkMenuPositionFunc)NULL,
NULL, // client data
(GtkWidget *) NULL, // parent menu shell
(GtkWidget *) NULL, // parent menu item
(GtkMenuPositionFunc) pop_pos_callback,
(gpointer) this, // client data
0, // button used to activate it
0//gs_timeLastClick // the time of activation
0 //gs_timeLastClick // the time of activation
);
return TRUE;
}

View File

@@ -50,6 +50,20 @@ static void gtk_combo_clicked_callback( GtkWidget *WXUNUSED(widget), wxComboBox
combo->GetEventHandler()->ProcessEvent(event);
}
//-----------------------------------------------------------------------------
// "changed"
//-----------------------------------------------------------------------------
static void
gtk_text_changed_callback( GtkWidget *WXUNUSED(widget), wxComboBox *combo )
{
wxCommandEvent event( wxEVT_COMMAND_TEXT_UPDATED, combo->m_windowId );
event.SetString( copystring(combo->GetValue()) );
event.SetEventObject( combo );
combo->GetEventHandler()->ProcessEvent( event );
delete[] event.GetString();
}
//-----------------------------------------------------------------------------
// wxComboBox
//-----------------------------------------------------------------------------
@@ -115,6 +129,9 @@ bool wxComboBox::Create( wxWindow *parent, wxWindowID id, const wxString& value,
gtk_widget_realize( GTK_COMBO(m_widget)->entry );
gtk_widget_realize( GTK_COMBO(m_widget)->button );
gtk_signal_connect( GTK_OBJECT(GTK_COMBO(m_widget)->entry), "changed",
GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this);
SetBackgroundColour( parent->GetBackgroundColour() );
SetForegroundColour( parent->GetForegroundColour() );

View File

@@ -263,8 +263,8 @@ void wxDialog::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int heigh
if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth;
if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight;
if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_minWidth;
if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_minHeight;
if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_maxWidth;
if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_maxHeight;
gtk_widget_set_usize( m_widget, m_width, m_height );
@@ -350,8 +350,8 @@ void wxDialog::SetSize( int x, int y, int width, int height, int sizeFlags )
if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth;
if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight;
if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_minWidth;
if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_minHeight;
if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_maxWidth;
if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_maxHeight;
if ((m_x != -1) || (m_y != -1))
{

View File

@@ -299,8 +299,8 @@ void wxFrame::SetSize( int x, int y, int width, int height, int sizeFlags )
if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth;
if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight;
if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_minWidth;
if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_minHeight;
if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_maxWidth;
if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_maxHeight;
if ((m_x != -1) || (m_y != -1))
{
@@ -393,8 +393,8 @@ void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int height
if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth;
if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight;
if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_minWidth;
if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_minHeight;
if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_maxWidth;
if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_maxHeight;
gtk_widget_set_usize( m_widget, m_width, m_height );

View File

@@ -42,10 +42,10 @@ gtk_text_changed_callback( GtkWidget *WXUNUSED(widget), wxTextCtrl *win )
win->CalculateScrollbar();
wxCommandEvent event( wxEVT_COMMAND_TEXT_UPDATED, win->m_windowId );
wxString val( win->GetValue() );
if (!val.IsNull()) event.m_commandString = WXSTRINGCAST val;
event.SetString( copystring(win->GetValue()) );
event.SetEventObject( win );
win->GetEventHandler()->ProcessEvent( event );
delete[] event.GetString();
}
//-----------------------------------------------------------------------------

View File

@@ -632,6 +632,10 @@ static gint gtk_window_button_press_callback( GtkWidget *widget, GdkEventButton
}
}
wxPoint pt(win->GetClientAreaOrigin());
event.m_x -= pt.x;
event.m_y -= pt.y;
event.SetEventObject( win );
gs_timeLastClick = gdk_event->time;
@@ -736,6 +740,10 @@ static gint gtk_window_button_release_callback( GtkWidget *widget, GdkEventButto
}
}
wxPoint pt(win->GetClientAreaOrigin());
event.m_x -= pt.x;
event.m_y -= pt.y;
event.SetEventObject( win );
if (win->GetEventHandler()->ProcessEvent( event ))
@@ -841,6 +849,10 @@ static gint gtk_window_motion_notify_callback( GtkWidget *widget, GdkEventMotion
}
}
wxPoint pt(win->GetClientAreaOrigin());
event.m_x -= pt.x;
event.m_y -= pt.y;
event.SetEventObject( win );
if (win->GetEventHandler()->ProcessEvent( event ))
@@ -966,6 +978,10 @@ static gint gtk_window_enter_callback( GtkWidget *widget, GdkEventCrossing *gdk_
event.m_x = (long)x;
event.m_y = (long)y;
wxPoint pt(win->GetClientAreaOrigin());
event.m_x -= pt.x;
event.m_y -= pt.y;
if (win->GetEventHandler()->ProcessEvent( event ))
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "enter_notify_event" );
@@ -1014,6 +1030,10 @@ static gint gtk_window_leave_callback( GtkWidget *widget, GdkEventCrossing *gdk_
event.m_x = (long)x;
event.m_y = (long)y;
wxPoint pt(win->GetClientAreaOrigin());
event.m_x -= pt.x;
event.m_y -= pt.y;
if (win->GetEventHandler()->ProcessEvent( event ))
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "leave_notify_event" );
@@ -2635,21 +2655,35 @@ static void SetInvokingWindow( wxMenu *menu, wxWindow *win )
}
}
bool wxWindow::PopupMenu( wxMenu *menu, int WXUNUSED(x), int WXUNUSED(y) )
static gint gs_pop_x = 0;
static gint gs_pop_y = 0;
static void pop_pos_callback( GtkMenu *menu, gint *x, gint *y, wxWindow *win )
{
win->ClientToScreen( &gs_pop_x, &gs_pop_y );
*x = gs_pop_x;
*y = gs_pop_y;
}
bool wxWindow::PopupMenu( wxMenu *menu, int x, int y )
{
wxCHECK_MSG( m_widget != NULL, FALSE, "invalid window" );
wxCHECK_MSG( menu != NULL, FALSE, "invalid popup-menu" );
SetInvokingWindow( menu, this );
gs_pop_x = x;
gs_pop_y = y;
gtk_menu_popup(
GTK_MENU(menu->m_menu),
(GtkWidget *)NULL, // parent menu shell
(GtkWidget *)NULL, // parent menu item
(GtkMenuPositionFunc)NULL,
NULL, // client data
(GtkWidget *) NULL, // parent menu shell
(GtkWidget *) NULL, // parent menu item
(GtkMenuPositionFunc) pop_pos_callback,
(gpointer) this, // client data
0, // button used to activate it
0//gs_timeLastClick // the time of activation
0 //gs_timeLastClick // the time of activation
);
return TRUE;
}