return FALSE;
}
+gboolean xywnd_focus_in(GtkWidget* widget, GdkEventFocus* event, XYWnd* xywnd)
+{
+ if(event->type == GDK_FOCUS_CHANGE)
+ {
+ if(event->in)
+ g_pParentWnd->SetActiveXY(xywnd);
+ }
+ return FALSE;
+}
+
void xywnd_motion(gdouble x, gdouble y, guint state, void* data)
{
if(reinterpret_cast<XYWnd*>(data)->chaseMouseMotion(static_cast<int>(x), static_cast<int>(y)))
g_signal_connect(G_OBJECT(m_gl_widget), "button_press_event", G_CALLBACK(xywnd_button_press), this);
g_signal_connect(G_OBJECT(m_gl_widget), "button_release_event", G_CALLBACK(xywnd_button_release), this);
+ g_signal_connect(G_OBJECT(m_gl_widget), "focus_in_event", G_CALLBACK(xywnd_focus_in), this);
g_signal_connect(G_OBJECT(m_gl_widget), "motion_notify_event", G_CALLBACK(DeferredMotion::gtk_motion), &m_deferred_motion);
g_signal_connect(G_OBJECT(m_gl_widget), "scroll_event", G_CALLBACK(xywnd_wheel_scroll), this);
{
Vector3 position;
GetFocusPosition(position);
- g_pParentWnd->GetXYWnd()->PositionView(position);
- g_pParentWnd->GetXZWnd()->PositionView(position);
- g_pParentWnd->GetYZWnd()->PositionView(position);
+ if(g_pParentWnd->GetXYWnd())
+ g_pParentWnd->GetXYWnd()->PositionView(position);
+ if(g_pParentWnd->GetXZWnd())
+ g_pParentWnd->GetXZWnd()->PositionView(position);
+ if(g_pParentWnd->GetYZWnd())
+ g_pParentWnd->GetYZWnd()->PositionView(position);
}
void XY_Focus()
GlobalCommands_insert("NextView", FreeCaller<XY_Next>(), Accelerator(GDK_Tab, (GdkModifierType)GDK_CONTROL_MASK));
GlobalCommands_insert("ZoomIn", FreeCaller<XY_ZoomIn>(), Accelerator(GDK_Delete));
GlobalCommands_insert("ZoomOut", FreeCaller<XY_ZoomOut>(), Accelerator(GDK_Insert));
- GlobalCommands_insert("ViewTop", FreeCaller<XY_Top>());
- GlobalCommands_insert("ViewSide", FreeCaller<XY_Side>());
- GlobalCommands_insert("ViewFront", FreeCaller<XY_Front>());
+ GlobalCommands_insert("ViewTop", FreeCaller<XY_Top>(), Accelerator(GDK_KP_Home));
+ GlobalCommands_insert("ViewSide", FreeCaller<XY_Side>(), Accelerator(GDK_KP_Page_Down));
+ GlobalCommands_insert("ViewFront", FreeCaller<XY_Front>(), Accelerator(GDK_KP_End));
GlobalCommands_insert("Zoom100", FreeCaller<XY_Zoom100>());
GlobalCommands_insert("CenterXYView", FreeCaller<XY_Focus>(), Accelerator(GDK_Tab, (GdkModifierType)(GDK_SHIFT_MASK|GDK_CONTROL_MASK)));