m_bCamXYUpdate(true),
m_bChaseMouse(true),
- m_bSizePaint(false)
+ m_bSizePaint(true)
{
}
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);
// draw coordinate text if needed
if ( g_xywindow_globals_private.show_coordinates) {
glColor4fv(vector4_to_array(Vector4(g_xywindow_globals.color_gridtext, 1.0f)));
- // why does this not work on windows:
- // float offx = m_vOrigin[nDim2] + h - (1 + GlobalOpenGL().m_fontAscent) / m_fScale;
- float offx = m_vOrigin[nDim2] + h - 13 / m_fScale;
- float offy = m_vOrigin[nDim1] - w + 1 / m_fScale;
+ float offx = m_vOrigin[nDim2] + h - (4 + GlobalOpenGL().m_font->getPixelAscent()) / m_fScale;
+ float offy = m_vOrigin[nDim1] - w + 4 / m_fScale;
for (x = xb - fmod(xb, stepx); x <= xe ; x += stepx) {
glRasterPos2f (x, offx);
sprintf (text, "%g", x);
}
}
glBegin (GL_LINE_LOOP);
- glVertex2i (0, 0);
- glVertex2i (m_nWidth-1, 0);
- glVertex2i (m_nWidth-1, m_nHeight-1);
- glVertex2i (0, m_nHeight-1);
+ glVertex2f (0.5, 0.5);
+ glVertex2f (m_nWidth-0.5, 1);
+ glVertex2f (m_nWidth-0.5, m_nHeight-0.5);
+ glVertex2f (0.5, m_nHeight-0.5);
glEnd();
}
}
{
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()
{
- if (g_pParentWnd->CurrentStyle() == MainFrame::eSplit || g_pParentWnd->CurrentStyle() == MainFrame::eFloating)
+ if (g_pParentWnd->CurrentStyle() == MainFrame::eSplit)
{
// cannot do this in a split window
// do something else that the user may want here