hexedit 2.0 selection patch
here's a patch to fix the horizontal selection offset in hexedit 2.0. in the ppc disasm view, things are shifted slightly - I simply unhardcoded the offset and made it depend on the view. I've had no luck contacting lane roathe, and I can't be bothered figuring out how to log in to sourceforge to submit this properly.
--- EditWindowOld.c 2005-08-24 18:39:43.000000000 -0300
+++ EditWindow.c 2005-12-01 11:22:31.000000000 -0400
@@ -71,6 +71,10 @@
kNavDITLNumControls = 4//3 radio buttons + radio group control
};
+// RA 051201 unhardcode selection x offset
+#define kHexSelectionOffset -3
+#define kDisasmSelectionOffset 2
+
/*** NEW OFFSCREEN GWORLD ***/
// LR: create offscreen drawing surface (so drawing to screen is not flickery)
//LR 180 -- removed old comments, now always creates offscreen at current color depth
@@ -1273,6 +1277,7 @@
/*** INVERT SELECTION ***/
//LR 180 -- changes to draw offscreen instead of directly to window
+// RA 051201 replace "- 3" with "+ xOffset"
static void _hiliteSelection( EditWindowPtr dWin )
{
Rect r;
@@ -1282,6 +1287,9 @@
RGBColor hColor, opcolor = { 0x8000, 0x8000, 0xF000 };
//185 RGBColor invertColor;
+ // RA 051201 selectxoffset
+ short xOffset;
+
frontFlag = (dWin->oWin.theWin == FrontNonFloatingWindow() && dWin->oWin.active);
if( dWin->endSel <= dWin->startSel )
@@ -1295,6 +1303,14 @@
RGBForeColor( &grey );
OpColor( &opcolor );
+
+ // RA 051201 selectxoffset
+ if (dWin->drawMode == DM_Disassembly) {
+ xOffset = kDisasmSelectionOffset;
+ } else {
+ xOffset = kHexSelectionOffset;
+ }
+
/*185
if( ctHdl )
invertColor = ( *ctHdl )->body;
@@ -1323,8 +1339,8 @@
// Invert Hex
r.top = /*(kHeaderHeight / 2) +*/ LINENUM( start ) * kLineHeight;
r.bottom = r.top + kLineHeight;
- r.left = kDataDrawPos + HEXPOS( startX ) - 3;
- r.right = kDataDrawPos + HEXPOS( kBytesPerLine ) - 3;
+ r.left = kDataDrawPos + HEXPOS( startX ) + xOffset;
+ r.right = kDataDrawPos + HEXPOS( kBytesPerLine ) + xOffset;
HILITERECT( &r );
// Outline Box around Ascii
@@ -1346,8 +1362,8 @@
{
r.top = /*(kHeaderHeight / 2) +*/ LINENUM( start ) * kLineHeight + kLineHeight;
r.bottom = /*(kHeaderHeight / 2) +*/ LINENUM( end ) * kLineHeight;
- r.left = kDataDrawPos - 3;
- r.right = kDataDrawPos + HEXPOS( kBytesPerLine ) - 3;
+ r.left = kDataDrawPos + xOffset;
+ r.right = kDataDrawPos + HEXPOS( kBytesPerLine ) + xOffset;
HILITERECT( &r );
r.left = kTextDrawPos - 1;
@@ -1359,8 +1375,8 @@
}
r.top = /*(kHeaderHeight / 2) +*/ LINENUM( end ) * kLineHeight;
r.bottom = r.top + kLineHeight;
- r.left = kDataDrawPos - 3;
- r.right = kDataDrawPos + HEXPOS( endX ) + kHexWidth - 3;
+ r.left = kDataDrawPos + xOffset;
+ r.right = kDataDrawPos + HEXPOS( endX ) + kHexWidth + xOffset;
HILITERECT( &r );
r.left = kTextDrawPos - 1;
@@ -1380,8 +1396,8 @@
{
r.top = /*(kHeaderHeight / 2) +*/ LINENUM( start ) * kLineHeight;
r.bottom = r.top + kLineHeight;
- r.left = kDataDrawPos + HEXPOS( startX ) - 3;
- r.right = kDataDrawPos + HEXPOS( endX ) + kHexWidth - 3;
+ r.left = kDataDrawPos + HEXPOS( startX ) + xOffset;
+ r.right = kDataDrawPos + HEXPOS( endX ) + kHexWidth + xOffset;
HILITERECT( &r );
r.left = kTextDrawPos + CHARPOS( startX )-1;
@@ -1409,10 +1425,10 @@
// Outline Hex
r.top = /*(kHeaderHeight / 2) +*/ LINENUM( start ) * kLineHeight;
r.bottom = r.top + kLineHeight;
- r.left = kDataDrawPos + HEXPOS( startX ) - 3;
- r.right = kDataDrawPos + HEXPOS( kBytesPerLine ) - 3;
+ r.left = kDataDrawPos + HEXPOS( startX ) + xOffset;
+ r.right = kDataDrawPos + HEXPOS( kBytesPerLine ) + xOffset;
- MoveTo( kDataDrawPos - 3, r.bottom );
+ MoveTo( kDataDrawPos + xOffset, r.bottom );
LineTo( r.left, r.bottom );
LineTo( r.left, r.top );
if( dWin->startSel >= dWin->editOffset )
@@ -1432,8 +1448,8 @@
{
r.top = /*(kHeaderHeight / 2) +*/ LINENUM( start ) * kLineHeight + kLineHeight;
r.bottom = /*(kHeaderHeight / 2) +*/ LINENUM( end ) * kLineHeight;
- r.left = kDataDrawPos - 3;
- r.right = kDataDrawPos + HEXPOS( kBytesPerLine ) - 3;
+ r.left = kDataDrawPos + xOffset;
+ r.right = kDataDrawPos + HEXPOS( kBytesPerLine ) + xOffset;
MoveTo( r.left, r.top );
LineTo( r.left, r.bottom );
MoveTo( r.right, r.top );
@@ -1445,8 +1461,8 @@
}
r.top = /*(kHeaderHeight / 2) +*/ LINENUM( end ) * kLineHeight;
r.bottom = r.top + kLineHeight;
- r.left = kDataDrawPos - 3;
- r.right = kDataDrawPos + HEXPOS( endX ) + kHexWidth - 3;
+ r.left = kDataDrawPos + xOffset;
+ r.right = kDataDrawPos + HEXPOS( endX ) + kHexWidth + xOffset;
MoveTo( r.left, r.top );
LineTo( r.left, r.bottom );
if( dWin->endSel < dWin->editOffset + dWin->linesPerPage * kBytesPerLine )
@@ -1456,7 +1472,7 @@
else
MoveTo( r.right, r.bottom );
LineTo( r.right, r.top );
- LineTo( kDataDrawPos + HEXPOS( kBytesPerLine ) - 3, r.top );
+ LineTo( kDataDrawPos + HEXPOS( kBytesPerLine ) + xOffset, r.top );
r.left = kTextDrawPos - 1;
r.right = kTextDrawPos + CHARPOS( endX ) + kCharWidth; //LR 180 - 1;
@@ -1466,8 +1482,8 @@
{
r.top = /*(kHeaderHeight / 2) +*/ LINENUM( start ) * kLineHeight;
r.bottom = r.top + kLineHeight;
- r.left = kDataDrawPos + HEXPOS( startX ) - 3;
- r.right = kDataDrawPos + HEXPOS( endX ) + kHexWidth - 3;
+ r.left = kDataDrawPos + HEXPOS( startX ) + xOffset;
+ r.right = kDataDrawPos + HEXPOS( endX ) + kHexWidth + xOffset;
MoveTo( r.left, r.top );
LineTo( r.left, r.bottom );
if( dWin->endSel < dWin->editOffset + dWin->linesPerPage * kBytesPerLine )
@@ -1495,10 +1511,10 @@
// Outline Hex
r.top = /*(kHeaderHeight / 2) +*/ LINENUM( start ) * kLineHeight;
r.bottom = r.top + kLineHeight;
- r.left = kDataDrawPos + HEXPOS( startX ) - 3;
- r.right = kDataDrawPos + HEXPOS( kBytesPerLine ) - 3;
+ r.left = kDataDrawPos + HEXPOS( startX ) + xOffset;
+ r.right = kDataDrawPos + HEXPOS( kBytesPerLine ) + xOffset;
- MoveTo( kDataDrawPos - 3, r.bottom );
+ MoveTo( kDataDrawPos + xOffset, r.bottom );
LineTo( r.left, r.bottom );
LineTo( r.left, r.top );
if( dWin->startSel >= dWin->editOffset )
@@ -1527,8 +1543,8 @@
{
r.top = /*(kHeaderHeight / 2) +*/ LINENUM( start ) * kLineHeight + kLineHeight;
r.bottom = /*(kHeaderHeight / 2) +*/ LINENUM( end ) * kLineHeight;
- r.left = kDataDrawPos - 3;
- r.right = kDataDrawPos + HEXPOS( kBytesPerLine ) - 3;
+ r.left = kDataDrawPos + xOffset;
+ r.right = kDataDrawPos + HEXPOS( kBytesPerLine ) + xOffset;
MoveTo( r.left, r.top );
LineTo( r.left, r.bottom );
MoveTo( r.right, r.top );
@@ -1543,8 +1559,8 @@
}
r.top = /*(kHeaderHeight / 2) +*/ LINENUM( end ) * kLineHeight;
r.bottom = r.top + kLineHeight;
- r.left = kDataDrawPos - 3;
- r.right = kDataDrawPos + HEXPOS( endX ) + kHexWidth - 3;
+ r.left = kDataDrawPos + xOffset;
+ r.right = kDataDrawPos + HEXPOS( endX ) + kHexWidth + xOffset;
MoveTo( r.left, r.top );
LineTo( r.left, r.bottom );
if( dWin->endSel < dWin->editOffset + dWin->linesPerPage * kBytesPerLine )
@@ -1552,7 +1568,7 @@
else
MoveTo( r.right, r.bottom );
LineTo( r.right, r.top );
- LineTo( kDataDrawPos + HEXPOS( kBytesPerLine ) - 3, r.top );
+ LineTo( kDataDrawPos + HEXPOS( kBytesPerLine ) + xOffset, r.top );
r.left = kTextDrawPos - 1;
r.right = kTextDrawPos + CHARPOS( endX ) + kCharWidth - 1;
@@ -1569,8 +1585,8 @@
{
r.top = /*(kHeaderHeight / 2) +*/ LINENUM( start ) * kLineHeight;
r.bottom = r.top + kLineHeight;
- r.left = kDataDrawPos + HEXPOS( startX ) - 3;
- r.right = kDataDrawPos + HEXPOS( endX ) + kHexWidth - 3;
+ r.left = kDataDrawPos + HEXPOS( startX ) + xOffset;
+ r.right = kDataDrawPos + HEXPOS( endX ) + kHexWidth + xOffset;
MoveTo( r.left, r.top );
LineTo( r.left, r.bottom );
if( dWin->endSel < dWin->editOffset + dWin->linesPerPage * kBytesPerLine )
0 Comments:
Post a Comment
<< Home