can find in m_widget (defined in wxWindow)
When the class has a client area for drawing into and for containing children
- it has to handle the client area widget (of the type GtkMyFixed, defined in
+ it has to handle the client area widget (of the type GtkPizza, defined in
win_gtk.c), but there could be any number of widgets, handled by a class
The common rule for all windows is only, that the widget that interacts with
the rest of GTK must be referenced in m_widget and all other widgets must be
children of this widget on the GTK level. The top-most widget, which also
represents the client area, must be in the m_wxwindow field and must be of
- the type GtkMyFixed.
+ the type GtkPizza.
As I said, the window classes that display a GTK native widget only have
one widget, so in the case of e.g. the wxButton class m_widget holds a
pointer to a GtkButton widget. But windows with client areas (for drawing
and children) have a m_widget field that is a pointer to a GtkScrolled-
- Window and a m_wxwindow field that is pointer to a GtkMyFixed and this
+ Window and a m_wxwindow field that is pointer to a GtkPizza and this
one is (in the GTK sense) a child of the GtkScrolledWindow.
If the m_wxwindow field is set, then all input to this widget is inter-
clicking on a scrollbar belonging to scrolled window will inevitably move
the window. In wxWindows, the scrollbar will only emit an event, send this
to (normally) a wxScrolledWindow and that class will call ScrollWindow()
- which actually moves the window and its subchildren. Note that GtkMyFixed
+ which actually moves the window and its subchildren. Note that GtkPizza
memorizes how much it has been scrolled but that wxWindows forgets this
so that the two coordinates systems have to be kept in synch. This is done
- in various places using the myfixed->xoffset and myfixed->yoffset values.
+ in various places using the pizza->xoffset and pizza->yoffset values.
III)
// local code (see below)
//-----------------------------------------------------------------------------
-#if (GTK_MINOR_VERSION > 0)
-
static void draw_frame( GtkWidget *widget, wxWindow *win )
{
if (!win->m_hasVMT)
if (win->HasFlag(wxSIMPLE_BORDER))
{
GdkGC *gc;
- gc = gdk_gc_new( widget->window );
+ gc = gdk_gc_new( widget->window );
gdk_gc_set_foreground( gc, &widget->style->black );
gdk_draw_rectangle( widget->window, gc, FALSE,
dx, dy,
draw_frame( widget, win );
}
-#endif // GTK_MINOR_VERSION > 0
-
//-----------------------------------------------------------------------------
-// key event conversion routines
+// key code mapping routines
//-----------------------------------------------------------------------------
-#if (GTK_MINOR_VERSION == 0)
-/* these functions are copied verbatim from GTK 1.2 */
-static void
-gdkx_XConvertCase (KeySym symbol,
- KeySym *lower,
- KeySym *upper)
-{
- register KeySym sym = symbol;
-
- g_return_if_fail (lower != NULL);
- g_return_if_fail (upper != NULL);
-
- *lower = sym;
- *upper = sym;
-
- switch (sym >> 8)
- {
-#if defined (GDK_A) && defined (GDK_Ooblique)
- case 0: /* Latin 1 */
- if ((sym >= GDK_A) && (sym <= GDK_Z))
- *lower += (GDK_a - GDK_A);
- else if ((sym >= GDK_a) && (sym <= GDK_z))
- *upper -= (GDK_a - GDK_A);
- else if ((sym >= GDK_Agrave) && (sym <= GDK_Odiaeresis))
- *lower += (GDK_agrave - GDK_Agrave);
- else if ((sym >= GDK_agrave) && (sym <= GDK_odiaeresis))
- *upper -= (GDK_agrave - GDK_Agrave);
- else if ((sym >= GDK_Ooblique) && (sym <= GDK_Thorn))
- *lower += (GDK_oslash - GDK_Ooblique);
- else if ((sym >= GDK_oslash) && (sym <= GDK_thorn))
- *upper -= (GDK_oslash - GDK_Ooblique);
- break;
-#endif /* LATIN1 */
-
-#if defined (GDK_Aogonek) && defined (GDK_tcedilla)
- case 1: /* Latin 2 */
- /* Assume the KeySym is a legal value (ignore discontinuities) */
- if (sym == GDK_Aogonek)
- *lower = GDK_aogonek;
- else if (sym >= GDK_Lstroke && sym <= GDK_Sacute)
- *lower += (GDK_lstroke - GDK_Lstroke);
- else if (sym >= GDK_Scaron && sym <= GDK_Zacute)
- *lower += (GDK_scaron - GDK_Scaron);
- else if (sym >= GDK_Zcaron && sym <= GDK_Zabovedot)
- *lower += (GDK_zcaron - GDK_Zcaron);
- else if (sym == GDK_aogonek)
- *upper = GDK_Aogonek;
- else if (sym >= GDK_lstroke && sym <= GDK_sacute)
- *upper -= (GDK_lstroke - GDK_Lstroke);
- else if (sym >= GDK_scaron && sym <= GDK_zacute)
- *upper -= (GDK_scaron - GDK_Scaron);
- else if (sym >= GDK_zcaron && sym <= GDK_zabovedot)
- *upper -= (GDK_zcaron - GDK_Zcaron);
- else if (sym >= GDK_Racute && sym <= GDK_Tcedilla)
- *lower += (GDK_racute - GDK_Racute);
- else if (sym >= GDK_racute && sym <= GDK_tcedilla)
- *upper -= (GDK_racute - GDK_Racute);
- break;
-#endif /* LATIN2 */
-
-#if defined (GDK_Hstroke) && defined (GDK_Cabovedot)
- case 2: /* Latin 3 */
- /* Assume the KeySym is a legal value (ignore discontinuities) */
- if (sym >= GDK_Hstroke && sym <= GDK_Hcircumflex)
- *lower += (GDK_hstroke - GDK_Hstroke);
- else if (sym >= GDK_Gbreve && sym <= GDK_Jcircumflex)
- *lower += (GDK_gbreve - GDK_Gbreve);
- else if (sym >= GDK_hstroke && sym <= GDK_hcircumflex)
- *upper -= (GDK_hstroke - GDK_Hstroke);
- else if (sym >= GDK_gbreve && sym <= GDK_jcircumflex)
- *upper -= (GDK_gbreve - GDK_Gbreve);
- else if (sym >= GDK_Cabovedot && sym <= GDK_Scircumflex)
- *lower += (GDK_cabovedot - GDK_Cabovedot);
- else if (sym >= GDK_cabovedot && sym <= GDK_scircumflex)
- *upper -= (GDK_cabovedot - GDK_Cabovedot);
- break;
-#endif /* LATIN3 */
-
-#if defined (GDK_Rcedilla) && defined (GDK_Amacron)
- case 3: /* Latin 4 */
- /* Assume the KeySym is a legal value (ignore discontinuities) */
- if (sym >= GDK_Rcedilla && sym <= GDK_Tslash)
- *lower += (GDK_rcedilla - GDK_Rcedilla);
- else if (sym >= GDK_rcedilla && sym <= GDK_tslash)
- *upper -= (GDK_rcedilla - GDK_Rcedilla);
- else if (sym == GDK_ENG)
- *lower = GDK_eng;
- else if (sym == GDK_eng)
- *upper = GDK_ENG;
- else if (sym >= GDK_Amacron && sym <= GDK_Umacron)
- *lower += (GDK_amacron - GDK_Amacron);
- else if (sym >= GDK_amacron && sym <= GDK_umacron)
- *upper -= (GDK_amacron - GDK_Amacron);
- break;
-#endif /* LATIN4 */
-
-#if defined (GDK_Serbian_DJE) && defined (GDK_Cyrillic_yu)
- case 6: /* Cyrillic */
- /* Assume the KeySym is a legal value (ignore discontinuities) */
- if (sym >= GDK_Serbian_DJE && sym <= GDK_Serbian_DZE)
- *lower -= (GDK_Serbian_DJE - GDK_Serbian_dje);
- else if (sym >= GDK_Serbian_dje && sym <= GDK_Serbian_dze)
- *upper += (GDK_Serbian_DJE - GDK_Serbian_dje);
- else if (sym >= GDK_Cyrillic_YU && sym <= GDK_Cyrillic_HARDSIGN)
- *lower -= (GDK_Cyrillic_YU - GDK_Cyrillic_yu);
- else if (sym >= GDK_Cyrillic_yu && sym <= GDK_Cyrillic_hardsign)
- *upper += (GDK_Cyrillic_YU - GDK_Cyrillic_yu);
- break;
-#endif /* CYRILLIC */
-
-#if defined (GDK_Greek_ALPHAaccent) && defined (GDK_Greek_finalsmallsigma)
- case 7: /* Greek */
- /* Assume the KeySym is a legal value (ignore discontinuities) */
- if (sym >= GDK_Greek_ALPHAaccent && sym <= GDK_Greek_OMEGAaccent)
- *lower += (GDK_Greek_alphaaccent - GDK_Greek_ALPHAaccent);
- else if (sym >= GDK_Greek_alphaaccent && sym <= GDK_Greek_omegaaccent &&
- sym != GDK_Greek_iotaaccentdieresis &&
- sym != GDK_Greek_upsilonaccentdieresis)
- *upper -= (GDK_Greek_alphaaccent - GDK_Greek_ALPHAaccent);
- else if (sym >= GDK_Greek_ALPHA && sym <= GDK_Greek_OMEGA)
- *lower += (GDK_Greek_alpha - GDK_Greek_ALPHA);
- else if (sym >= GDK_Greek_alpha && sym <= GDK_Greek_omega &&
- sym != GDK_Greek_finalsmallsigma)
- *upper -= (GDK_Greek_alpha - GDK_Greek_ALPHA);
- break;
-#endif /* GREEK */
- }
-}
-
-static guint
-gdk_keyval_to_upper (guint keyval)
-{
- if (keyval)
- {
- KeySym lower_val = 0;
- KeySym upper_val = 0;
-
- gdkx_XConvertCase (keyval, &lower_val, &upper_val);
- return upper_val;
- }
- return 0;
-}
-#endif
-
static long map_to_unmodified_wx_keysym( KeySym keysym )
{
guint key_code = 0;
{
if (keysym <= 0xFF)
{
- guint upper = gdk_keyval_to_upper( keysym );
+ guint upper = gdk_keyval_to_upper( (guint)keysym );
keysym = (upper != 0 ? upper : keysym ); /* to be MSW compatible */
- key_code = keysym;
+ key_code = (guint)keysym;
}
}
}
{
if (keysym <= 0xFF)
{
- key_code = keysym;
+ key_code = (guint)keysym;
}
}
}
// "draw" of m_wxwindow
//-----------------------------------------------------------------------------
-static void gtk_window_draw_callback( GtkWidget *widget, GdkRectangle *rect, wxWindow *win )
+static void gtk_window_draw_callback( GtkWidget *WXUNUSED(widget),
+ GdkRectangle *rect, wxWindow *win )
{
if (g_isIdle)
wxapp_install_idle_handler();
(int)rect->width,
(int)rect->height );
*/
-
+
wxEraseEvent eevent( win->GetId() );
eevent.SetEventObject( win );
win->GetEventHandler()->ProcessEvent(eevent);
ret = ancestor->GetEventHandler()->ProcessEvent( command_event );
break;
}
+ if (ancestor->m_isFrame)
+ break;
ancestor = ancestor->GetParent();
}
}
/* win is a control: tab can be propagated up */
if ( (!ret) &&
((gdk_event->keyval == GDK_Tab) || (gdk_event->keyval == GDK_ISO_Left_Tab)) &&
- (win->HasFlag(wxTE_PROCESS_TAB) == 0))
+ (!win->HasFlag(wxTE_PROCESS_TAB)) &&
+ (win->GetParent()) &&
+ (win->GetParent()->HasFlag( wxTAB_TRAVERSAL)) )
{
wxNavigationKeyEvent new_event;
+ new_event.SetEventObject( win );
/* GDK reports GDK_ISO_Left_Tab for SHIFT-TAB */
new_event.SetDirection( (gdk_event->keyval == GDK_Tab) );
/* CTRL-TAB changes the (parent) window, i.e. switch notebook page */
}
#if (GTK_MINOR_VERSION > 0)
- /* pressing F10 will activate the menu bar of the top frame */
+ /* Pressing F10 will activate the menu bar of the top frame. */
+ /* Doesn't work. */
/*
if ( (!ret) &&
(gdk_event->keyval == GDK_F10) )
}
}
-/*
- wxPrintf( wxT("2) OnButtonPress from ") );
- if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
- wxPrintf( win->GetClassInfo()->GetClassName() );
- wxPrintf( wxT(".\n") );
-*/
-
wxEventType event_type = wxEVT_LEFT_DOWN;
if (gdk_event->button == 1)
if (!g_captureWindow)
{
+ wxCoord x = event.m_x;
+ wxCoord y = event.m_y;
+ if (win->m_wxwindow)
+ {
+ GtkPizza *pizza = GTK_PIZZA(win->m_wxwindow);
+ x += pizza->xoffset;
+ y += pizza->yoffset;
+ }
+
wxNode *node = win->GetChildren().First();
while (node)
{
wxWindow *child = (wxWindow*)node->Data();
+
+ node = node->Next();
+ if (!child->IsShown())
+ continue;
if (child->m_isStaticBox)
{
// wxStaticBox is transparent in the box itself
- int x = event.m_x;
- int y = event.m_y;
int xx1 = child->m_x;
int yy1 = child->m_y;
int xx2 = child->m_x + child->m_width;
else
{
if ((child->m_wxwindow == (GtkWidget*) NULL) &&
- (child->m_x <= event.m_x) &&
- (child->m_y <= event.m_y) &&
- (child->m_x+child->m_width >= event.m_x) &&
- (child->m_y+child->m_height >= event.m_y))
+ (child->m_x <= x) &&
+ (child->m_y <= y) &&
+ (child->m_x+child->m_width >= x) &&
+ (child->m_y+child->m_height >= y))
{
win = child;
event.m_x -= child->m_x;
break;
}
}
- node = node->Next();
}
}
gs_timeLastClick = gdk_event->time;
+/*
+ wxPrintf( wxT("2) OnButtonPress from ") );
+ if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
+ wxPrintf( win->GetClassInfo()->GetClassName() );
+ wxPrintf( wxT(".\n") );
+*/
+
if (win->GetEventHandler()->ProcessEvent( event ))
{
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "button_press_event" );
if (!g_captureWindow)
{
+ wxCoord x = event.m_x;
+ wxCoord y = event.m_y;
+ if (win->m_wxwindow)
+ {
+ GtkPizza *pizza = GTK_PIZZA(win->m_wxwindow);
+ x += pizza->xoffset;
+ y += pizza->yoffset;
+ }
+
wxNode *node = win->GetChildren().First();
while (node)
{
wxWindow *child = (wxWindow*)node->Data();
+ node = node->Next();
+ if (!child->IsShown())
+ continue;
+
if (child->m_isStaticBox)
{
// wxStaticBox is transparent in the box itself
- int x = event.m_x;
- int y = event.m_y;
int xx1 = child->m_x;
int yy1 = child->m_y;
int xx2 = child->m_x + child->m_width;
else
{
if ((child->m_wxwindow == (GtkWidget*) NULL) &&
- (child->m_x <= event.m_x) &&
- (child->m_y <= event.m_y) &&
- (child->m_x+child->m_width >= event.m_x) &&
- (child->m_y+child->m_height >= event.m_y))
+ (child->m_x <= x) &&
+ (child->m_y <= y) &&
+ (child->m_x+child->m_width >= x) &&
+ (child->m_y+child->m_height >= y))
{
win = child;
event.m_x -= child->m_x;
break;
}
}
- node = node->Next();
}
}
if (!g_captureWindow)
{
+ wxCoord x = event.m_x;
+ wxCoord y = event.m_y;
+ if (win->m_wxwindow)
+ {
+ GtkPizza *pizza = GTK_PIZZA(win->m_wxwindow);
+ x += pizza->xoffset;
+ y += pizza->yoffset;
+ }
+
wxNode *node = win->GetChildren().First();
while (node)
{
wxWindow *child = (wxWindow*)node->Data();
+ node = node->Next();
+ if (!child->IsShown())
+ continue;
+
if (child->m_isStaticBox)
{
// wxStaticBox is transparent in the box itself
- int x = event.m_x;
- int y = event.m_y;
int xx1 = child->m_x;
int yy1 = child->m_y;
int xx2 = child->m_x + child->m_width;
else
{
if ((child->m_wxwindow == (GtkWidget*) NULL) &&
- (child->m_x <= event.m_x) &&
- (child->m_y <= event.m_y) &&
- (child->m_x+child->m_width >= event.m_x) &&
- (child->m_y+child->m_height >= event.m_y))
+ (child->m_x <= x) &&
+ (child->m_y <= y) &&
+ (child->m_x+child->m_width >= x) &&
+ (child->m_y+child->m_height >= y))
{
win = child;
event.m_x -= child->m_x;
break;
}
}
- node = node->Next();
}
}
g_focusWindow = win;
- if (win->m_wxwindow)
- {
- if (GTK_WIDGET_CAN_FOCUS(win->m_wxwindow))
- {
- GTK_WIDGET_SET_FLAGS (win->m_wxwindow, GTK_HAS_FOCUS);
-/*
- printf( "SetFocus flag from " );
- if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
- printf( win->GetClassInfo()->GetClassName() );
- printf( ".\n" );
-*/
- }
- }
-
-
/*
printf( "OnSetFocus from " );
if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
printf( ".\n" );
*/
+ wxPanel *panel = wxDynamicCast(win->GetParent(), wxPanel);
+ if (panel)
+ {
+ panel->SetLastFocus(win);
+ }
+
wxFocusEvent event( wxEVT_SET_FOCUS, win->GetId() );
event.SetEventObject( win );
if (!win->m_hasVMT) return FALSE;
if (g_blockEventsOnDrag) return FALSE;
- if (win->m_wxwindow)
- {
- if (GTK_WIDGET_CAN_FOCUS(win->m_wxwindow))
- GTK_WIDGET_UNSET_FLAGS (win->m_wxwindow, GTK_HAS_FOCUS);
- }
-
/*
printf( "OnKillFocus from " );
if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
{
/* the window might have been scrolled already, do we
have to adapt the position */
- GtkMyFixed *myfixed = GTK_MYFIXED(parent->m_wxwindow);
- child->m_x += myfixed->xoffset;
- child->m_y += myfixed->yoffset;
+ GtkPizza *pizza = GTK_PIZZA(parent->m_wxwindow);
+ child->m_x += pizza->xoffset;
+ child->m_y += pizza->yoffset;
- gtk_myfixed_put( GTK_MYFIXED(parent->m_wxwindow),
+ gtk_pizza_put( GTK_PIZZA(parent->m_wxwindow),
GTK_WIDGET(child->m_widget),
child->m_x,
child->m_y,
child->m_width,
child->m_height );
-
- if (parent->HasFlag(wxTAB_TRAVERSAL))
- {
- /* we now allow a window to get the focus as long as it
- doesn't have any children. */
- GTK_WIDGET_UNSET_FLAGS( parent->m_wxwindow, GTK_CAN_FOCUS );
- }
}
//-----------------------------------------------------------------------------
!CreateBase( parent, id, pos, size, style, wxDefaultValidator, name ))
{
wxFAIL_MSG( wxT("wxWindow creation failed") );
- return FALSE;
+ return FALSE;
}
m_insertCallback = wxInsertChildInWindow;
m_hAdjust = gtk_range_get_adjustment( GTK_RANGE(scrolledWindow->hscrollbar) );
m_vAdjust = gtk_range_get_adjustment( GTK_RANGE(scrolledWindow->vscrollbar) );
- m_wxwindow = gtk_myfixed_new();
+ m_wxwindow = gtk_pizza_new();
#ifdef __WXDEBUG__
debug_focus_in( m_wxwindow, wxT("wxWindow::m_wxwindow"), name );
gtk_container_add( GTK_CONTAINER(m_widget), m_wxwindow );
#if (GTK_MINOR_VERSION > 0)
- GtkMyFixed *myfixed = GTK_MYFIXED(m_wxwindow);
+ GtkPizza *pizza = GTK_PIZZA(m_wxwindow);
if (HasFlag(wxRAISED_BORDER))
{
- gtk_myfixed_set_shadow_type( myfixed, GTK_MYSHADOW_OUT );
+ gtk_pizza_set_shadow_type( pizza, GTK_MYSHADOW_OUT );
}
else if (HasFlag(wxSUNKEN_BORDER))
{
- gtk_myfixed_set_shadow_type( myfixed, GTK_MYSHADOW_IN );
+ gtk_pizza_set_shadow_type( pizza, GTK_MYSHADOW_IN );
}
else if (HasFlag(wxSIMPLE_BORDER))
{
- gtk_myfixed_set_shadow_type( myfixed, GTK_MYSHADOW_THIN );
+ gtk_pizza_set_shadow_type( pizza, GTK_MYSHADOW_THIN );
}
else
{
- gtk_myfixed_set_shadow_type( myfixed, GTK_MYSHADOW_NONE );
+ gtk_pizza_set_shadow_type( pizza, GTK_MYSHADOW_NONE );
}
#else // GTK_MINOR_VERSION == 0
GtkViewport *viewport = GTK_VIEWPORT(scrolledWindow->viewport);
}
#endif // GTK_MINOR_VERSION
- if (HasFlag(wxTAB_TRAVERSAL))
- {
- /* we now allow a window to get the focus as long as it
- doesn't have any children. */
- GTK_WIDGET_SET_FLAGS( m_wxwindow, GTK_CAN_FOCUS );
- m_acceptsFocus = FALSE;
- }
- else
- {
- GTK_WIDGET_SET_FLAGS( m_wxwindow, GTK_CAN_FOCUS );
- m_acceptsFocus = TRUE;
- }
+ GTK_WIDGET_SET_FLAGS( m_wxwindow, GTK_CAN_FOCUS );
+ m_acceptsFocus = TRUE;
#if (GTK_MINOR_VERSION == 0)
// shut the viewport up
if (m_wxwindow)
{
if (!m_noExpose)
- {
+ {
/* these get reported to wxWindows -> wxPaintEvent */
gtk_signal_connect( GTK_OBJECT(m_wxwindow), "expose_event",
GTK_SIGNAL_FUNC(gtk_window_expose_callback), (gpointer)this );
gtk_signal_connect( GTK_OBJECT(m_wxwindow), "draw",
GTK_SIGNAL_FUNC(gtk_window_draw_callback), (gpointer)this );
- }
-
+ }
+
#if (GTK_MINOR_VERSION > 0)
/* these are called when the "sunken" or "raised" borders are drawn */
gtk_signal_connect( GTK_OBJECT(m_widget), "expose_event",
}
else
{
- GtkMyFixed *myfixed = GTK_MYFIXED(m_parent->m_wxwindow);
-
+ GtkPizza *pizza = GTK_PIZZA(m_parent->m_wxwindow);
+
if ((sizeFlags & wxSIZE_ALLOW_MINUS_ONE) == 0)
{
- if (x != -1) m_x = x + myfixed->xoffset;
- if (y != -1) m_y = y + myfixed->yoffset;
+ if (x != -1) m_x = x + pizza->xoffset;
+ if (y != -1) m_y = y + pizza->yoffset;
if (width != -1) m_width = width;
if (height != -1) m_height = height;
}
else
{
- m_x = x + myfixed->xoffset;
- m_y = y + myfixed->yoffset;
+ m_x = x + pizza->xoffset;
+ m_y = y + pizza->yoffset;
m_width = width;
m_height = height;
}
bottom_border = 5;
}
- gtk_myfixed_set_size( GTK_MYFIXED(m_parent->m_wxwindow),
+ gtk_pizza_set_size( GTK_PIZZA(m_parent->m_wxwindow),
m_widget,
m_x-border,
m_y-border,
if (cursor.Ok())
{
/* I now set the cursor anew in every OnInternalIdle call
- as setting the cursor in a parent window also effects the
- windows above so that checking for the current cursor is
- not possible. */
-
+ as setting the cursor in a parent window also effects the
+ windows above so that checking for the current cursor is
+ not possible. */
+
if (m_wxwindow)
{
- GdkWindow *window = GTK_MYFIXED(m_wxwindow)->bin_window;
+ GdkWindow *window = GTK_PIZZA(m_wxwindow)->bin_window;
if (window)
gdk_window_set_cursor( window, cursor.GetCursor() );
int dy = 0;
if (m_parent && m_parent->m_wxwindow)
{
- GtkMyFixed *myfixed = GTK_MYFIXED(m_parent->m_wxwindow);
- dx = myfixed->xoffset;
- dy = myfixed->yoffset;
+ GtkPizza *pizza = GTK_PIZZA(m_parent->m_wxwindow);
+ dx = pizza->xoffset;
+ dy = pizza->yoffset;
}
if (x) (*x) = m_x - dx;
GdkWindow *source = (GdkWindow *) NULL;
if (m_wxwindow)
- source = GTK_MYFIXED(m_wxwindow)->bin_window;
+ source = GTK_PIZZA(m_wxwindow)->bin_window;
else
source = m_widget->window;
GdkWindow *source = (GdkWindow *) NULL;
if (m_wxwindow)
- source = GTK_MYFIXED(m_wxwindow)->bin_window;
+ source = GTK_PIZZA(m_wxwindow)->bin_window;
else
source = m_widget->window;
{
wxCHECK_RET( (m_widget != NULL), wxT("invalid window") );
- GtkWidget *connect_widget = GetConnectWidget();
- if (connect_widget)
+ if (m_wxwindow)
{
- if (GTK_WIDGET_CAN_FOCUS(connect_widget) /*&& !GTK_WIDGET_HAS_FOCUS (connect_widget)*/ )
+ if (!GTK_WIDGET_HAS_FOCUS (m_wxwindow))
+ gtk_widget_grab_focus (m_wxwindow);
+ return;
+ }
+
+ if (m_widget)
+ {
+ if (GTK_WIDGET_CAN_FOCUS(m_widget) && !GTK_WIDGET_HAS_FOCUS (m_widget) )
{
- gtk_widget_grab_focus (connect_widget);
+ gtk_widget_grab_focus (m_widget);
}
- else if (GTK_IS_CONTAINER(connect_widget))
+ else if (GTK_IS_CONTAINER(m_widget))
{
- gtk_container_focus( GTK_CONTAINER(connect_widget), GTK_DIR_TAB_FORWARD );
+ gtk_container_focus( GTK_CONTAINER(m_widget), GTK_DIR_TAB_FORWARD );
}
else
{
+ // ?
}
}
}
GdkWindow *window = (GdkWindow*) NULL;
if (m_wxwindow)
- window = GTK_MYFIXED(m_wxwindow)->bin_window;
+ window = GTK_PIZZA(m_wxwindow)->bin_window;
else
window = GetConnectWidget()->window;
-
+
if (window)
gdk_window_warp_pointer( window, x, y );
}
{
if (rect)
{
- gdk_window_clear_area( GTK_MYFIXED(m_wxwindow)->bin_window,
+ gdk_window_clear_area( GTK_PIZZA(m_wxwindow)->bin_window,
rect->x, rect->y,
rect->width, rect->height );
}
else
{
- gdk_window_clear( GTK_MYFIXED(m_wxwindow)->bin_window );
+ gdk_window_clear( GTK_PIZZA(m_wxwindow)->bin_window );
}
}
/* there is no GTK equivalent of "draw only, don't clear" so we
- invent our own in the GtkMyFixed widget */
+ invent our own in the GtkPizza widget */
if (!rect)
{
if (m_wxwindow)
- {
- GtkMyFixed *myfixed = GTK_MYFIXED(m_wxwindow);
- gboolean old_clear = myfixed->clear_on_draw;
- gtk_my_fixed_set_clear( myfixed, FALSE );
-
+ {
+ GtkPizza *pizza = GTK_PIZZA(m_wxwindow);
+ gboolean old_clear = pizza->clear_on_draw;
+ gtk_pizza_set_clear( pizza, FALSE );
+
gtk_widget_draw( m_wxwindow, (GdkRectangle*) NULL );
-
- gtk_my_fixed_set_clear( myfixed, old_clear );
- }
+
+ gtk_pizza_set_clear( pizza, old_clear );
+ }
else
gtk_widget_draw( m_widget, (GdkRectangle*) NULL );
}
gdk_rect.height = rect->height;
if (m_wxwindow)
- {
- GtkMyFixed *myfixed = GTK_MYFIXED(m_wxwindow);
- gboolean old_clear = myfixed->clear_on_draw;
- gtk_my_fixed_set_clear( myfixed, FALSE );
-
+ {
+ GtkPizza *pizza = GTK_PIZZA(m_wxwindow);
+ gboolean old_clear = pizza->clear_on_draw;
+ gtk_pizza_set_clear( pizza, FALSE );
+
gtk_widget_draw( m_wxwindow, &gdk_rect );
-
- gtk_my_fixed_set_clear( myfixed, old_clear );
- }
+
+ gtk_pizza_set_clear( pizza, old_clear );
+ }
else
gtk_widget_draw( m_widget, &gdk_rect );
}
GdkWindow *window = (GdkWindow*) NULL;
if (m_wxwindow)
- window = GTK_MYFIXED(m_wxwindow)->bin_window;
+ window = GTK_PIZZA(m_wxwindow)->bin_window;
else
window = GetConnectWidget()->window;
-
+
if (!window)
{
// indicate that a new style has been set
GdkWindow *window = (GdkWindow*) NULL;
if (m_wxwindow)
- window = GTK_MYFIXED(m_wxwindow)->bin_window;
+ window = GTK_PIZZA(m_wxwindow)->bin_window;
else
window = GetConnectWidget()->window;
-
+
if (!window)
{
// indicate that a new style has been set
static void SetInvokingWindow( wxMenu *menu, wxWindow *win )
{
menu->SetInvokingWindow( win );
- wxNode *node = menu->GetItems().First();
+ wxMenuItemList::Node *node = menu->GetMenuItems().GetFirst();
while (node)
{
- wxMenuItem *menuitem = (wxMenuItem*)node->Data();
+ wxMenuItem *menuitem = node->GetData();
if (menuitem->IsSubMenu())
{
SetInvokingWindow( menuitem->GetSubMenu(), win );
}
- node = node->Next();
+
+ node = node->GetNext();
}
}
0, // button used to activate it
gs_timeLastClick // the time of activation
);
-
+
while (is_waiting)
{
while (gtk_events_pending())
bool wxWindow::IsOwnGtkWindow( GdkWindow *window )
{
if (m_wxwindow)
- return (window == GTK_MYFIXED(m_wxwindow)->bin_window);
+ return (window == GTK_PIZZA(m_wxwindow)->bin_window);
return (window == m_widget->window);
}
GdkWindow *window = (GdkWindow*) NULL;
if (m_wxwindow)
- window = GTK_MYFIXED(m_wxwindow)->bin_window;
+ window = GTK_PIZZA(m_wxwindow)->bin_window;
else
window = GetConnectWidget()->window;
-
+
if (!window)
{
// indicate that a new style has been set
GdkWindow *window = (GdkWindow*) NULL;
if (m_wxwindow)
- window = GTK_MYFIXED(m_wxwindow)->bin_window;
+ window = GTK_PIZZA(m_wxwindow)->bin_window;
else
window = GetConnectWidget()->window;
-
+
if (!window) return;
gdk_pointer_grab( window, FALSE,
GDK_POINTER_MOTION_MASK),
(GdkWindow *) NULL,
m_cursor.GetCursor(),
- GDK_CURRENT_TIME );
+ (guint32)GDK_CURRENT_TIME );
g_captureWindow = this;
}
GdkWindow *window = (GdkWindow*) NULL;
if (m_wxwindow)
- window = GTK_MYFIXED(m_wxwindow)->bin_window;
+ window = GTK_PIZZA(m_wxwindow)->bin_window;
else
window = GetConnectWidget()->window;
-
- if (!window) return;
+
+ if (!window)
+ return;
- gdk_pointer_ungrab ( GDK_CURRENT_TIME );
+ gdk_pointer_ungrab ( (guint32)GDK_CURRENT_TIME );
g_captureWindow = (wxWindow*) NULL;
}
wxCHECK_RET( m_wxwindow != NULL, wxT("window needs client area for scrolling") );
- gtk_myfixed_scroll( GTK_MYFIXED(m_wxwindow), -dx, -dy );
+ gtk_pizza_scroll( GTK_PIZZA(m_wxwindow), -dx, -dy );
/*
if (!m_scrollGC)