Fixed bug in GetHexFromData() (accidently used Text() instead of the data
parameter passed in). Now correctly restores the whole state (find mode and case sensitivity). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6820 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -241,10 +241,9 @@ FindTextView::GetHexFromData(const uint8 *in, size_t inSize, char **_hex, size_t
|
|||||||
if (hex == NULL)
|
if (hex == NULL)
|
||||||
return B_NO_MEMORY;
|
return B_NO_MEMORY;
|
||||||
|
|
||||||
const char *text = Text();
|
|
||||||
char *out = hex;
|
char *out = hex;
|
||||||
for (uint32 i = 0; i < inSize; i++) {
|
for (uint32 i = 0; i < inSize; i++) {
|
||||||
out += sprintf(out, "%02x", *(unsigned char *)(text + i));
|
out += sprintf(out, "%02x", *(unsigned char *)(in + i));
|
||||||
}
|
}
|
||||||
out[0] = '\0';
|
out[0] = '\0';
|
||||||
|
|
||||||
@@ -331,7 +330,7 @@ FindTextView::SetMode(find_mode mode)
|
|||||||
void
|
void
|
||||||
FindTextView::SetData(BMessage &message)
|
FindTextView::SetData(BMessage &message)
|
||||||
{
|
{
|
||||||
uint8 *data;
|
const uint8 *data;
|
||||||
ssize_t dataSize;
|
ssize_t dataSize;
|
||||||
if (message.FindData("data", B_RAW_TYPE, (const void **)&data, &dataSize) != B_OK)
|
if (message.FindData("data", B_RAW_TYPE, (const void **)&data, &dataSize) != B_OK)
|
||||||
return;
|
return;
|
||||||
@@ -339,7 +338,7 @@ FindTextView::SetData(BMessage &message)
|
|||||||
if (fMode == kHexMode) {
|
if (fMode == kHexMode) {
|
||||||
char *hex;
|
char *hex;
|
||||||
size_t hexSize;
|
size_t hexSize;
|
||||||
if (GetHexFromData((const uint8 *)Text(), TextLength(), &hex, &hexSize) < B_OK)
|
if (GetHexFromData(data, dataSize, &hex, &hexSize) < B_OK)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
SetText(hex, hexSize);
|
SetText(hex, hexSize);
|
||||||
@@ -377,16 +376,22 @@ FindWindow::FindWindow(BRect rect, BMessage &previous, BMessenger &target)
|
|||||||
view->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
view->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
||||||
AddChild(view);
|
AddChild(view);
|
||||||
|
|
||||||
|
int8 mode = kAsciiMode;
|
||||||
|
previous.FindInt8("find_mode", &mode);
|
||||||
|
|
||||||
// add the top widgets
|
// add the top widgets
|
||||||
|
|
||||||
fMenu = new BPopUpMenu("mode");
|
fMenu = new BPopUpMenu("mode");
|
||||||
BMessage *message;
|
BMessage *message;
|
||||||
BMenuItem *item;
|
BMenuItem *item;
|
||||||
fMenu->AddItem(item = new BMenuItem("Text", message = new BMessage(kMsgFindMode)));
|
fMenu->AddItem(item = new BMenuItem("Text", message = new BMessage(kMsgFindMode)));
|
||||||
item->SetMarked(true);
|
|
||||||
message->AddInt8("mode", kAsciiMode);
|
message->AddInt8("mode", kAsciiMode);
|
||||||
|
if (mode == kAsciiMode)
|
||||||
|
item->SetMarked(true);
|
||||||
fMenu->AddItem(item = new BMenuItem("Hexadecimal", message = new BMessage(kMsgFindMode)));
|
fMenu->AddItem(item = new BMenuItem("Hexadecimal", message = new BMessage(kMsgFindMode)));
|
||||||
message->AddInt8("mode", kHexMode);
|
message->AddInt8("mode", kHexMode);
|
||||||
|
if (mode == kHexMode)
|
||||||
|
item->SetMarked(true);
|
||||||
|
|
||||||
BRect rect = Bounds().InsetByCopy(5, 5);
|
BRect rect = Bounds().InsetByCopy(5, 5);
|
||||||
BMenuField *menuField = new BMenuField(rect, B_EMPTY_STRING,
|
BMenuField *menuField = new BMenuField(rect, B_EMPTY_STRING,
|
||||||
@@ -410,6 +415,7 @@ FindWindow::FindWindow(BRect rect, BMessage &previous, BMessenger &target)
|
|||||||
fCaseCheckBox->ResizeToPreferred();
|
fCaseCheckBox->ResizeToPreferred();
|
||||||
fCaseCheckBox->MoveTo(5, button->Frame().top - 5 - fCaseCheckBox->Bounds().Height());
|
fCaseCheckBox->MoveTo(5, button->Frame().top - 5 - fCaseCheckBox->Bounds().Height());
|
||||||
fCaseCheckBox->SetValue(previous.FindBool("case_sensitive"));
|
fCaseCheckBox->SetValue(previous.FindBool("case_sensitive"));
|
||||||
|
fCaseCheckBox->SetEnabled(mode == kAsciiMode);
|
||||||
view->AddChild(fCaseCheckBox);
|
view->AddChild(fCaseCheckBox);
|
||||||
|
|
||||||
// and now those inbetween
|
// and now those inbetween
|
||||||
@@ -421,6 +427,7 @@ FindWindow::FindWindow(BRect rect, BMessage &previous, BMessenger &target)
|
|||||||
rect.OffsetToCopy(B_ORIGIN).InsetByCopy(3, 3),
|
rect.OffsetToCopy(B_ORIGIN).InsetByCopy(3, 3),
|
||||||
B_FOLLOW_ALL);
|
B_FOLLOW_ALL);
|
||||||
fTextView->SetWordWrap(true);
|
fTextView->SetWordWrap(true);
|
||||||
|
fTextView->SetMode((find_mode)mode);
|
||||||
fTextView->SetData(previous);
|
fTextView->SetData(previous);
|
||||||
|
|
||||||
BScrollView *scrollView = new BScrollView("scroller", fTextView, B_FOLLOW_ALL, B_WILL_DRAW, false, false);
|
BScrollView *scrollView = new BScrollView("scroller", fTextView, B_FOLLOW_ALL, B_WILL_DRAW, false, false);
|
||||||
|
|||||||
Reference in New Issue
Block a user