From 2e314fe826d047f2af2063b134e17659ebd5e537 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Fri, 18 Oct 2024 15:49:11 -0400 Subject: [PATCH] Tracker: Reinstate the draggable query icon in the Find panel. --- src/kits/tracker/FindPanel.cpp | 48 +++++++++++++++++++++++++--------- src/kits/tracker/FindPanel.h | 1 - 2 files changed, 36 insertions(+), 13 deletions(-) diff --git a/src/kits/tracker/FindPanel.cpp b/src/kits/tracker/FindPanel.cpp index 338b0dc8cb..ea96e7569c 100644 --- a/src/kits/tracker/FindPanel.cpp +++ b/src/kits/tracker/FindPanel.cpp @@ -1040,6 +1040,31 @@ FindPanel::FindPanel(BFile* node, FindWindow* parent, bool fromTemplate, bool ed new BMessage(kSelectDirectoryFilter))); LoadDirectoryFiltersFromFile(node); + if (!editTemplateOnly) { + BPoint draggableIconOrigin(0, 0); + BMessage dragNDropMessage(B_SIMPLE_DATA); + dragNDropMessage.AddInt32("be:actions", B_COPY_TARGET); + dragNDropMessage.AddString("be:types", B_FILE_MIME_TYPE); + dragNDropMessage.AddString("be:filetypes", kDragNDropTypes[0]); + dragNDropMessage.AddString("be:filetypes", kDragNDropTypes[1]); + dragNDropMessage.AddString("be:actionspecifier", + B_TRANSLATE_NOCOLLECT(kDragNDropActionSpecifiers[0])); + dragNDropMessage.AddString("be:actionspecifier", + B_TRANSLATE_NOCOLLECT(kDragNDropActionSpecifiers[1])); + + BMessenger self(this); + BRect draggableRect = DraggableIcon::PreferredRect(draggableIconOrigin, + B_LARGE_ICON); + fDraggableIcon = new DraggableQueryIcon(draggableRect, + "saveHere", &dragNDropMessage, self, + B_FOLLOW_LEFT | B_FOLLOW_BOTTOM); + fDraggableIcon->SetExplicitMaxSize( + BSize(draggableRect.right - draggableRect.left, + draggableRect.bottom - draggableRect.top)); + BCursor grabCursor(B_CURSOR_ID_GRAB); + fDraggableIcon->SetViewCursor(&grabCursor); + } + // add Search button BButton* button; if (editTemplateOnly) { @@ -1051,6 +1076,12 @@ FindPanel::FindPanel(BFile* node, FindWindow* parent, bool fromTemplate, bool ed } button->MakeDefault(true); + BView* icon = fDraggableIcon; + if (icon == NULL) { + icon = new BBox("no draggable icon", B_WILL_DRAW, B_NO_BORDER); + icon->SetExplicitMaxSize(BSize(0, 0)); + } + BView* mimeTypeFieldSpacer = new BBox("MimeTypeMenuSpacer", B_WILL_DRAW, B_NO_BORDER); mimeTypeFieldSpacer->SetExplicitMaxSize(BSize(0, 0)); @@ -1081,6 +1112,11 @@ FindPanel::FindPanel(BFile* node, FindWindow* parent, bool fromTemplate, bool ed .SetInsets(B_USE_WINDOW_SPACING) .Add(queryBox) .AddGroup(B_HORIZONTAL, B_USE_DEFAULT_SPACING) + .AddGroup(B_VERTICAL) + .AddGlue() + .Add(icon) + .AddGlue() + .End() .AddGlue() .AddGroup(B_VERTICAL) .Add(button) @@ -3726,18 +3762,6 @@ TrackerBuildRecentFindItemsMenu(const char* title) // #pragma mark - -void -DraggableQueryIcon::Draw(BRect updateRect) -{ - BRect rect(Bounds()); - rgb_color base = ui_color(B_MENU_BACKGROUND_COLOR); - be_control_look->DrawBorder(this, rect, updateRect, base, B_PLAIN_BORDER, 0, - BControlLook::B_BOTTOM_BORDER); - be_control_look->DrawMenuBarBackground(this, rect, updateRect, base, 0, - BControlLook::B_ALL_BORDERS & ~BControlLook::B_LEFT_BORDER); - DraggableIcon::Draw(updateRect); -} - DraggableQueryIcon::DraggableQueryIcon(BRect frame, const char* name, const BMessage* message, BMessenger messenger, uint32 resizeFlags, diff --git a/src/kits/tracker/FindPanel.h b/src/kits/tracker/FindPanel.h index 763658ec02..80d8a89378 100644 --- a/src/kits/tracker/FindPanel.h +++ b/src/kits/tracker/FindPanel.h @@ -402,7 +402,6 @@ public: protected: virtual bool DragStarted(BMessage*); - virtual void Draw(BRect); };