]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - radiant/xywindow.cpp
fix a scanf warning
[xonotic/netradiant.git] / radiant / xywindow.cpp
index 857e7b998a43db68f4603de491161ef2d1d0f2bd..7352b38665e9cccb8c8f51aab7570fa4fe8ced6b 100644 (file)
@@ -775,6 +775,16 @@ gboolean xywnd_button_release(GtkWidget* widget, GdkEventButton* event, XYWnd* x
   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)))
@@ -884,6 +894,7 @@ XYWnd::XYWnd() :
 
   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);
@@ -1849,10 +1860,8 @@ void XYWnd::XY_DrawGrid(void) {
        // 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);
@@ -2580,9 +2589,12 @@ void XY_Split_Focus()
 {
   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()
@@ -2953,9 +2965,9 @@ void XYWindow_Construct()
   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)));