editor: move all client stuff to socket-class
Rename NetworkSocket to ClientSocket, and put the client-specific functionality in it.
This commit is contained in:
parent
b3825514b2
commit
9724884884
75
editor/clientsocket.cpp
Normal file
75
editor/clientsocket.cpp
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
#include "clientsocket.h"
|
||||||
|
#include "../sync/track.h"
|
||||||
|
|
||||||
|
#include <cassert>
|
||||||
|
|
||||||
|
void ClientSocket::sendSetKeyCommand(uint32_t track, const struct track_key &key)
|
||||||
|
{
|
||||||
|
if (!connected() ||
|
||||||
|
clientRemap.count(track) == 0)
|
||||||
|
return;
|
||||||
|
track = htonl(clientRemap[track]);
|
||||||
|
uint32_t row = htonl(key.row);
|
||||||
|
|
||||||
|
union {
|
||||||
|
float f;
|
||||||
|
uint32_t i;
|
||||||
|
} v;
|
||||||
|
v.f = key.value;
|
||||||
|
v.i = htonl(v.i);
|
||||||
|
|
||||||
|
assert(key.type < KEY_TYPE_COUNT);
|
||||||
|
|
||||||
|
unsigned char cmd = SET_KEY;
|
||||||
|
send((char *)&cmd, 1, 0);
|
||||||
|
send((char *)&track, sizeof(track), 0);
|
||||||
|
send((char *)&row, sizeof(row), 0);
|
||||||
|
send((char *)&v.i, sizeof(v.i), 0);
|
||||||
|
send((char *)&key.type, 1, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ClientSocket::sendDeleteKeyCommand(int track, int row)
|
||||||
|
{
|
||||||
|
if (!connected() ||
|
||||||
|
clientRemap.count(track) == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
track = htonl(int(clientRemap[track]));
|
||||||
|
row = htonl(row);
|
||||||
|
|
||||||
|
unsigned char cmd = DELETE_KEY;
|
||||||
|
send((char *)&cmd, 1, 0);
|
||||||
|
send((char *)&track, sizeof(int), 0);
|
||||||
|
send((char *)&row, sizeof(int), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ClientSocket::sendSetRowCommand(int row)
|
||||||
|
{
|
||||||
|
if (!connected())
|
||||||
|
return;
|
||||||
|
|
||||||
|
unsigned char cmd = SET_ROW;
|
||||||
|
row = htonl(row);
|
||||||
|
send((char *)&cmd, 1, 0);
|
||||||
|
send((char *)&row, sizeof(int), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ClientSocket::sendPauseCommand(bool pause)
|
||||||
|
{
|
||||||
|
if (!connected())
|
||||||
|
return;
|
||||||
|
|
||||||
|
unsigned char cmd = PAUSE, flag = pause;
|
||||||
|
send((char *)&cmd, 1, 0);
|
||||||
|
send((char *)&flag, 1, 0);
|
||||||
|
clientPaused = pause;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ClientSocket::sendSaveCommand()
|
||||||
|
{
|
||||||
|
if (!connected())
|
||||||
|
return;
|
||||||
|
|
||||||
|
unsigned char cmd = SAVE_TRACKS;
|
||||||
|
send((char *)&cmd, 1, 0);
|
||||||
|
}
|
||||||
62
editor/clientsocket.h
Normal file
62
editor/clientsocket.h
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
#include "../sync/base.h"
|
||||||
|
#include <map>
|
||||||
|
|
||||||
|
class ClientSocket {
|
||||||
|
public:
|
||||||
|
ClientSocket() : socket(INVALID_SOCKET) {}
|
||||||
|
explicit ClientSocket(SOCKET socket) : socket(socket), clientPaused(true) {}
|
||||||
|
|
||||||
|
bool connected() const
|
||||||
|
{
|
||||||
|
return INVALID_SOCKET != socket;
|
||||||
|
}
|
||||||
|
|
||||||
|
void disconnect()
|
||||||
|
{
|
||||||
|
closesocket(socket);
|
||||||
|
socket = INVALID_SOCKET;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool recv(char *buffer, size_t length, int flags)
|
||||||
|
{
|
||||||
|
if (!connected())
|
||||||
|
return false;
|
||||||
|
int ret = ::recv(socket, buffer, int(length), flags);
|
||||||
|
if (ret != int(length)) {
|
||||||
|
disconnect();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool send(const char *buffer, size_t length, int flags)
|
||||||
|
{
|
||||||
|
if (!connected())
|
||||||
|
return false;
|
||||||
|
int ret = ::send(socket, buffer, int(length), flags);
|
||||||
|
if (ret != int(length)) {
|
||||||
|
disconnect();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool pollRead()
|
||||||
|
{
|
||||||
|
if (!connected())
|
||||||
|
return false;
|
||||||
|
return !!socket_poll(socket);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sendSetKeyCommand(uint32_t track, const struct track_key &key);
|
||||||
|
void sendDeleteKeyCommand(int track, int row);
|
||||||
|
void sendSetRowCommand(int row);
|
||||||
|
void sendPauseCommand(bool pause);
|
||||||
|
void sendSaveCommand();
|
||||||
|
|
||||||
|
bool clientPaused;
|
||||||
|
std::map<size_t, size_t> clientRemap;
|
||||||
|
|
||||||
|
private:
|
||||||
|
SOCKET socket;
|
||||||
|
};
|
||||||
@ -269,7 +269,7 @@ bool fileSaveAs()
|
|||||||
|
|
||||||
if (GetSaveFileNameW(&ofn)) {
|
if (GetSaveFileNameW(&ofn)) {
|
||||||
if (document.save(temp)) {
|
if (document.save(temp)) {
|
||||||
document.sendSaveCommand();
|
document.clientSocket.sendSaveCommand();
|
||||||
setWindowFileName(temp);
|
setWindowFileName(temp);
|
||||||
fileName = temp;
|
fileName = temp;
|
||||||
|
|
||||||
@ -289,7 +289,7 @@ bool fileSave()
|
|||||||
return fileSaveAs();
|
return fileSaveAs();
|
||||||
|
|
||||||
if (!document.save(fileName.c_str())) {
|
if (!document.save(fileName.c_str())) {
|
||||||
document.sendSaveCommand();
|
document.clientSocket.sendSaveCommand();
|
||||||
error("Failed to save file");
|
error("Failed to save file");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -422,7 +422,7 @@ static LRESULT CALLBACK mainWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARA
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_FILE_REMOTEEXPORT:
|
case ID_FILE_REMOTEEXPORT:
|
||||||
document.sendSaveCommand();
|
document.clientSocket.sendSaveCommand();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_RECENTFILES_FILE1:
|
case ID_RECENTFILES_FILE1:
|
||||||
@ -562,7 +562,7 @@ SOCKET clientConnect(SOCKET serverSocket, sockaddr_in *host)
|
|||||||
}
|
}
|
||||||
|
|
||||||
size_t clientIndex;
|
size_t clientIndex;
|
||||||
void processCommand(NetworkSocket &sock)
|
void processCommand(ClientSocket &sock)
|
||||||
{
|
{
|
||||||
int strLen, serverIndex, newRow;
|
int strLen, serverIndex, newRow;
|
||||||
std::string trackName;
|
std::string trackName;
|
||||||
@ -589,12 +589,12 @@ void processCommand(NetworkSocket &sock)
|
|||||||
int(document.createTrack(trackName));
|
int(document.createTrack(trackName));
|
||||||
|
|
||||||
// setup remap
|
// setup remap
|
||||||
document.clientRemap[serverIndex] = clientIndex++;
|
document.clientSocket.clientRemap[serverIndex] = clientIndex++;
|
||||||
|
|
||||||
// send key-frames
|
// send key-frames
|
||||||
t = document.tracks[serverIndex];
|
t = document.tracks[serverIndex];
|
||||||
for (int i = 0; i < (int)t->num_keys; ++i)
|
for (int i = 0; i < (int)t->num_keys; ++i)
|
||||||
document.sendSetKeyCommand(int(serverIndex),
|
document.clientSocket.sendSetKeyCommand(int(serverIndex),
|
||||||
t->keys[i]);
|
t->keys[i]);
|
||||||
|
|
||||||
InvalidateRect(trackViewWin, NULL, FALSE);
|
InvalidateRect(trackViewWin, NULL, FALSE);
|
||||||
@ -697,29 +697,26 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/,
|
|||||||
char temp[256];
|
char temp[256];
|
||||||
snprintf(temp, 256, "Connected to %s", inet_ntoa(client.sin_addr));
|
snprintf(temp, 256, "Connected to %s", inet_ntoa(client.sin_addr));
|
||||||
SendMessage(statusBarWin, SB_SETTEXT, 0, (LPARAM)temp);
|
SendMessage(statusBarWin, SB_SETTEXT, 0, (LPARAM)temp);
|
||||||
document.clientSocket = NetworkSocket(clientSocket);
|
document.clientSocket = ClientSocket(clientSocket);
|
||||||
document.clientRemap.clear();
|
|
||||||
clientIndex = 0;
|
clientIndex = 0;
|
||||||
document.sendPauseCommand(true);
|
document.clientSocket.sendPauseCommand(true);
|
||||||
document.sendSetRowCommand(trackView->getEditRow());
|
document.clientSocket.sendSetRowCommand(trackView->getEditRow());
|
||||||
guiConnected = true;
|
guiConnected = true;
|
||||||
}
|
}
|
||||||
else SendMessage(statusBarWin, SB_SETTEXT, 0, (LPARAM)"Not Connected.");
|
else SendMessage(statusBarWin, SB_SETTEXT, 0, (LPARAM)"Not Connected.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (document.clientSocket.connected())
|
if (document.clientSocket.connected()) {
|
||||||
{
|
ClientSocket &clientSocket = document.clientSocket;
|
||||||
NetworkSocket &clientSocket = document.clientSocket;
|
|
||||||
|
|
||||||
// look for new commands
|
// look for new commands
|
||||||
while (clientSocket.pollRead())
|
while (clientSocket.pollRead())
|
||||||
processCommand(clientSocket);
|
processCommand(clientSocket);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!document.clientSocket.connected() && guiConnected)
|
if (!document.clientSocket.connected() && guiConnected) {
|
||||||
{
|
document.clientSocket.clientPaused = true;
|
||||||
document.clientPaused = true;
|
|
||||||
InvalidateRect(trackViewWin, NULL, FALSE);
|
InvalidateRect(trackViewWin, NULL, FALSE);
|
||||||
SendMessage(statusBarWin, SB_SETTEXT, 0, (LPARAM)"Not Connected.");
|
SendMessage(statusBarWin, SB_SETTEXT, 0, (LPARAM)"Not Connected.");
|
||||||
guiConnected = false;
|
guiConnected = false;
|
||||||
|
|||||||
@ -179,6 +179,10 @@
|
|||||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||||
>
|
>
|
||||||
<File
|
<File
|
||||||
|
RelativePath=".\clientsocket.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
RelativePath="..\sync\data.c"
|
RelativePath="..\sync\data.c"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
@ -209,6 +213,10 @@
|
|||||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||||
>
|
>
|
||||||
<File
|
<File
|
||||||
|
RelativePath=".\clientsocket.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
RelativePath="..\sync\data.h"
|
RelativePath="..\sync\data.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
@ -247,11 +255,11 @@
|
|||||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
||||||
>
|
>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\editor.rc"
|
RelativePath=".\appicon.ico"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\appicon.ico"
|
RelativePath=".\editor.rc"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
|||||||
@ -11,66 +11,15 @@ extern "C" {
|
|||||||
#include <stack>
|
#include <stack>
|
||||||
#include <list>
|
#include <list>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <map>
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
|
||||||
class NetworkSocket
|
#include "clientsocket.h"
|
||||||
{
|
|
||||||
public:
|
|
||||||
NetworkSocket() : socket(INVALID_SOCKET) {}
|
|
||||||
explicit NetworkSocket(SOCKET socket) : socket(socket) {}
|
|
||||||
|
|
||||||
bool connected() const
|
|
||||||
{
|
|
||||||
return INVALID_SOCKET != socket;
|
|
||||||
}
|
|
||||||
|
|
||||||
void disconnect()
|
|
||||||
{
|
|
||||||
closesocket(socket);
|
|
||||||
socket = INVALID_SOCKET;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool recv(char *buffer, size_t length, int flags)
|
|
||||||
{
|
|
||||||
if (!connected())
|
|
||||||
return false;
|
|
||||||
int ret = ::recv(socket, buffer, int(length), flags);
|
|
||||||
if (ret != int(length)) {
|
|
||||||
disconnect();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool send(const char *buffer, size_t length, int flags)
|
|
||||||
{
|
|
||||||
if (!connected())
|
|
||||||
return false;
|
|
||||||
int ret = ::send(socket, buffer, int(length), flags);
|
|
||||||
if (ret != int(length)) {
|
|
||||||
disconnect();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool pollRead()
|
|
||||||
{
|
|
||||||
if (!connected())
|
|
||||||
return false;
|
|
||||||
return !!socket_poll(socket);
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
SOCKET socket;
|
|
||||||
};
|
|
||||||
|
|
||||||
class SyncDocument : public sync_data
|
class SyncDocument : public sync_data
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SyncDocument() : clientPaused(true), rows(128), savePointDelta(0), savePointUnreachable(true)
|
SyncDocument() : rows(128), savePointDelta(0), savePointUnreachable(true)
|
||||||
{
|
{
|
||||||
this->tracks = NULL;
|
this->tracks = NULL;
|
||||||
this->num_tracks = 0;
|
this->num_tracks = 0;
|
||||||
@ -85,70 +34,6 @@ public:
|
|||||||
return index;
|
return index;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sendSetKeyCommand(uint32_t track, const struct track_key &key)
|
|
||||||
{
|
|
||||||
if (!clientSocket.connected()) return;
|
|
||||||
if (clientRemap.count(track) == 0) return;
|
|
||||||
track = htonl(clientRemap[track]);
|
|
||||||
uint32_t row = htonl(key.row);
|
|
||||||
|
|
||||||
union {
|
|
||||||
float f;
|
|
||||||
uint32_t i;
|
|
||||||
} v;
|
|
||||||
v.f = key.value;
|
|
||||||
v.i = htonl(v.i);
|
|
||||||
|
|
||||||
assert(key.type < KEY_TYPE_COUNT);
|
|
||||||
|
|
||||||
unsigned char cmd = SET_KEY;
|
|
||||||
clientSocket.send((char*)&cmd, 1, 0);
|
|
||||||
clientSocket.send((char*)&track, sizeof(track), 0);
|
|
||||||
clientSocket.send((char*)&row, sizeof(row), 0);
|
|
||||||
clientSocket.send((char*)&v.i, sizeof(v.i), 0);
|
|
||||||
clientSocket.send((char*)&key.type, 1, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void sendDeleteKeyCommand(int track, int row)
|
|
||||||
{
|
|
||||||
if (!clientSocket.connected()) return;
|
|
||||||
if (clientRemap.count(track) == 0) return;
|
|
||||||
|
|
||||||
track = htonl(int(clientRemap[track]));
|
|
||||||
row = htonl(row);
|
|
||||||
|
|
||||||
unsigned char cmd = DELETE_KEY;
|
|
||||||
clientSocket.send((char*)&cmd, 1, 0);
|
|
||||||
clientSocket.send((char*)&track, sizeof(int), 0);
|
|
||||||
clientSocket.send((char*)&row, sizeof(int), 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void sendSetRowCommand(int row)
|
|
||||||
{
|
|
||||||
if (!clientSocket.connected()) return;
|
|
||||||
unsigned char cmd = SET_ROW;
|
|
||||||
row = htonl(row);
|
|
||||||
clientSocket.send((char*)&cmd, 1, 0);
|
|
||||||
clientSocket.send((char*)&row, sizeof(int), 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void sendPauseCommand(bool pause)
|
|
||||||
{
|
|
||||||
if (!clientSocket.connected()) return;
|
|
||||||
unsigned char cmd = PAUSE;
|
|
||||||
clientSocket.send((char*)&cmd, 1, 0);
|
|
||||||
unsigned char flag = pause;
|
|
||||||
clientSocket.send((char*)&flag, 1, 0);
|
|
||||||
clientPaused = pause;
|
|
||||||
}
|
|
||||||
|
|
||||||
void sendSaveCommand()
|
|
||||||
{
|
|
||||||
if (!clientSocket.connected()) return;
|
|
||||||
unsigned char cmd = SAVE_TRACKS;
|
|
||||||
clientSocket.send((char*)&cmd, 1, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
class Command
|
class Command
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -169,7 +54,7 @@ public:
|
|||||||
assert(!is_key_frame(t, key.row));
|
assert(!is_key_frame(t, key.row));
|
||||||
if (sync_set_key(t, &key))
|
if (sync_set_key(t, &key))
|
||||||
throw std::bad_alloc("sync_set_key");
|
throw std::bad_alloc("sync_set_key");
|
||||||
data->sendSetKeyCommand(track, key); // update clients
|
data->clientSocket.sendSetKeyCommand(track, key); // update clients
|
||||||
}
|
}
|
||||||
|
|
||||||
void undo(SyncDocument *data)
|
void undo(SyncDocument *data)
|
||||||
@ -178,7 +63,7 @@ public:
|
|||||||
assert(is_key_frame(t, key.row));
|
assert(is_key_frame(t, key.row));
|
||||||
if (sync_del_key(t, key.row))
|
if (sync_del_key(t, key.row))
|
||||||
throw std::bad_alloc("sync_del_key");
|
throw std::bad_alloc("sync_del_key");
|
||||||
data->sendDeleteKeyCommand(track, key.row); // update clients
|
data->clientSocket.sendDeleteKeyCommand(track, key.row); // update clients
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -200,7 +85,7 @@ public:
|
|||||||
oldKey = t->keys[idx];
|
oldKey = t->keys[idx];
|
||||||
if (sync_del_key(t, row))
|
if (sync_del_key(t, row))
|
||||||
throw std::bad_alloc("sync_del_key");
|
throw std::bad_alloc("sync_del_key");
|
||||||
data->sendDeleteKeyCommand(track, row); // update clients
|
data->clientSocket.sendDeleteKeyCommand(track, row); // update clients
|
||||||
}
|
}
|
||||||
|
|
||||||
void undo(SyncDocument *data)
|
void undo(SyncDocument *data)
|
||||||
@ -209,7 +94,7 @@ public:
|
|||||||
assert(!is_key_frame(t, row));
|
assert(!is_key_frame(t, row));
|
||||||
if (sync_set_key(t, &oldKey))
|
if (sync_set_key(t, &oldKey))
|
||||||
throw std::bad_alloc("sync_set_key");
|
throw std::bad_alloc("sync_set_key");
|
||||||
data->sendSetKeyCommand(track, oldKey); // update clients
|
data->clientSocket.sendSetKeyCommand(track, oldKey); // update clients
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -232,7 +117,7 @@ public:
|
|||||||
oldKey = t->keys[idx];
|
oldKey = t->keys[idx];
|
||||||
if (sync_set_key(t, &key))
|
if (sync_set_key(t, &key))
|
||||||
throw std::bad_alloc("sync_set_key");
|
throw std::bad_alloc("sync_set_key");
|
||||||
data->sendSetKeyCommand(track, key); // update clients
|
data->clientSocket.sendSetKeyCommand(track, key); // update clients
|
||||||
}
|
}
|
||||||
|
|
||||||
void undo(SyncDocument *data)
|
void undo(SyncDocument *data)
|
||||||
@ -241,7 +126,7 @@ public:
|
|||||||
assert(is_key_frame(t, key.row));
|
assert(is_key_frame(t, key.row));
|
||||||
if (sync_set_key(t, &oldKey))
|
if (sync_set_key(t, &oldKey))
|
||||||
throw std::bad_alloc("sync_set_key");
|
throw std::bad_alloc("sync_set_key");
|
||||||
data->sendSetKeyCommand(track, oldKey); // update clients
|
data->clientSocket.sendSetKeyCommand(track, oldKey); // update clients
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -381,9 +266,7 @@ public:
|
|||||||
return 0 != savePointDelta;
|
return 0 != savePointDelta;
|
||||||
}
|
}
|
||||||
|
|
||||||
NetworkSocket clientSocket;
|
ClientSocket clientSocket;
|
||||||
std::map<size_t, size_t> clientRemap;
|
|
||||||
bool clientPaused;
|
|
||||||
|
|
||||||
size_t getRows() const { return rows; }
|
size_t getRows() const { return rows; }
|
||||||
void setRows(size_t rows) { this->rows = rows; }
|
void setRows(size_t rows) { this->rows = rows; }
|
||||||
|
|||||||
@ -191,8 +191,10 @@ void TrackView::paintTopMargin(HDC hdc, RECT rcTracks)
|
|||||||
DrawEdge(hdc, &fillRect, BDR_RAISEDINNER | BDR_RAISEDOUTER, BF_ADJUST | BF_LEFT | BF_RIGHT | BF_BOTTOM);
|
DrawEdge(hdc, &fillRect, BDR_RAISEDINNER | BDR_RAISEDOUTER, BF_ADJUST | BF_LEFT | BF_RIGHT | BF_BOTTOM);
|
||||||
FillRect(hdc, &fillRect, bgBrush);
|
FillRect(hdc, &fillRect, bgBrush);
|
||||||
|
|
||||||
if (doc->clientRemap.count(doc->getTrackIndexFromPos(track)) == 0) SetTextColor(hdc, GetSysColor(COLOR_GRAYTEXT));
|
if (!doc->clientSocket.clientRemap.count(doc->getTrackIndexFromPos(track)))
|
||||||
else SetTextColor(hdc, GetSysColor(COLOR_WINDOWTEXT));
|
SetTextColor(hdc, GetSysColor(COLOR_GRAYTEXT));
|
||||||
|
else
|
||||||
|
SetTextColor(hdc, GetSysColor(COLOR_WINDOWTEXT));
|
||||||
TextOut(hdc, fillRect.left, 0, t->name, int(strlen(t->name)));
|
TextOut(hdc, fillRect.left, 0, t->name, int(strlen(t->name)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -609,10 +611,8 @@ void TrackView::setEditRow(int newEditRow)
|
|||||||
invalidateRange(selectStartTrack, selectStopTrack, selectStartRow, selectStopRow);
|
invalidateRange(selectStartTrack, selectStopTrack, selectStartRow, selectStopRow);
|
||||||
selectStartRow = selectStopRow = editRow;
|
selectStartRow = selectStopRow = editRow;
|
||||||
selectStartTrack = selectStopTrack = editTrack;
|
selectStartTrack = selectStopTrack = editTrack;
|
||||||
}
|
} if (doc->clientSocket.clientPaused) {
|
||||||
if (doc->clientPaused)
|
doc->clientSocket.sendSetRowCommand(editRow);
|
||||||
{
|
|
||||||
doc->sendSetRowCommand(editRow);
|
|
||||||
}
|
}
|
||||||
SendMessage(GetParent(getWin()), WM_ROWCHANGED, 0, editRow);
|
SendMessage(GetParent(getWin()), WM_ROWCHANGED, 0, editRow);
|
||||||
SendMessage(GetParent(getWin()), WM_CURRVALDIRTY, 0, 0);
|
SendMessage(GetParent(getWin()), WM_CURRVALDIRTY, 0, 0);
|
||||||
@ -954,10 +954,8 @@ LRESULT TrackView::onKeyDown(UINT keyCode, UINT /*flags*/)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (editString.empty() && doc->clientPaused)
|
if (editString.empty() && doc->clientSocket.clientPaused) {
|
||||||
{
|
switch (keyCode) {
|
||||||
switch (keyCode)
|
|
||||||
{
|
|
||||||
case VK_UP:
|
case VK_UP:
|
||||||
if (GetKeyState(VK_CONTROL) < 0)
|
if (GetKeyState(VK_CONTROL) < 0)
|
||||||
{
|
{
|
||||||
@ -1044,7 +1042,7 @@ LRESULT TrackView::onKeyDown(UINT keyCode, UINT /*flags*/)
|
|||||||
invalidatePos(editTrack, editRow);
|
invalidatePos(editTrack, editRow);
|
||||||
MessageBeep(~0U);
|
MessageBeep(~0U);
|
||||||
}
|
}
|
||||||
doc->sendPauseCommand( !doc->clientPaused );
|
doc->clientSocket.sendPauseCommand( !doc->clientSocket.clientPaused );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user