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:
@@ -308,10 +308,12 @@ void DnDFrame::OnLeftDown(wxMouseEvent &WXUNUSED(event) )
|
|||||||
if ( !m_strText.IsEmpty() )
|
if ( !m_strText.IsEmpty() )
|
||||||
{
|
{
|
||||||
// start drag operation
|
// start drag operation
|
||||||
|
#ifdef __WXMSW__
|
||||||
wxTextDataObject textData(m_strText);
|
wxTextDataObject textData(m_strText);
|
||||||
wxDropSource dragSource( textData, this );
|
wxDropSource dragSource( textData, this );
|
||||||
|
#else
|
||||||
// wxDropSource dragSource( new wxTextDataObject (m_strText), this );
|
wxDropSource dragSource( new wxTextDataObject (m_strText), this );
|
||||||
|
#endif
|
||||||
const char *pc;
|
const char *pc;
|
||||||
|
|
||||||
switch ( dragSource.DoDragDrop(TRUE) )
|
switch ( dragSource.DoDragDrop(TRUE) )
|
||||||
|
@@ -50,6 +50,20 @@ static void gtk_combo_clicked_callback( GtkWidget *WXUNUSED(widget), wxComboBox
|
|||||||
combo->GetEventHandler()->ProcessEvent(event);
|
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
|
// 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)->entry );
|
||||||
gtk_widget_realize( GTK_COMBO(m_widget)->button );
|
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() );
|
SetBackgroundColour( parent->GetBackgroundColour() );
|
||||||
SetForegroundColour( parent->GetForegroundColour() );
|
SetForegroundColour( parent->GetForegroundColour() );
|
||||||
|
|
||||||
|
@@ -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_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth;
|
||||||
if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight;
|
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_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_maxWidth;
|
||||||
if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_minHeight;
|
if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_maxHeight;
|
||||||
|
|
||||||
gtk_widget_set_usize( m_widget, m_width, m_height );
|
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_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth;
|
||||||
if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight;
|
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_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_maxWidth;
|
||||||
if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_minHeight;
|
if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_maxHeight;
|
||||||
|
|
||||||
if ((m_x != -1) || (m_y != -1))
|
if ((m_x != -1) || (m_y != -1))
|
||||||
{
|
{
|
||||||
|
@@ -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_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth;
|
||||||
if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight;
|
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_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_maxWidth;
|
||||||
if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_minHeight;
|
if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_maxHeight;
|
||||||
|
|
||||||
if ((m_x != -1) || (m_y != -1))
|
if ((m_x != -1) || (m_y != -1))
|
||||||
{
|
{
|
||||||
@@ -310,7 +310,7 @@ void wxFrame::SetSize( int x, int y, int width, int height, int sizeFlags )
|
|||||||
|
|
||||||
if ((m_width != old_width) || (m_height != old_height))
|
if ((m_width != old_width) || (m_height != old_height))
|
||||||
{
|
{
|
||||||
gtk_widget_set_usize( m_widget, m_width, m_height );
|
gtk_widget_set_usize( m_widget, m_width, m_height );
|
||||||
}
|
}
|
||||||
|
|
||||||
wxSizeEvent event( wxSize(m_width,m_height), GetId() );
|
wxSizeEvent event( wxSize(m_width,m_height), GetId() );
|
||||||
@@ -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_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth;
|
||||||
if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight;
|
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_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_maxWidth;
|
||||||
if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_minHeight;
|
if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_maxHeight;
|
||||||
|
|
||||||
gtk_widget_set_usize( m_widget, m_width, m_height );
|
gtk_widget_set_usize( m_widget, m_width, m_height );
|
||||||
|
|
||||||
|
@@ -42,10 +42,10 @@ gtk_text_changed_callback( GtkWidget *WXUNUSED(widget), wxTextCtrl *win )
|
|||||||
win->CalculateScrollbar();
|
win->CalculateScrollbar();
|
||||||
|
|
||||||
wxCommandEvent event( wxEVT_COMMAND_TEXT_UPDATED, win->m_windowId );
|
wxCommandEvent event( wxEVT_COMMAND_TEXT_UPDATED, win->m_windowId );
|
||||||
wxString val( win->GetValue() );
|
event.SetString( copystring(win->GetValue()) );
|
||||||
if (!val.IsNull()) event.m_commandString = WXSTRINGCAST val;
|
|
||||||
event.SetEventObject( win );
|
event.SetEventObject( win );
|
||||||
win->GetEventHandler()->ProcessEvent( event );
|
win->GetEventHandler()->ProcessEvent( event );
|
||||||
|
delete[] event.GetString();
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
@@ -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 );
|
event.SetEventObject( win );
|
||||||
|
|
||||||
gs_timeLastClick = gdk_event->time;
|
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 );
|
event.SetEventObject( win );
|
||||||
|
|
||||||
if (win->GetEventHandler()->ProcessEvent( event ))
|
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 );
|
event.SetEventObject( win );
|
||||||
|
|
||||||
if (win->GetEventHandler()->ProcessEvent( event ))
|
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_x = (long)x;
|
||||||
event.m_y = (long)y;
|
event.m_y = (long)y;
|
||||||
|
|
||||||
|
wxPoint pt(win->GetClientAreaOrigin());
|
||||||
|
event.m_x -= pt.x;
|
||||||
|
event.m_y -= pt.y;
|
||||||
|
|
||||||
if (win->GetEventHandler()->ProcessEvent( event ))
|
if (win->GetEventHandler()->ProcessEvent( event ))
|
||||||
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "enter_notify_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_x = (long)x;
|
||||||
event.m_y = (long)y;
|
event.m_y = (long)y;
|
||||||
|
|
||||||
|
wxPoint pt(win->GetClientAreaOrigin());
|
||||||
|
event.m_x -= pt.x;
|
||||||
|
event.m_y -= pt.y;
|
||||||
|
|
||||||
if (win->GetEventHandler()->ProcessEvent( event ))
|
if (win->GetEventHandler()->ProcessEvent( event ))
|
||||||
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "leave_notify_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( m_widget != NULL, FALSE, "invalid window" );
|
||||||
|
|
||||||
wxCHECK_MSG( menu != NULL, FALSE, "invalid popup-menu" );
|
wxCHECK_MSG( menu != NULL, FALSE, "invalid popup-menu" );
|
||||||
|
|
||||||
SetInvokingWindow( menu, this );
|
SetInvokingWindow( menu, this );
|
||||||
|
|
||||||
|
gs_pop_x = x;
|
||||||
|
gs_pop_y = y;
|
||||||
|
|
||||||
gtk_menu_popup(
|
gtk_menu_popup(
|
||||||
GTK_MENU(menu->m_menu),
|
GTK_MENU(menu->m_menu),
|
||||||
(GtkWidget *)NULL, // parent menu shell
|
(GtkWidget *) NULL, // parent menu shell
|
||||||
(GtkWidget *)NULL, // parent menu item
|
(GtkWidget *) NULL, // parent menu item
|
||||||
(GtkMenuPositionFunc)NULL,
|
(GtkMenuPositionFunc) pop_pos_callback,
|
||||||
NULL, // client data
|
(gpointer) this, // client data
|
||||||
0, // button used to activate it
|
0, // button used to activate it
|
||||||
0//gs_timeLastClick // the time of activation
|
0 //gs_timeLastClick // the time of activation
|
||||||
);
|
);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@@ -50,6 +50,20 @@ static void gtk_combo_clicked_callback( GtkWidget *WXUNUSED(widget), wxComboBox
|
|||||||
combo->GetEventHandler()->ProcessEvent(event);
|
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
|
// 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)->entry );
|
||||||
gtk_widget_realize( GTK_COMBO(m_widget)->button );
|
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() );
|
SetBackgroundColour( parent->GetBackgroundColour() );
|
||||||
SetForegroundColour( parent->GetForegroundColour() );
|
SetForegroundColour( parent->GetForegroundColour() );
|
||||||
|
|
||||||
|
@@ -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_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth;
|
||||||
if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight;
|
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_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_maxWidth;
|
||||||
if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_minHeight;
|
if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_maxHeight;
|
||||||
|
|
||||||
gtk_widget_set_usize( m_widget, m_width, m_height );
|
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_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth;
|
||||||
if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight;
|
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_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_maxWidth;
|
||||||
if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_minHeight;
|
if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_maxHeight;
|
||||||
|
|
||||||
if ((m_x != -1) || (m_y != -1))
|
if ((m_x != -1) || (m_y != -1))
|
||||||
{
|
{
|
||||||
|
@@ -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_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth;
|
||||||
if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight;
|
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_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_maxWidth;
|
||||||
if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_minHeight;
|
if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_maxHeight;
|
||||||
|
|
||||||
if ((m_x != -1) || (m_y != -1))
|
if ((m_x != -1) || (m_y != -1))
|
||||||
{
|
{
|
||||||
@@ -310,7 +310,7 @@ void wxFrame::SetSize( int x, int y, int width, int height, int sizeFlags )
|
|||||||
|
|
||||||
if ((m_width != old_width) || (m_height != old_height))
|
if ((m_width != old_width) || (m_height != old_height))
|
||||||
{
|
{
|
||||||
gtk_widget_set_usize( m_widget, m_width, m_height );
|
gtk_widget_set_usize( m_widget, m_width, m_height );
|
||||||
}
|
}
|
||||||
|
|
||||||
wxSizeEvent event( wxSize(m_width,m_height), GetId() );
|
wxSizeEvent event( wxSize(m_width,m_height), GetId() );
|
||||||
@@ -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_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth;
|
||||||
if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight;
|
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_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_maxWidth;
|
||||||
if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_minHeight;
|
if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_maxHeight;
|
||||||
|
|
||||||
gtk_widget_set_usize( m_widget, m_width, m_height );
|
gtk_widget_set_usize( m_widget, m_width, m_height );
|
||||||
|
|
||||||
|
@@ -42,10 +42,10 @@ gtk_text_changed_callback( GtkWidget *WXUNUSED(widget), wxTextCtrl *win )
|
|||||||
win->CalculateScrollbar();
|
win->CalculateScrollbar();
|
||||||
|
|
||||||
wxCommandEvent event( wxEVT_COMMAND_TEXT_UPDATED, win->m_windowId );
|
wxCommandEvent event( wxEVT_COMMAND_TEXT_UPDATED, win->m_windowId );
|
||||||
wxString val( win->GetValue() );
|
event.SetString( copystring(win->GetValue()) );
|
||||||
if (!val.IsNull()) event.m_commandString = WXSTRINGCAST val;
|
|
||||||
event.SetEventObject( win );
|
event.SetEventObject( win );
|
||||||
win->GetEventHandler()->ProcessEvent( event );
|
win->GetEventHandler()->ProcessEvent( event );
|
||||||
|
delete[] event.GetString();
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
@@ -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 );
|
event.SetEventObject( win );
|
||||||
|
|
||||||
gs_timeLastClick = gdk_event->time;
|
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 );
|
event.SetEventObject( win );
|
||||||
|
|
||||||
if (win->GetEventHandler()->ProcessEvent( event ))
|
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 );
|
event.SetEventObject( win );
|
||||||
|
|
||||||
if (win->GetEventHandler()->ProcessEvent( event ))
|
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_x = (long)x;
|
||||||
event.m_y = (long)y;
|
event.m_y = (long)y;
|
||||||
|
|
||||||
|
wxPoint pt(win->GetClientAreaOrigin());
|
||||||
|
event.m_x -= pt.x;
|
||||||
|
event.m_y -= pt.y;
|
||||||
|
|
||||||
if (win->GetEventHandler()->ProcessEvent( event ))
|
if (win->GetEventHandler()->ProcessEvent( event ))
|
||||||
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "enter_notify_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_x = (long)x;
|
||||||
event.m_y = (long)y;
|
event.m_y = (long)y;
|
||||||
|
|
||||||
|
wxPoint pt(win->GetClientAreaOrigin());
|
||||||
|
event.m_x -= pt.x;
|
||||||
|
event.m_y -= pt.y;
|
||||||
|
|
||||||
if (win->GetEventHandler()->ProcessEvent( event ))
|
if (win->GetEventHandler()->ProcessEvent( event ))
|
||||||
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "leave_notify_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( m_widget != NULL, FALSE, "invalid window" );
|
||||||
|
|
||||||
wxCHECK_MSG( menu != NULL, FALSE, "invalid popup-menu" );
|
wxCHECK_MSG( menu != NULL, FALSE, "invalid popup-menu" );
|
||||||
|
|
||||||
SetInvokingWindow( menu, this );
|
SetInvokingWindow( menu, this );
|
||||||
|
|
||||||
|
gs_pop_x = x;
|
||||||
|
gs_pop_y = y;
|
||||||
|
|
||||||
gtk_menu_popup(
|
gtk_menu_popup(
|
||||||
GTK_MENU(menu->m_menu),
|
GTK_MENU(menu->m_menu),
|
||||||
(GtkWidget *)NULL, // parent menu shell
|
(GtkWidget *) NULL, // parent menu shell
|
||||||
(GtkWidget *)NULL, // parent menu item
|
(GtkWidget *) NULL, // parent menu item
|
||||||
(GtkMenuPositionFunc)NULL,
|
(GtkMenuPositionFunc) pop_pos_callback,
|
||||||
NULL, // client data
|
(gpointer) this, // client data
|
||||||
0, // button used to activate it
|
0, // button used to activate it
|
||||||
0//gs_timeLastClick // the time of activation
|
0 //gs_timeLastClick // the time of activation
|
||||||
);
|
);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user