hrev45583 adds 6 changesets to branch 'master' old head: 72fb3d3984850bbc56838a6fde14f096285201b2 new head: f542c5137df69a6f17e454e4537e4c858a364774 overview: http://cgit.haiku-os.org/haiku/log/?qt=range&q=f542c51+%5E72fb3d3 ---------------------------------------------------------------------------- 955d638: Close window on Esc 32994cb: Style fixes and code simplifications 337a12f: Another style fix e001e60: Consolidate strings so they are added to the catalog just once. 2db4f18: Make logic menu field more font dynamic, wasn't working for Japanese Some style fixes and code simplications too. f542c51: Fix bug involving the condition string being removed when it shouldn't This bug occured when you selected from the mime type menu field while in attribute mode. The rows are removed and added again but the condition string view was left out because the menu item wasn't marked yet. Reordered to remove row, then set marked, then add row checking if marked and adding the condition string view based on the marked mime type. If no mime types are set it uses the first mimetype instead which is what we want in that case. [ John Scipione <jscipione@xxxxxxxxx> ] ---------------------------------------------------------------------------- 1 file changed, 131 insertions(+), 109 deletions(-) src/kits/tracker/FindPanel.cpp | 240 ++++++++++++++++++++----------------- ############################################################################ Commit: 955d6389af42ab21304247b7e58f9e357557342c URL: http://cgit.haiku-os.org/haiku/commit/?id=955d638 Author: John Scipione <jscipione@xxxxxxxxx> Date: Mon Apr 29 03:35:54 2013 UTC Close window on Esc ---------------------------------------------------------------------------- diff --git a/src/kits/tracker/FindPanel.cpp b/src/kits/tracker/FindPanel.cpp index 3dce126..b06ec97 100644 --- a/src/kits/tracker/FindPanel.cpp +++ b/src/kits/tracker/FindPanel.cpp @@ -187,7 +187,8 @@ MoreOptionsStruct::QueryTemporary(const BNode* node) FindWindow::FindWindow(const entry_ref* newRef, bool editIfTemplateOnly) : BWindow(kInitialRect, B_TRANSLATE("Find"), B_TITLED_WINDOW, - B_NOT_RESIZABLE | B_NOT_ZOOMABLE | B_AUTO_UPDATE_SIZE_LIMITS), + B_NOT_RESIZABLE | B_NOT_ZOOMABLE | B_CLOSE_ON_ESCAPE + | B_AUTO_UPDATE_SIZE_LIMITS), fFile(TryOpening(newRef)), fFromTemplate(false), fEditTemplateOnly(false), ############################################################################ Commit: 32994cb474ef344068441b486d266e0d5e462477 URL: http://cgit.haiku-os.org/haiku/commit/?id=32994cb Author: John Scipione <jscipione@xxxxxxxxx> Date: Mon Apr 29 03:38:04 2013 UTC Style fixes and code simplifications ---------------------------------------------------------------------------- diff --git a/src/kits/tracker/FindPanel.cpp b/src/kits/tracker/FindPanel.cpp index b06ec97..16e1f8f 100644 --- a/src/kits/tracker/FindPanel.cpp +++ b/src/kits/tracker/FindPanel.cpp @@ -698,8 +698,7 @@ FindPanel::FindPanel(BFile* node, FindWindow* parent, bool fromTemplate, fMimeTypeField = new BMenuField("MimeTypeMenu", "", fMimeTypeMenu); fMimeTypeField->SetDivider(0.0f); - fMimeTypeField->MenuItem()->SetLabel( - B_TRANSLATE("All files and folders")); + fMimeTypeField->MenuItem()->SetLabel(B_TRANSLATE("All files and folders")); // add popup for search criteria fSearchModeMenu = new BPopUpMenu("searchMode"); fSearchModeMenu->AddItem(new BMenuItem(B_TRANSLATE("by name"), @@ -1150,20 +1149,25 @@ FindPanel::MessageReceived(BMessage* message) if (message->FindPointer("source", (void**)&item) != B_OK) return; - if (item->Submenu()->ItemAt(0)) + if (item->Submenu()->ItemAt(0) != NULL) item->Submenu()->ItemAt(0)->SetMarked(true); + Invalidate(); break; case kLatchChanged: + { int32 value; - if (message->FindInt32("be:value", &value) == B_OK) { - if (value == 0 && !fMoreOptions->IsHidden(this)) - fMoreOptions->Hide(); - else if (value == 1 && fMoreOptions->IsHidden(this)) - fMoreOptions->Show(); - } + if (message->FindInt32("be:value", &value) != B_OK) + break; + + if (value == 0 && !fMoreOptions->IsHidden(this)) + fMoreOptions->Hide(); + else if (value == 1 && fMoreOptions->IsHidden(this)) + fMoreOptions->Show(); + break; + } case B_SAVE_REQUESTED: { @@ -1635,24 +1639,28 @@ FindPanel::SetCurrentMimeType(BMenuItem* item) BMenuItem* search; for (int32 i = 2; (search = MimeTypeMenu()->ItemAt(i)) != NULL; i++) { - if (item == search || !search->Label()) + if (item == search || search->Label() == NULL) continue; - if (strcmp(item->Label(),search->Label()) == 0) { + + if (strcmp(item->Label(), search->Label()) == 0) { search->SetMarked(true); break; } + BMenu* submenu = search->Submenu(); - if (submenu) { - for (int32 j = submenu->CountItems();j-- > 0;) { - BMenuItem* sub = submenu->ItemAt(j); - if (strcmp(item->Label(),sub->Label()) == 0) { - sub->SetMarked(true); - break; - } + if (submenu == NULL) + continue; + + for (int32 j = submenu->CountItems(); j-- > 0;) { + BMenuItem* sub = submenu->ItemAt(j); + if (strcmp(item->Label(),sub->Label()) == 0) { + sub->SetMarked(true); + break; } } } } + return B_OK; } @@ -1781,22 +1789,24 @@ FindPanel::AddMimeTypesToMenu() } } - if (tracker) + if (tracker != NULL) { tracker->MimeTypes()->EachCommonType(&FindPanel::AddOneMimeTypeToMenu, MimeTypeMenu()); + } // remove empty super type menus (and set target) - for (int32 index = MimeTypeMenu()->CountItems();index-- > 2;) { + for (int32 index = MimeTypeMenu()->CountItems(); index-- > 2;) { BMenuItem* item = MimeTypeMenu()->ItemAt(index); BMenu* submenu = item->Submenu(); - if (submenu != NULL) { - if (submenu->CountItems() == 0) { - MimeTypeMenu()->RemoveItem(item); - delete item; - } else - submenu->SetTargetForItems(this); - } + if (submenu == NULL) + continue; + + if (submenu->CountItems() == 0) { + MimeTypeMenu()->RemoveItem(item); + delete item; + } else + submenu->SetTargetForItems(this); } MimeTypeMenu()->SetTargetForItems(this); @@ -2405,6 +2415,7 @@ FindPanel::RemoveAttrViewItems(bool removeGrid) child->RemoveSelf(); delete child; } + if (removeGrid) { view->RemoveSelf(); delete view; @@ -2549,7 +2560,6 @@ FindPanel::AddAttributeControls(int32 gridRow) // target everything menu->SetTargetForItems(this); - for (int32 index = menu->CountItems() - 1; index >= 0; index--) menu->SubmenuAt(index)->SetTargetForItems(this); @@ -2591,7 +2601,7 @@ FindPanel::RestoreAttrState(const BMessage &message, int32 index) int32 logicMenuSelectedIndex; BMenuField* field = dynamic_cast<BMenuField*>(FindAttrView("Logic", index)); if (message.FindInt32("logicalRelation", index, - &logicMenuSelectedIndex) == B_OK) { + &logicMenuSelectedIndex) == B_OK) { if (field) field->Menu()->ItemAt(logicMenuSelectedIndex)->SetMarked(true); else @@ -2631,7 +2641,7 @@ FindPanel::SaveAttrState(BMessage* message, int32 index) message->AddString("attrViewText", textControl->TextView()->Text()); BMenuField* field = dynamic_cast<BMenuField*>(FindAttrView("Logic", index)); - if (field) { + if (field != NULL) { BMenuItem* item = field->Menu()->FindMarked(); ASSERT(item); message->AddInt32("logicalRelation", ############################################################################ Commit: 337a12f63fbcb793b6dc5df5821b48c64b2dbc02 URL: http://cgit.haiku-os.org/haiku/commit/?id=337a12f Author: John Scipione <jscipione@xxxxxxxxx> Date: Mon Apr 29 03:39:49 2013 UTC Another style fix ---------------------------------------------------------------------------- diff --git a/src/kits/tracker/FindPanel.cpp b/src/kits/tracker/FindPanel.cpp index 16e1f8f..14107eb 100644 --- a/src/kits/tracker/FindPanel.cpp +++ b/src/kits/tracker/FindPanel.cpp @@ -1775,7 +1775,7 @@ FindPanel::AddMimeTypesToMenu() const char* superType; int32 index = 0; - while (types.FindString("super_types",index++,&superType) == B_OK) { + while (types.FindString("super_types", index++, &superType) == B_OK) { BMenu* superMenu = new BMenu(superType); BMessage* message = new BMessage(kMIMETypeItem); ############################################################################ Commit: e001e604b912e8fcba0330ce134873fbc115a6df URL: http://cgit.haiku-os.org/haiku/commit/?id=e001e60 Author: John Scipione <jscipione@xxxxxxxxx> Date: Mon Apr 29 03:41:34 2013 UTC Consolidate strings so they are added to the catalog just once. ---------------------------------------------------------------------------- diff --git a/src/kits/tracker/FindPanel.cpp b/src/kits/tracker/FindPanel.cpp index 14107eb..f0cc2c1 100644 --- a/src/kits/tracker/FindPanel.cpp +++ b/src/kits/tracker/FindPanel.cpp @@ -109,6 +109,28 @@ static const char* kDragNDropActionSpecifiers [] = { const uint32 kAttachFile = 'attf'; +static const int32 operators[] = { + B_CONTAINS, + B_EQ, + B_NE, + B_BEGINS_WITH, + B_ENDS_WITH, + B_GE, + B_LE +}; + +static const char* operatorLabels[] = { + B_TRANSLATE_MARK("contains"), + B_TRANSLATE_MARK("is"), + B_TRANSLATE_MARK("is not"), + B_TRANSLATE_MARK("starts with"), + B_TRANSLATE_MARK("ends with"), + B_TRANSLATE_MARK("greater than"), + B_TRANSLATE_MARK("less than"), + B_TRANSLATE_MARK("before"), + B_TRANSLATE_MARK("after") +}; + namespace BPrivate { @@ -2483,29 +2505,18 @@ FindPanel::AddAttributeControls(int32 gridRow) BMenuItem* item = new BMenuItem(submenu, message); menu->AddItem(item); - const int32 operators[] = { - B_CONTAINS, - B_EQ, - B_NE, - B_BEGINS_WITH, - B_ENDS_WITH}; - static const char* operatorLabels[] = { - B_TRANSLATE_MARK("contains"), - B_TRANSLATE_MARK("is"), - B_TRANSLATE_MARK("is not"), - B_TRANSLATE_MARK("starts with"), - B_TRANSLATE_MARK("ends with")}; - for (int32 i = 0; i < 5; i++) { message = new BMessage(kAttributeItem); message->AddInt32("operator", operators[i]); - submenu->AddItem(new BMenuItem(B_TRANSLATE_NOCOLLECT( - operatorLabels[i]), message)); + submenu->AddItem(new BMenuItem( + B_TRANSLATE_NOCOLLECT(operatorLabels[i]), message)); } - // mark first item - menu->ItemAt(0)->SetMarked(true); - submenu->ItemAt(0)->SetMarked(true); + // mark first items if not marked + if (menu->FindMarked() == NULL) + menu->ItemAt(0)->SetMarked(true); + if (submenu->FindMarked() == NULL) + submenu->ItemAt(0)->SetMarked(true); // add SIZE attribute submenu = new BMenu(B_TRANSLATE("Size")); @@ -2519,15 +2530,18 @@ FindPanel::AddAttributeControls(int32 gridRow) message = new BMessage(kAttributeItem); message->AddInt32("operator", B_GE); - submenu->AddItem(new BMenuItem(B_TRANSLATE("greater than"), message)); + submenu->AddItem(new BMenuItem(B_TRANSLATE_NOCOLLECT(operatorLabels[5]), + message)); message = new BMessage(kAttributeItem); message->AddInt32("operator", B_LE); - submenu->AddItem(new BMenuItem(B_TRANSLATE("less than"), message)); + submenu->AddItem(new BMenuItem(B_TRANSLATE_NOCOLLECT(operatorLabels[6]), + message)); message = new BMessage(kAttributeItem); message->AddInt32("operator", B_EQ); - submenu->AddItem(new BMenuItem(B_TRANSLATE("is"), message)); + submenu->AddItem(new BMenuItem(B_TRANSLATE_NOCOLLECT(operatorLabels[1]), + message)); // add "modified" field submenu = new BMenu(B_TRANSLATE("Modified")); @@ -2541,16 +2555,24 @@ FindPanel::AddAttributeControls(int32 gridRow) message = new BMessage(kAttributeItem); message->AddInt32("operator", B_LE); - submenu->AddItem(new BMenuItem(B_TRANSLATE("before"), message)); + submenu->AddItem(new BMenuItem(B_TRANSLATE_NOCOLLECT(operatorLabels[7]), + message)); message = new BMessage(kAttributeItem); message->AddInt32("operator", B_GE); - submenu->AddItem(new BMenuItem(B_TRANSLATE("after"), message)); + submenu->AddItem(new BMenuItem(B_TRANSLATE_NOCOLLECT(operatorLabels[8]), + message)); BMenuField* menuField = new BMenuField("MenuField", "", menu); menuField->SetDivider(0.0f); fAttrGrid->AddView(menuField, 0, gridRow); + BStringView* stringView = new BStringView("", + menu->FindMarked()->Submenu()->FindMarked()->Label()); + BLayoutItem* layoutItem = fAttrGrid->AddView(stringView, 1, gridRow); + layoutItem->SetExplicitAlignment(BAlignment(B_ALIGN_RIGHT, + B_ALIGN_VERTICAL_UNSET)); + BString title("TextEntry"); title << gridRow; BTextControl* textControl = new BTextControl(title.String(), "", "", NULL); @@ -2737,29 +2759,25 @@ FindPanel::AddAttributes(BMenu* menu, const BMimeType &mimeType) case B_STRING_TYPE: message = new BMessage(kAttributeItem); message->AddInt32("operator", B_CONTAINS); - submenu->AddItem(new BMenuItem(B_TRANSLATE("contains"), - message)); + submenu->AddItem(new BMenuItem(operatorLabels[0], message)); message = new BMessage(kAttributeItem); message->AddInt32("operator", B_EQ); - submenu->AddItem(new BMenuItem(B_TRANSLATE("is"), message)); + submenu->AddItem(new BMenuItem(operatorLabels[1], message)); message = new BMessage(kAttributeItem); message->AddInt32("operator", B_NE); - submenu->AddItem(new BMenuItem(B_TRANSLATE("is not"), - message)); + submenu->AddItem(new BMenuItem(operatorLabels[2], message)); submenu->SetTargetForItems(this); message = new BMessage(kAttributeItem); message->AddInt32("operator", B_BEGINS_WITH); - submenu->AddItem(new BMenuItem(B_TRANSLATE("starts with"), - message)); + submenu->AddItem(new BMenuItem(operatorLabels[3], message)); submenu->SetTargetForItems(this); message = new BMessage(kAttributeItem); message->AddInt32("operator", B_ENDS_WITH); - submenu->AddItem(new BMenuItem(B_TRANSLATE("ends with"), - message)); + submenu->AddItem(new BMenuItem(operatorLabels[4], message)); break; case B_BOOL_TYPE: @@ -2776,27 +2794,25 @@ FindPanel::AddAttributes(BMenu* menu, const BMimeType &mimeType) case B_DOUBLE_TYPE: message = new BMessage(kAttributeItem); message->AddInt32("operator", B_EQ); - submenu->AddItem(new BMenuItem(B_TRANSLATE("is"), message)); + submenu->AddItem(new BMenuItem(operatorLabels[1], message)); message = new BMessage(kAttributeItem); message->AddInt32("operator", B_GE); - submenu->AddItem(new BMenuItem(B_TRANSLATE("greater than"), - message)); + submenu->AddItem(new BMenuItem(operatorLabels[5], message)); message = new BMessage(kAttributeItem); message->AddInt32("operator", B_LE); - submenu->AddItem(new BMenuItem(B_TRANSLATE("less than"), - message)); + submenu->AddItem(new BMenuItem(operatorLabels[6], message)); break; case B_TIME_TYPE: message = new BMessage(kAttributeItem); message->AddInt32("operator", B_LE); - submenu->AddItem(new BMenuItem(B_TRANSLATE("before"), message)); + submenu->AddItem(new BMenuItem(operatorLabels[7], message)); message = new BMessage(kAttributeItem); message->AddInt32("operator", B_GE); - submenu->AddItem(new BMenuItem(B_TRANSLATE("after"), message)); + submenu->AddItem(new BMenuItem(operatorLabels[8], message)); break; } submenu->SetTargetForItems(this); ############################################################################ Commit: 2db4f1832a951bdd37d0e3d1b4ab05c839d10eb4 URL: http://cgit.haiku-os.org/haiku/commit/?id=2db4f18 Author: John Scipione <jscipione@xxxxxxxxx> Date: Mon Apr 29 03:44:09 2013 UTC Make logic menu field more font dynamic, wasn't working for Japanese Some style fixes and code simplications too. ---------------------------------------------------------------------------- diff --git a/src/kits/tracker/FindPanel.cpp b/src/kits/tracker/FindPanel.cpp index f0cc2c1..e9a9369 100644 --- a/src/kits/tracker/FindPanel.cpp +++ b/src/kits/tracker/FindPanel.cpp @@ -933,46 +933,43 @@ FindPanel::ResizeMenuField(BMenuField* menuField) BMenu* menu = menuField->Menu(); - float padding = 0.0; - float width = size.width; + float padding = 0.0f; + float width = 0.0f; BMenuItem* markedItem = menu->FindMarked(); if (markedItem != NULL) { if (markedItem->Submenu() != NULL) { BMenuItem* markedSubItem = markedItem->Submenu()->FindMarked(); if (markedSubItem != NULL && markedSubItem->Label() != NULL) { - float labelWidth = StringWidth(markedSubItem->Label()); + float labelWidth + = menuField->StringWidth(markedSubItem->Label()); padding = size.width - labelWidth; } } else if (markedItem->Label() != NULL) { - float labelWidth = StringWidth(markedItem->Label()); + float labelWidth = menuField->StringWidth(markedItem->Label()); padding = size.width - labelWidth; } } for (int32 index = menu->CountItems(); index-- > 0; ) { BMenuItem* item = menu->ItemAt(index); - if (item->Label() != NULL) { - float labelWidth = StringWidth(item->Label()); - if (labelWidth > width) { - width = labelWidth; - } - } + if (item->Label() != NULL) + width = max(width, StringWidth(item->Label())); + BMenu* submenu = item->Submenu(); if (submenu != NULL) { for (int32 subIndex = submenu->CountItems(); subIndex-- > 0; ) { BMenuItem* subItem = submenu->ItemAt(subIndex); - if (subItem->Label() != NULL) { - float labelWidth = StringWidth(subItem->Label()); - if (labelWidth > width) - width = labelWidth; - } + if (subItem->Label() == NULL) + continue; + + width = max(width, menuField->StringWidth(subItem->Label())); } } } size.width = width + padding; - menuField->SetExplicitMinSize(size); + menuField->SetExplicitSize(size); } static void @@ -2696,7 +2693,7 @@ FindPanel::AddLogicMenu(int32 index, bool selectAnd) BMenuField* menufield = new BMenuField("Logic", "", menu, B_WILL_DRAW); menufield->SetDivider(0.0f); - menufield->SetExplicitMaxSize(menufield->MinSize()); + ResizeMenuField(menufield); fAttrGrid->AddView(menufield, 3, index); } ############################################################################ Revision: hrev45583 Commit: f542c5137df69a6f17e454e4537e4c858a364774 URL: http://cgit.haiku-os.org/haiku/commit/?id=f542c51 Author: John Scipione <jscipione@xxxxxxxxx> Date: Mon Apr 29 03:49:27 2013 UTC Fix bug involving the condition string being removed when it shouldn't This bug occured when you selected from the mime type menu field while in attribute mode. The rows are removed and added again but the condition string view was left out because the menu item wasn't marked yet. Reordered to remove row, then set marked, then add row checking if marked and adding the condition string view based on the marked mime type. If no mime types are set it uses the first mimetype instead which is what we want in that case. ---------------------------------------------------------------------------- diff --git a/src/kits/tracker/FindPanel.cpp b/src/kits/tracker/FindPanel.cpp index e9a9369..659a5fb 100644 --- a/src/kits/tracker/FindPanel.cpp +++ b/src/kits/tracker/FindPanel.cpp @@ -1033,27 +1033,26 @@ FindPanel::Draw(BRect) return; for (int32 index = 0; index < fAttrGrid->CountRows(); index++) { - BMenuField* menuField = dynamic_cast<BMenuField*>(FindAttrView("MenuField", index)); if (menuField == NULL) - return; + continue; + BLayoutItem* stringView = fAttrGrid->ItemAt(1, index); BMenuItem* item = menuField->Menu()->FindMarked(); - if (item == NULL) - return; - - if (item->Submenu()->FindMarked()) { - BLayoutItem* stringView = fAttrGrid->ItemAt(1, index); - if (stringView == NULL) - stringView = fAttrGrid->AddView(new BStringView("", - item->Submenu()->FindMarked()->Label()), 1, index); - else - dynamic_cast<BStringView*>(stringView->View())->SetText( - item->Submenu()->FindMarked()->Label()); + if (item == NULL || item->Submenu() == NULL + || item->Submenu()->FindMarked() == NULL) { + continue; + } + if (stringView == NULL) { + stringView = fAttrGrid->AddView(new BStringView("", + item->Submenu()->FindMarked()->Label()), 1, index); stringView->SetExplicitAlignment(BAlignment(B_ALIGN_RIGHT, B_ALIGN_VERTICAL_UNSET)); + } else { + dynamic_cast<BStringView*>(stringView->View())->SetText( + item->Submenu()->FindMarked()->Label()); } } } @@ -1128,6 +1127,11 @@ FindPanel::MessageReceived(BMessage* message) case kMIMETypeItem: { + if (fMode == kByAttributeItem) { + // the attributes for this type may be different + RemoveAttrViewItems(false); + } + BMenuItem* item; if (message->FindPointer("source", (void**)&item) == B_OK) { // don't add the "All files and folders" to the list @@ -1137,15 +1141,9 @@ FindPanel::MessageReceived(BMessage* message) SetCurrentMimeType(item); } - // mime type switched - if (fMode != kByAttributeItem) - break; - - // the attributes for this type may be different, - // rip out the existing ones - RemoveAttrViewItems(false); + if (fMode == kByAttributeItem) + AddAttrRow(); - AddAttrRow(); break; }