summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common/defines.h2
-rw-r--r--common/project.cpp29
-rw-r--r--common/project.h14
-rw-r--r--linux/main.cpp15
-rw-r--r--linux/system.cpp4
-rw-r--r--linux/system.h12
-rw-r--r--win/Cadview.cpp30
-rw-r--r--win/LeoCAD.dsp9
-rw-r--r--win/system.h5
9 files changed, 57 insertions, 63 deletions
diff --git a/common/defines.h b/common/defines.h
index 8db3d25..f08cb40 100644
--- a/common/defines.h
+++ b/common/defines.h
@@ -92,7 +92,7 @@ unsigned long SwapLONG(unsigned long x)
#define FLOATRGB(f) RGB(f[0]*255, f[1]*255, f[2]*255)
#define LC_CONNECTIONS 2 // Different piece connections
-#define LC_APP_VERSION 0.71f // Current version
+#define LC_APP_VERSION 0.72f // Current version
#define LC_STR_VERSION "LeoCAD 0.7 Project\0\0" // char[20]
#define LC_MAXCOLORS 28 // Number of colors supported
diff --git a/common/project.cpp b/common/project.cpp
index bd8e3a3..85ec7cb 100644
--- a/common/project.cpp
+++ b/common/project.cpp
@@ -5065,7 +5065,12 @@ void Project::HandleCommand(LC_COMMANDS id, unsigned long nParam)
{
if (m_pPieces == 0) break;
- bool bControl = IsKeyDown(KEY_CONTROL);
+ // HACK !!! HACK !!! HACK
+#ifdef LC_WINDOWS
+ bool bControl = (GetKeyState(KEY_CONTROL) < 0);
+#else
+ bool bControl = false;
+#endif
GLdouble modelMatrix[16], projMatrix[16];
float up[3], eye[3], target[3];
float bs[6] = { 10000, 10000, 10000, -10000, -10000, -10000 };
@@ -5718,12 +5723,12 @@ Texture* Project::FindTexture(char* name)
}
// Remeber to make 'name' uppercase.
-PieceInfo* Project::FindPieceInfo(char* name)
+PieceInfo* Project::FindPieceInfo (const char* name) const
{
PieceInfo* pInfo;
int i;
- for (i = m_nPieceCount, pInfo = m_pPieceIdx; i--; pInfo++)
+ for (i = 0, pInfo = m_pPieceIdx; i < m_nPieceCount; i++, pInfo++)
if (!strcmp (name, pInfo->m_strName))
return pInfo;
@@ -5732,7 +5737,7 @@ PieceInfo* Project::FindPieceInfo(char* name)
{
char* tmp = &m_pMovedReference[i*18+9];
- for (i = m_nPieceCount, pInfo = m_pPieceIdx; i--; pInfo++)
+ for (i = 0, pInfo = m_pPieceIdx; i < m_nPieceCount; i++, pInfo++)
if (!strcmp (tmp, pInfo->m_strName))
return pInfo;
@@ -6473,7 +6478,7 @@ bool Project::OnKeyDown(char nKey, bool bControl, bool bShift)
return ret;
}
-void Project::OnLeftButtonDown(int x, int y)
+void Project::OnLeftButtonDown(int x, int y, bool bControl, bool bShift)
{
GLdouble modelMatrix[16], projMatrix[16], point[3];
GLint viewport[4];
@@ -6511,7 +6516,7 @@ void Project::OnLeftButtonDown(int x, int y)
if (m_nCurAction == LC_ACTION_SELECT)
{
- SelectAndFocusNone(IsKeyDown(KEY_CONTROL));
+ SelectAndFocusNone(bControl);
if (pBox != NULL)
switch (pBox->GetOwnerType())
@@ -6749,7 +6754,7 @@ void Project::OnLeftButtonDown(int x, int y)
}
}
-void Project::OnLeftButtonDoubleClick(int x, int y)
+void Project::OnLeftButtonDoubleClick(int x, int y, bool bControl, bool bShift)
{
GLdouble modelMatrix[16], projMatrix[16], point[3];
GLint viewport[4];
@@ -6773,7 +6778,7 @@ void Project::OnLeftButtonDoubleClick(int x, int y)
// if (m_nCurAction == LC_ACTION_SELECT)
{
- SelectAndFocusNone(IsKeyDown(KEY_CONTROL));
+ SelectAndFocusNone(bControl);
if (pBox != NULL)
switch (pBox->GetOwnerType())
@@ -6820,12 +6825,12 @@ void Project::OnLeftButtonDoubleClick(int x, int y)
}
}
-void Project::OnLeftButtonUp(int x, int y)
+void Project::OnLeftButtonUp(int x, int y, bool bControl, bool bShift)
{
StopTracking(true);
}
-void Project::OnRightButtonDown(int x, int y)
+void Project::OnRightButtonDown(int x, int y, bool bControl, bool bShift)
{
GLdouble modelMatrix[16], projMatrix[16], point[3];
GLint viewport[4];
@@ -6894,14 +6899,14 @@ void Project::OnRightButtonDown(int x, int y)
}
}
-void Project::OnRightButtonUp(int x, int y)
+void Project::OnRightButtonUp(int x, int y, bool bControl, bool bShift)
{
if (!StopTracking(true) && !m_bTrackCancel)
SystemDoPopupMenu(1, -1, -1);
m_bTrackCancel = false;
}
-void Project::OnMouseMove(int x, int y)
+void Project::OnMouseMove(int x, int y, bool bControl, bool bShift)
{
// && m_nAction != ACTION_INSERT
if (m_nTracking == LC_TRACK_NONE)
diff --git a/common/project.h b/common/project.h
index ec8c3cc..181982c 100644
--- a/common/project.h
+++ b/common/project.h
@@ -91,7 +91,7 @@ public:
void Render(bool bToMemory);
void SetViewSize(int cx, int cy);
Texture* FindTexture(char* name);
- PieceInfo* FindPieceInfo(char* name);
+ PieceInfo* FindPieceInfo (const char* name) const;
void CheckAutoSave();
void GetFocusPosition(float* pos);
@@ -179,12 +179,12 @@ protected:
public:
// Call this functions from each OS
- void OnLeftButtonDown(int x, int y);
- void OnLeftButtonUp(int x, int y);
- void OnLeftButtonDoubleClick(int x, int y);
- void OnRightButtonDown(int x, int y);
- void OnRightButtonUp(int x, int y);
- void OnMouseMove(int x, int y);
+ void OnLeftButtonDown(int x, int y, bool bControl, bool bShift);
+ void OnLeftButtonUp(int x, int y, bool bControl, bool bShift);
+ void OnLeftButtonDoubleClick(int x, int y, bool bControl, bool bShift);
+ void OnRightButtonDown(int x, int y, bool bControl, bool bShift);
+ void OnRightButtonUp(int x, int y, bool bControl, bool bShift);
+ void OnMouseMove(int x, int y, bool bControl, bool bShift);
bool OnKeyDown(char nKey, bool bControl, bool bShift);
void SetAction(int nAction);
diff --git a/linux/main.cpp b/linux/main.cpp
index 5951d90..610f8a4 100644
--- a/linux/main.cpp
+++ b/linux/main.cpp
@@ -90,9 +90,11 @@ static gint button_press_event (GtkWidget *widget, GdkEventButton *event)
y = widget->allocation.height - (int)event->y - 1;
if (event->button == 1)
- project->OnLeftButtonDown(x, y);
+ project->OnLeftButtonDown(x, y, (event->state & GDK_CONTROL_MASK) != 0,
+ (event->state & GDK_SHIFT_MASK) != 0);
if (event->button == 3)
- project->OnRightButtonDown(x, y);
+ project->OnRightButtonDown(x, y, (event->state & GDK_CONTROL_MASK) != 0,
+ (event->state & GDK_SHIFT_MASK) != 0);
gtk_window_set_focus(GTK_WINDOW(main_window), drawing_area);
@@ -106,9 +108,11 @@ static gint button_release_event (GtkWidget *widget, GdkEventButton *event)
y = widget->allocation.height - (int)event->y - 1;
if (event->button == 1)
- project->OnLeftButtonUp(x, y);
+ project->OnLeftButtonUp(x, y, (event->state & GDK_CONTROL_MASK) != 0,
+ (event->state & GDK_SHIFT_MASK) != 0);
if (event->button == 3)
- project->OnRightButtonUp(x, y);
+ project->OnRightButtonUp(x, y, (event->state & GDK_CONTROL_MASK) != 0,
+ (event->state & GDK_SHIFT_MASK) != 0);
return TRUE;
}
@@ -130,7 +134,8 @@ static gint motion_notify_event (GtkWidget *widget, GdkEventMotion *event)
y = widget->allocation.height - (int)event->y - 1;
// if (state)
- project->OnMouseMove(x, y);
+ project->OnMouseMove(x, y, (event->state & GDK_CONTROL_MASK) != 0,
+ (event->state & GDK_SHIFT_MASK) != 0);
return TRUE;
}
diff --git a/linux/system.cpp b/linux/system.cpp
index 8849b5c..fb38be1 100644
--- a/linux/system.cpp
+++ b/linux/system.cpp
@@ -136,7 +136,9 @@ void SystemUpdateAction(int new_action, int old_action)
case LC_ACTION_SELECT: button = tool_toolbar.select;
{
x = 0; y = 2;
- if (IsKeyDown(KEY_CONTROL))
+ // TODO: FIX ME !!!
+ if (0)
+ // if (IsKeyDown(KEY_CONTROL))
xpm = cr_selm;
else
xpm = cr_sel;
diff --git a/linux/system.h b/linux/system.h
index 31c5251..3834453 100644
--- a/linux/system.h
+++ b/linux/system.h
@@ -91,16 +91,4 @@ inline long SystemGetTicks()
void SystemSwapBuffers();
-inline bool IsKeyDown(int key)
-{
- return false;//(GetKeyState(key) < 0);
-}
-
#endif // _SYSTEM_H_
-
-
-
-
-
-
-
diff --git a/win/Cadview.cpp b/win/Cadview.cpp
index 9a3f1cd..8d3349d 100644
--- a/win/Cadview.cpp
+++ b/win/Cadview.cpp
@@ -858,34 +858,40 @@ void CCADView::OnSize(UINT nType, int cx, int cy)
CView::OnSize(nType, cx, cy);
}
-void CCADView::OnMouseMove(UINT /*nFlags*/, CPoint point)
+void CCADView::OnMouseMove(UINT nFlags, CPoint point)
{
- project->OnMouseMove(point.x, m_szView.cy - point.y - 1);
+ project->OnMouseMove(point.x, m_szView.cy - point.y - 1,
+ (nFlags & MK_CONTROL) != 0, (nFlags & MK_SHIFT) != 0);
}
-void CCADView::OnLButtonUp(UINT /*nFlags*/, CPoint point)
+void CCADView::OnLButtonUp(UINT nFlags, CPoint point)
{
- project->OnLeftButtonUp(point.x, m_szView.cy - point.y - 1);
+ project->OnLeftButtonUp(point.x, m_szView.cy - point.y - 1,
+ (nFlags & MK_CONTROL) != 0, (nFlags & MK_SHIFT) != 0);
}
-void CCADView::OnLButtonDown(UINT /*nFlags*/, CPoint point)
+void CCADView::OnLButtonDown(UINT nFlags, CPoint point)
{
- project->OnLeftButtonDown(point.x, m_szView.cy - point.y - 1);
+ project->OnLeftButtonDown(point.x, m_szView.cy - point.y - 1,
+ (nFlags & MK_CONTROL) != 0, (nFlags & MK_SHIFT) != 0);
}
-void CCADView::OnLButtonDblClk(UINT /*nFlags*/, CPoint point)
+void CCADView::OnLButtonDblClk(UINT nFlags, CPoint point)
{
- project->OnLeftButtonDoubleClick(point.x, m_szView.cy - point.y - 1);
+ project->OnLeftButtonDoubleClick(point.x, m_szView.cy - point.y - 1,
+ (nFlags & MK_CONTROL) != 0, (nFlags & MK_SHIFT) != 0);
}
-void CCADView::OnRButtonDown(UINT /*nFlags*/, CPoint point)
+void CCADView::OnRButtonDown(UINT nFlags, CPoint point)
{
- project->OnRightButtonDown(point.x, m_szView.cy - point.y - 1);
+ project->OnRightButtonDown(point.x, m_szView.cy - point.y - 1,
+ (nFlags & MK_CONTROL) != 0, (nFlags & MK_SHIFT) != 0);
}
-void CCADView::OnRButtonUp(UINT /*nFlags*/, CPoint point)
+void CCADView::OnRButtonUp(UINT nFlags, CPoint point)
{
- project->OnRightButtonUp(point.x, m_szView.cy - point.y - 1);
+ project->OnRightButtonUp(point.x, m_szView.cy - point.y - 1,
+ (nFlags & MK_CONTROL) != 0, (nFlags & MK_SHIFT) != 0);
}
void CCADView::OnDropDown (NMHDR* pNotifyStruct, LRESULT* pResult)
diff --git a/win/LeoCAD.dsp b/win/LeoCAD.dsp
index f7140f2..5cb4d8d 100644
--- a/win/LeoCAD.dsp
+++ b/win/LeoCAD.dsp
@@ -68,7 +68,7 @@ LINK32=link.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /Yu"stdafx.h" /FD /c
-# ADD CPP /nologo /G6 /MTd /W3 /Gm /GX /Zi /Od /I "../common" /I "../win" /D "_DEBUG" /D "WIN32" /D "LC_WINDOWS" /Yu"stdafx.h" /FD /c
+# ADD CPP /nologo /G6 /MTd /W3 /Gm /Gi /GX /Zi /Od /I "../common" /I "../win" /D "_DEBUG" /D "WIN32" /D "LC_WINDOWS" /Yu"stdafx.h" /FD /c
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
# ADD BASE RSC /l 0x409 /d "_DEBUG"
@@ -207,13 +207,6 @@ InputPath=.\hlp\LeoCAD.hpj
# Begin Source File
SOURCE=.\Leocad.rc
-
-!IF "$(CFG)" == "LeoCAD - Win32 Release"
-
-!ELSEIF "$(CFG)" == "LeoCAD - Win32 Debug"
-
-!ENDIF
-
# End Source File
# Begin Source File
diff --git a/win/system.h b/win/system.h
index 4f83d19..a62d3c0 100644
--- a/win/system.h
+++ b/win/system.h
@@ -103,9 +103,4 @@ inline void SystemSwapBuffers()
SwapBuffers(wglGetCurrentDC());
}
-inline bool IsKeyDown(int key)
-{
- return (GetKeyState(key) < 0);
-}
-
#endif // _SYSTEM_H_