long FindItem(long start, long data);
long HitTest( int x, int y, int &flags );
void InsertItem( wxListItem &item );
+// void AddItem( wxListItem &item );
void InsertColumn( long col, wxListItem &item );
+// void AddColumn( wxListItem &item );
void SortItems( wxListCtrlCompare fn, long data );
virtual bool OnListNotify( wxListEvent &event );
void SetString( int n, const wxString &string );
void SetStringSelection( const wxString &string, bool select = TRUE );
- virtual GtkWidget *GetDropTargetWidget(void);
+ virtual GtkWidget *GetConnectWidget(void);
private:
wxTextCtrl& operator<<(double d);
wxTextCtrl& operator<<(const char c);
- virtual GtkWidget* GetDropTargetWidget(void);
+ virtual GtkWidget* GetConnectWidget(void);
private:
bool m_modified;
virtual bool TransferDataFromWindow();
void OnInitDialog( wxInitDialogEvent &event );
virtual void InitDialog();
+
+ virtual bool PopupMenu( wxMenu *menu, int x, int y );
virtual void SetDropTarget( wxDropTarget *dropTarget );
virtual wxDropTarget *GetDropTarget() const;
+
private:
- virtual GtkWidget* GetDropTargetWidget(void);
+ virtual GtkWidget* GetConnectWidget(void);
public:
virtual void SetScrollbar( int orient, int pos, int thumbVisible,
void SetString( int n, const wxString &string );
void SetStringSelection( const wxString &string, bool select = TRUE );
- virtual GtkWidget *GetDropTargetWidget(void);
+ virtual GtkWidget *GetConnectWidget(void);
private:
wxTextCtrl& operator<<(double d);
wxTextCtrl& operator<<(const char c);
- virtual GtkWidget* GetDropTargetWidget(void);
+ virtual GtkWidget* GetConnectWidget(void);
private:
bool m_modified;
virtual bool TransferDataFromWindow();
void OnInitDialog( wxInitDialogEvent &event );
virtual void InitDialog();
+
+ virtual bool PopupMenu( wxMenu *menu, int x, int y );
virtual void SetDropTarget( wxDropTarget *dropTarget );
virtual wxDropTarget *GetDropTarget() const;
+
private:
- virtual GtkWidget* GetDropTargetWidget(void);
+ virtual GtkWidget* GetConnectWidget(void);
public:
virtual void SetScrollbar( int orient, int pos, int thumbVisible,
return TRUE;
}
+//----------------------------------------------------------------------
+// MyTextCtrl
+//----------------------------------------------------------------------
+
+BEGIN_EVENT_TABLE(MyTextCtrl, wxTextCtrl)
+ EVT_RIGHT_DOWN (MyTextCtrl::OnRightButton)
+END_EVENT_TABLE()
+
+MyTextCtrl::MyTextCtrl( wxWindow *parent, wxWindowID id, const wxString &value,
+ const wxPoint &pos, const wxSize &size, int style ) :
+ wxTextCtrl( parent, id, value, pos, size, style )
+{
+}
+
//----------------------------------------------------------------------
// MyPanel
//----------------------------------------------------------------------
void OnHelp (wxCommandEvent& event);
void OnLogClear(wxCommandEvent& event);
- void OnMouseBtnDown(wxMouseEvent& event);
+ void OnLeftDown(wxMouseEvent& event);
+ void OnRightDown(wxMouseEvent& event);
bool OnClose();
EVT_MENU(Menu_Drag, DnDFrame::OnDrag)
EVT_MENU(Menu_Help, DnDFrame::OnHelp)
EVT_MENU(Menu_Clear, DnDFrame::OnLogClear)
-
- EVT_LEFT_DOWN(OnMouseBtnDown)
- EVT_RIGHT_DOWN(OnMouseBtnDown)
- EVT_MIDDLE_DOWN(OnMouseBtnDown)
+ EVT_LEFT_DOWN(OnLeftDown)
+ EVT_RIGHT_DOWN(OnRightDown)
END_EVENT_TABLE()
// `Main program' equivalent, creating windows and returning main app frame
return TRUE;
}
-void DnDFrame::OnMouseBtnDown(wxMouseEvent& /* event */ )
+void DnDFrame::OnLeftDown(wxMouseEvent &WXUNUSED(event) )
{
if ( !m_strText.IsEmpty() ) {
// start drag operation
+
wxTextDataObject data(m_strText);
wxDropSource dragSource(data, this);
const char *pc;
}
}
+void DnDFrame::OnRightDown(wxMouseEvent &event )
+{
+ wxMenu *menu = new wxMenu;
+
+ menu->Append(Menu_Drag, "&Test drag...");
+ menu->Append(Menu_About, "&About");
+ menu->Append(Menu_Quit, "E&xit");
+
+ PopupMenu( menu, event.GetX(), event.GetY() );
+}
+
DnDFrame::~DnDFrame()
{
if ( m_pLog != NULL ) {
UnregisterWindow();
+ g_blockEventsOnDrag = FALSE;
+
return m_retValue;
};
if (m_frameMenuBar)
{
+ wxNode *node = m_frameMenuBar->m_menus.First();
+ while (node)
+ {
+ wxMenu *menu = (wxMenu*)node->Data();
+ SetInvokingWindow( menu, this );
+ node = node->Next();
+ };
+
if (m_frameMenuBar->m_parent != this)
{
- wxNode *node = m_frameMenuBar->m_menus.First();
- while (node)
- {
- wxMenu *menu = (wxMenu*)node->Data();
- SetInvokingWindow( menu, this );
- node = node->Next();
- };
-
m_frameMenuBar->m_parent = this;
gtk_myfixed_put( GTK_MYFIXED(m_mainWindow),
m_frameMenuBar->m_widget, m_frameMenuBar->m_x, m_frameMenuBar->m_y );
wxNode *node = m_clientData.Nth( n );
if (!node)
{
- wxFAIL_MSG(_("wxListBox::Delete wrong index"));
+ wxFAIL_MSG("wxListBox::Delete wrong index");
}
else
m_clientData.DeleteNode( node );
return -1;
};
-GtkWidget *wxListBox::GetDropTargetWidget(void)
+GtkWidget *wxListBox::GetConnectWidget(void)
{
return GTK_WIDGET(m_list);
};
{
if (!child->IsKindOf(CLASSINFO(wxMDIChildFrame)))
{
- wxFAIL_MSG(_("wxNotebook::AddChild: Child has to be wxMDIChildFrame"));
+ wxFAIL_MSG("wxNotebook::AddChild: Child has to be wxMDIChildFrame");
return;
};
#include "wx/menu.h"
#include "wx/log.h"
+#include "wx/intl.h"
//-----------------------------------------------------------------------------
// wxMenuBar
void wxMenuItem::SetText(const wxString& str)
{
+ m_text = "";
for ( const char *pc = str; *pc != '\0'; pc++ ) {
if ( *pc == '&' )
pc++; // skip it
void wxMenuItem::Check( bool check )
{
- wxCHECK_RET( IsCheckable(), _("can't check uncheckable item!") )
+ wxCHECK_RET( IsCheckable(), _("Can't check uncheckable item!") )
m_isChecked = check;
gtk_check_menu_item_set_state( (GtkCheckMenuItem*)m_menuItem, (gint)check );
#include "wx/panel.h"
#include "wx/utils.h"
#include "wx/imaglist.h"
+#include "wx/intl.h"
#include "wx/log.h"
//-----------------------------------------------------------------------------
return *this;
}
-GtkWidget* wxTextCtrl::GetDropTargetWidget(void)
+GtkWidget* wxTextCtrl::GetConnectWidget(void)
{
return GTK_WIDGET(m_text);
};
#include "wx/dcclient.h"
#include "wx/dnd.h"
#include "wx/mdi.h"
+#include "wx/menu.h"
#include "wx/notebook.h"
#include "wx/statusbr.h"
#include <wx/intl.h>
if (g_blockEventsOnDrag) return;
/*
- if (IS_KIND_OF(win,wxTreeCtrl))
+ if (IS_KIND_OF(win,wxStatusBar))
{
printf( "OnExpose from " );
if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
printf( win->GetClassInfo()->GetClassName() );
printf( ".\n" );
-
+
printf( "x: %d \n", gdk_event->area.x );
printf( "y: %d \n", gdk_event->area.y );
printf( "w: %d \n", gdk_event->area.width );
if (g_blockEventsOnDrag) return;
/*
+ if (IS_KIND_OF(win,wxStatusBar))
+ {
printf( "OnDraw from " );
if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
printf( win->GetClassInfo()->GetClassName() );
printf( "y: %d \n", rect->y );
printf( "w: %d \n", rect->width );
printf( "h: %d \n", rect->height );
+}
*/
win->m_updateRegion.Union( rect->x, rect->y, rect->width, rect->height );
printf( win->GetClassInfo()->GetClassName() );
printf( ".\n" );
*/
-
+
wxEventType event_type = wxEVT_LEFT_DOWN;
if (gdk_event->button == 1)
// GtkStyle *style = m_widget->style;
// style->font = m_font.GetInternalFont( 1.0 ); // destroy old font ?
- GtkWidget *connect_widget = m_widget;
- if (m_wxwindow) connect_widget = m_wxwindow;
+ GtkWidget *connect_widget = GetConnectWidget();
gtk_object_set_data (GTK_OBJECT (connect_widget), "MyWxWindow", (gpointer)this );
void wxWindow::SetFocus(void)
{
- GtkWidget *connect_widget = m_widget;
- if (m_wxwindow) connect_widget = m_wxwindow;
+ GtkWidget *connect_widget = GetConnectWidget();
if (connect_widget)
{
if (GTK_WIDGET_CAN_FOCUS(connect_widget) && !GTK_WIDGET_HAS_FOCUS (connect_widget) )
rect->width,
rect->height );
else
- Clear();
+ Clear();
};
if (!rect)
{
GetEventHandler()->ProcessEvent(event);
};
+static void SetInvokingWindow( wxMenu *menu, wxWindow *win )
+{
+ menu->SetInvokingWindow( win );
+ wxNode *node = menu->m_items.First();
+ while (node)
+ {
+ wxMenuItem *menuitem = (wxMenuItem*)node->Data();
+ if (menuitem->IsSubMenu())
+ SetInvokingWindow( menuitem->GetSubMenu(), win );
+ node = node->Next();
+ };
+};
+
+bool wxWindow::PopupMenu( wxMenu *menu, int WXUNUSED(x), int WXUNUSED(y) )
+{
+ SetInvokingWindow( menu, this );
+ gtk_menu_popup( GTK_MENU(menu->m_menu), NULL, NULL, NULL, NULL, 0, 0 );
+ return TRUE;
+}
+
void wxWindow::SetDropTarget( wxDropTarget *dropTarget )
{
- GtkWidget *dnd_widget = GetDropTargetWidget();
+ GtkWidget *dnd_widget = GetConnectWidget();
if (m_pDropTarget)
{
return m_pDropTarget;
};
-GtkWidget* wxWindow::GetDropTargetWidget(void)
+GtkWidget* wxWindow::GetConnectWidget(void)
{
GtkWidget *connect_widget = m_widget;
if (m_wxwindow) connect_widget = m_wxwindow;
void wxWindow::CaptureMouse(void)
{
- GtkWidget *connect_widget = m_widget;
- if (m_wxwindow) connect_widget = m_wxwindow;
+ GtkWidget *connect_widget = GetConnectWidget();
gtk_grab_add( connect_widget );
gdk_pointer_grab ( connect_widget->window, FALSE,
(GdkEventMask)
void wxWindow::ReleaseMouse(void)
{
- GtkWidget *connect_widget = m_widget;
- if (m_wxwindow) connect_widget = m_wxwindow;
+ GtkWidget *connect_widget = GetConnectWidget();
gtk_grab_remove( connect_widget );
gdk_pointer_ungrab ( GDK_CURRENT_TIME );
};
UnregisterWindow();
+ g_blockEventsOnDrag = FALSE;
+
return m_retValue;
};
if (m_frameMenuBar)
{
+ wxNode *node = m_frameMenuBar->m_menus.First();
+ while (node)
+ {
+ wxMenu *menu = (wxMenu*)node->Data();
+ SetInvokingWindow( menu, this );
+ node = node->Next();
+ };
+
if (m_frameMenuBar->m_parent != this)
{
- wxNode *node = m_frameMenuBar->m_menus.First();
- while (node)
- {
- wxMenu *menu = (wxMenu*)node->Data();
- SetInvokingWindow( menu, this );
- node = node->Next();
- };
-
m_frameMenuBar->m_parent = this;
gtk_myfixed_put( GTK_MYFIXED(m_mainWindow),
m_frameMenuBar->m_widget, m_frameMenuBar->m_x, m_frameMenuBar->m_y );
wxNode *node = m_clientData.Nth( n );
if (!node)
{
- wxFAIL_MSG(_("wxListBox::Delete wrong index"));
+ wxFAIL_MSG("wxListBox::Delete wrong index");
}
else
m_clientData.DeleteNode( node );
return -1;
};
-GtkWidget *wxListBox::GetDropTargetWidget(void)
+GtkWidget *wxListBox::GetConnectWidget(void)
{
return GTK_WIDGET(m_list);
};
{
if (!child->IsKindOf(CLASSINFO(wxMDIChildFrame)))
{
- wxFAIL_MSG(_("wxNotebook::AddChild: Child has to be wxMDIChildFrame"));
+ wxFAIL_MSG("wxNotebook::AddChild: Child has to be wxMDIChildFrame");
return;
};
#include "wx/menu.h"
#include "wx/log.h"
+#include "wx/intl.h"
//-----------------------------------------------------------------------------
// wxMenuBar
void wxMenuItem::SetText(const wxString& str)
{
+ m_text = "";
for ( const char *pc = str; *pc != '\0'; pc++ ) {
if ( *pc == '&' )
pc++; // skip it
void wxMenuItem::Check( bool check )
{
- wxCHECK_RET( IsCheckable(), _("can't check uncheckable item!") )
+ wxCHECK_RET( IsCheckable(), _("Can't check uncheckable item!") )
m_isChecked = check;
gtk_check_menu_item_set_state( (GtkCheckMenuItem*)m_menuItem, (gint)check );
#include "wx/panel.h"
#include "wx/utils.h"
#include "wx/imaglist.h"
+#include "wx/intl.h"
#include "wx/log.h"
//-----------------------------------------------------------------------------
return *this;
}
-GtkWidget* wxTextCtrl::GetDropTargetWidget(void)
+GtkWidget* wxTextCtrl::GetConnectWidget(void)
{
return GTK_WIDGET(m_text);
};
#include "wx/dcclient.h"
#include "wx/dnd.h"
#include "wx/mdi.h"
+#include "wx/menu.h"
#include "wx/notebook.h"
#include "wx/statusbr.h"
#include <wx/intl.h>
if (g_blockEventsOnDrag) return;
/*
- if (IS_KIND_OF(win,wxTreeCtrl))
+ if (IS_KIND_OF(win,wxStatusBar))
{
printf( "OnExpose from " );
if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
printf( win->GetClassInfo()->GetClassName() );
printf( ".\n" );
-
+
printf( "x: %d \n", gdk_event->area.x );
printf( "y: %d \n", gdk_event->area.y );
printf( "w: %d \n", gdk_event->area.width );
if (g_blockEventsOnDrag) return;
/*
+ if (IS_KIND_OF(win,wxStatusBar))
+ {
printf( "OnDraw from " );
if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
printf( win->GetClassInfo()->GetClassName() );
printf( "y: %d \n", rect->y );
printf( "w: %d \n", rect->width );
printf( "h: %d \n", rect->height );
+}
*/
win->m_updateRegion.Union( rect->x, rect->y, rect->width, rect->height );
printf( win->GetClassInfo()->GetClassName() );
printf( ".\n" );
*/
-
+
wxEventType event_type = wxEVT_LEFT_DOWN;
if (gdk_event->button == 1)
// GtkStyle *style = m_widget->style;
// style->font = m_font.GetInternalFont( 1.0 ); // destroy old font ?
- GtkWidget *connect_widget = m_widget;
- if (m_wxwindow) connect_widget = m_wxwindow;
+ GtkWidget *connect_widget = GetConnectWidget();
gtk_object_set_data (GTK_OBJECT (connect_widget), "MyWxWindow", (gpointer)this );
void wxWindow::SetFocus(void)
{
- GtkWidget *connect_widget = m_widget;
- if (m_wxwindow) connect_widget = m_wxwindow;
+ GtkWidget *connect_widget = GetConnectWidget();
if (connect_widget)
{
if (GTK_WIDGET_CAN_FOCUS(connect_widget) && !GTK_WIDGET_HAS_FOCUS (connect_widget) )
rect->width,
rect->height );
else
- Clear();
+ Clear();
};
if (!rect)
{
GetEventHandler()->ProcessEvent(event);
};
+static void SetInvokingWindow( wxMenu *menu, wxWindow *win )
+{
+ menu->SetInvokingWindow( win );
+ wxNode *node = menu->m_items.First();
+ while (node)
+ {
+ wxMenuItem *menuitem = (wxMenuItem*)node->Data();
+ if (menuitem->IsSubMenu())
+ SetInvokingWindow( menuitem->GetSubMenu(), win );
+ node = node->Next();
+ };
+};
+
+bool wxWindow::PopupMenu( wxMenu *menu, int WXUNUSED(x), int WXUNUSED(y) )
+{
+ SetInvokingWindow( menu, this );
+ gtk_menu_popup( GTK_MENU(menu->m_menu), NULL, NULL, NULL, NULL, 0, 0 );
+ return TRUE;
+}
+
void wxWindow::SetDropTarget( wxDropTarget *dropTarget )
{
- GtkWidget *dnd_widget = GetDropTargetWidget();
+ GtkWidget *dnd_widget = GetConnectWidget();
if (m_pDropTarget)
{
return m_pDropTarget;
};
-GtkWidget* wxWindow::GetDropTargetWidget(void)
+GtkWidget* wxWindow::GetConnectWidget(void)
{
GtkWidget *connect_widget = m_widget;
if (m_wxwindow) connect_widget = m_wxwindow;
void wxWindow::CaptureMouse(void)
{
- GtkWidget *connect_widget = m_widget;
- if (m_wxwindow) connect_widget = m_wxwindow;
+ GtkWidget *connect_widget = GetConnectWidget();
gtk_grab_add( connect_widget );
gdk_pointer_grab ( connect_widget->window, FALSE,
(GdkEventMask)
void wxWindow::ReleaseMouse(void)
{
- GtkWidget *connect_widget = m_widget;
- if (m_wxwindow) connect_widget = m_wxwindow;
+ GtkWidget *connect_widget = GetConnectWidget();
gtk_grab_remove( connect_widget );
gdk_pointer_ungrab ( GDK_CURRENT_TIME );
};