[haiku-commits] r39105 - haiku/trunk/src/apps/showimage

  • From: axeld@xxxxxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sun, 24 Oct 2010 01:50:41 +0200 (CEST)

Author: axeld
Date: 2010-10-24 01:50:41 +0200 (Sun, 24 Oct 2010)
New Revision: 39105
Changeset: http://dev.haiku-os.org/changeset/39105

Modified:
   haiku/trunk/src/apps/showimage/ShowImageConstants.h
   haiku/trunk/src/apps/showimage/ShowImageView.cpp
   haiku/trunk/src/apps/showimage/ShowImageView.h
   haiku/trunk/src/apps/showimage/ShowImageWindow.cpp
Log:
* The shrink/zoom to window options aren't available anymore from the context
  menu. I plan to allow zooming always, so they won't be needed that often
  anymore.
* Removed all selection copy/move/cut code. This just doesn't belong into an
  image viewer.
* Selections are now changed using the tertiary mouse button, or when you press
  the command or control modifiers. Instead, the image will now be moved around
  with the left button.
* If you drop an image file to ShowImage, it will now open it instead of pasting
  it as selection.
* Reworked the scrolling/selection code to never poll, and never use GetMouse().
  Instead properly use the asynchronous API (ie. B_NO_POINTER_HISTORY).
* I plan to remove the scaling code as well: the results aren't as good as they
  could be (bilinear scaling isn't the solution for everything), and the
  interface is pretty awkward, anyway. IMO, this kind of functionality should
  be left to apps that are actually thought for image editing. Another solution
  would be a Tracker add-on that resizes (multiple) images.


Modified: haiku/trunk/src/apps/showimage/ShowImageConstants.h
===================================================================
--- haiku/trunk/src/apps/showimage/ShowImageConstants.h 2010-10-23 23:35:08 UTC 
(rev 39104)
+++ haiku/trunk/src/apps/showimage/ShowImageConstants.h 2010-10-23 23:50:41 UTC 
(rev 39105)
@@ -30,7 +30,6 @@
        MSG_UPDATE_STATUS_TEXT          = 'mUPT',
        MSG_UNDO_STATE                          = 'mUNS',
        MSG_SELECTION                           = 'mSEL',
-       MSG_SELECTION_BITMAP            = 'mSBT',
        MSG_PAGE_FIRST                          = 'mPGF',
        MSG_PAGE_LAST                           = 'mPGL',
        MSG_PAGE_NEXT                           = 'mPGN',
@@ -55,7 +54,6 @@
        MSG_ZOOM_IN                                     = 'mZIN',
        MSG_ZOOM_OUT                            = 'mZOU',
        MSG_ORIGINAL_SIZE                       = 'mOSZ',
-       MSG_INVALIDATE                          = 'mIVD',
        MSG_SCALE_BILINEAR                      = 'mSBL',
        MSG_DESKTOP_BACKGROUND          = 'mDBG',
        MSG_OPEN_RESIZER_WINDOW         = 'mORS',

Modified: haiku/trunk/src/apps/showimage/ShowImageView.cpp
===================================================================
--- haiku/trunk/src/apps/showimage/ShowImageView.cpp    2010-10-23 23:35:08 UTC 
(rev 39104)
+++ haiku/trunk/src/apps/showimage/ShowImageView.cpp    2010-10-23 23:50:41 UTC 
(rev 39105)
@@ -555,34 +555,6 @@
 }
 
 
-status_t
-ShowImageView::_SetSelection(const entry_ref *ref, BPoint point)
-{
-       BTranslatorRoster *roster = BTranslatorRoster::Default();
-       if (!roster)
-               return B_ERROR;
-
-       BFile file(ref, B_READ_ONLY);
-       translator_info info;
-       memset(&info, 0, sizeof(translator_info));
-       if (roster->Identify(&file, NULL, &info, 0, NULL,
-                       B_TRANSLATOR_BITMAP) != B_OK)
-               return B_ERROR;
-
-       // Translate image data and create a new ShowImage window
-       BBitmapStream outstream;
-       if (roster->Translate(&file, &info, NULL, &outstream,
-                       B_TRANSLATOR_BITMAP) != B_OK)
-               return B_ERROR;
-
-       BBitmap *newBitmap = NULL;
-       if (outstream.DetachBitmap(&newBitmap) != B_OK)
-               return B_ERROR;
-
-       return _PasteBitmap(newBitmap, point);
-}
-
-
 void
 ShowImageView::SetShowCaption(bool show)
 {
@@ -882,29 +854,6 @@
 
 
 BBitmap*
-ShowImageView::_CopyFromRect(BRect srcRect)
-{
-       BRect rect(0, 0, srcRect.Width(), srcRect.Height());
-       BView view(rect, NULL, B_FOLLOW_NONE, B_WILL_DRAW);
-       BBitmap *bitmap = new(nothrow) BBitmap(rect, fBitmap->ColorSpace(), 
true);
-       if (bitmap == NULL || !bitmap->IsValid()) {
-               delete bitmap;
-               return NULL;
-       }
-
-       if (bitmap->Lock()) {
-               bitmap->AddChild(&view);
-               view.DrawBitmap(fBitmap, srcRect, rect);
-               view.Sync();
-               bitmap->RemoveChild(&view);
-               bitmap->Unlock();
-       }
-
-       return bitmap;
-}
-
-
-BBitmap*
 ShowImageView::_CopySelection(uchar alpha, bool imageSize)
 {
        bool hasAlpha = alpha != 255;
@@ -1038,8 +987,8 @@
                // only use a transparent bitmap on selections less than 400x400
                // (taking into account zooming)
                BRect selectionRect = fSelectionBox.Bounds();
-               if ((selectionRect.Width() * fZoom) < 400.0
-                       && (selectionRect.Height() * fZoom) < 400.0) {
+               if (selectionRect.Width() * fZoom < 400.0
+                       && selectionRect.Height() * fZoom < 400.0) {
                        sourcePoint -= selectionRect.LeftTop();
                        sourcePoint.x *= fZoom;
                        sourcePoint.y *= fZoom;
@@ -1189,40 +1138,15 @@
 
 
 void
-ShowImageView::_ScrollBitmap()
+ShowImageView::_ScrollBitmap(BPoint point)
 {
-       BPoint point, delta;
-       uint32 buttons;
-       // get CURRENT position
-       GetMouse(&point, &buttons);
        point = ConvertToScreen(point);
-       delta = fFirstPoint - point;
+       BPoint delta = fFirstPoint - point;
        fFirstPoint = point;
        _ScrollRestrictedBy(delta.x, delta.y);
-
-       // in case we miss MouseUp
-       if ((_GetMouseButtons() & B_TERTIARY_MOUSE_BUTTON) == 0)
-               fScrollingBitmap = false;
 }
 
 
-uint32
-ShowImageView::_GetMouseButtons()
-{
-       uint32 buttons;
-       BPoint point;
-       GetMouse(&point, &buttons);
-       if (buttons == B_PRIMARY_MOUSE_BUTTON) {
-               if ((modifiers() & B_CONTROL_KEY) != 0) {
-                       buttons = B_SECONDARY_MOUSE_BUTTON; // simulate second 
button
-               } else if ((modifiers() & B_SHIFT_KEY) != 0) {
-                       buttons = B_TERTIARY_MOUSE_BUTTON; // simulate third 
button
-               }
-       }
-       return buttons;
-}
-
-
 void
 ShowImageView::_GetMergeRects(BBitmap* merge, BRect selection, BRect& srcRect,
        BRect& dstRect)
@@ -1286,71 +1210,28 @@
 
 
 void
-ShowImageView::_MergeSelection()
-{
-       if (!fHasSelection)
-               return;
-
-       if (fSelectionBitmap == NULL) {
-               // Even though the merge will not change the background image,
-               // undo information still needs to be saved here.
-               fUndo.SetTo(fSelectionBox.Bounds(), NULL, _CopySelection());
-               return;
-       }
-
-       // Merge selection with background
-       fUndo.SetTo(fSelectionBox.Bounds(), 
_CopyFromRect(fSelectionBox.Bounds()),
-               _CopySelection());
-       _MergeWithBitmap(fSelectionBitmap, fSelectionBox.Bounds());
-}
-
-
-void
 ShowImageView::MouseDown(BPoint position)
 {
-       BPoint point;
-       uint32 buttons;
        MakeFocus(true);
 
-       point = ViewToImage(position);
-       buttons = _GetMouseButtons();
+       BPoint point = ViewToImage(position);
+       uint32 buttons = 0;
+       if (Window() != NULL & Window()->CurrentMessage() != NULL)
+               buttons = Window()->CurrentMessage()->FindInt32("buttons");
 
        if (fHasSelection && fSelectionBox.Bounds().Contains(point)
                && (buttons & (B_PRIMARY_MOUSE_BUTTON | 
B_SECONDARY_MOUSE_BUTTON))) {
                if (!fSelectionBitmap)
                        fSelectionBitmap = _CopySelection();
 
-               BPoint sourcePoint = point;
-               _BeginDrag(sourcePoint);
-
-               while (buttons) {
-                       // Keep reading mouse movement until
-                       // the user lets up on all mouse buttons
-                       GetMouse(&point, &buttons);
-                       snooze(25 * 1000);
-                               // sleep for 25 milliseconds to minimize CPU 
usage during loop
-               }
-
-               if (Bounds().Contains(point)) {
-                       // If selection stayed inside this view
-                       // (Some of the selection may be in the border area, 
which can be OK)
-                       BPoint last = ViewToImage(point);
-                       BPoint diff = last - sourcePoint;
-
-                       fSelectionBox.SetBounds(this,
-                               fSelectionBox.Bounds().OffsetByCopy(diff));
-               }
-
-               _AnimateSelection(true);
-       } else if (buttons == B_PRIMARY_MOUSE_BUTTON) {
-               _MergeSelection();
-                       // If there is an existing selection,
-                       // Make it part of the background image
-
+               _BeginDrag(point);
+       } else if (buttons == B_TERTIARY_MOUSE_BUTTON
+               || (buttons == B_PRIMARY_MOUSE_BUTTON
+                       && (modifiers() & (B_COMMAND_KEY | B_CONTROL_KEY)) != 
0)) {
                // begin new selection
                _SetHasSelection(true);
                fCreatingSelection = true;
-               SetMouseEventMask(B_POINTER_EVENTS);
+               SetMouseEventMask(B_POINTER_EVENTS, B_NO_POINTER_HISTORY);
                ConstrainToImage(point);
                fFirstPoint = point;
                fCopyFromRect.Set(point.x, point.y, point.x, point.y);
@@ -1358,9 +1239,9 @@
                Invalidate();
        } else if (buttons == B_SECONDARY_MOUSE_BUTTON) {
                _ShowPopUpMenu(ConvertToScreen(position));
-       } else if (buttons == B_TERTIARY_MOUSE_BUTTON) {
+       } else if (buttons == B_PRIMARY_MOUSE_BUTTON) {
                // move image in window
-               SetMouseEventMask(B_POINTER_EVENTS);
+               SetMouseEventMask(B_POINTER_EVENTS, B_NO_POINTER_HISTORY);
                fScrollingBitmap = true;
                fFirstPoint = ConvertToScreen(position);
        }
@@ -1397,14 +1278,13 @@
 
 
 void
-ShowImageView::MouseMoved(BPoint point, uint32 state, const BMessage *message)
+ShowImageView::MouseMoved(BPoint point, uint32 state, const BMessage* message)
 {
        fHideCursorCountDown = HIDE_CURSOR_DELAY_TIME;
-       if (fCreatingSelection) {
+       if (fCreatingSelection)
                _UpdateSelectionRect(point, false);
-       } else if (fScrollingBitmap) {
-               _ScrollBitmap();
-       }
+       else if (fScrollingBitmap)
+               _ScrollBitmap(point);
 }
 
 
@@ -1415,7 +1295,7 @@
                _UpdateSelectionRect(point, true);
                fCreatingSelection = false;
        } else if (fScrollingBitmap) {
-               _ScrollBitmap();
+               _ScrollBitmap(point);
                fScrollingBitmap = false;
        }
        _AnimateSelection(true);
@@ -1642,22 +1522,9 @@
 
 
 void
-ShowImageView::MessageReceived(BMessage *message)
+ShowImageView::MessageReceived(BMessage* message)
 {
        switch (message->what) {
-               case MSG_SELECTION_BITMAP:
-               {
-                       // In response to a B_SIMPLE_DATA message, a view will
-                       // send this message and expect a reply with a pointer 
to
-                       // the currently selected bitmap clip. Although this 
view
-                       // allocates the BBitmap * sent in the reply, it is only
-                       // to be used and deleted by the view that is being 
replied to.
-                       BMessage msg;
-                       msg.AddPointer("be:_bitmap_ptr", _CopySelection());
-                       message->SendReply(&msg);
-                       break;
-               }
-
                case B_SIMPLE_DATA:
                        if (message->WasDropped()) {
                                uint32 type;
@@ -1666,39 +1533,8 @@
                                if (ret == B_OK && type == B_REF_TYPE) {
                                        // If file was dropped, open it as the 
selection
                                        entry_ref ref;
-                                       if (message->FindRef("refs", 0, &ref) 
== B_OK) {
-                                               BPoint point = 
message->DropPoint();
-                                               point = 
ConvertFromScreen(point);
-                                               point = ViewToImage(point);
-                                               _SetSelection(&ref, point);
-                                       }
-                               } else {
-                                       // If a user drags a clip from another 
ShowImage window,
-                                       // request a BBitmap pointer to that 
clip, allocated by the
-                                       // other view, for use solely by this 
view, so that it can
-                                       // be dropped/pasted onto this view.
-                                       BMessenger retMsgr, localMsgr(this);
-                                       retMsgr = message->ReturnAddress();
-                                       if (retMsgr != localMsgr) {
-                                               BMessage msgReply;
-                                               
retMsgr.SendMessage(MSG_SELECTION_BITMAP, &msgReply);
-                                               BBitmap *bitmap = NULL;
-                                               if 
(msgReply.FindPointer("be:_bitmap_ptr",
-                                                       reinterpret_cast<void 
**>(&bitmap)) == B_OK) {
-                                                       BRect sourceRect;
-                                                       BPoint point, 
sourcePoint;
-                                                       
message->FindPoint("be:_source_point", &sourcePoint);
-                                                       
message->FindRect("be:_frame", &sourceRect);
-                                                       point = 
message->DropPoint();
-                                                       point.Set(point.x - 
(sourcePoint.x - sourceRect.left),
-                                                               point.y - 
(sourcePoint.y - sourceRect.top));
-                                                               // adjust drop 
point before scaling is factored in
-                                                       point = 
ConvertFromScreen(point);
-                                                       point = 
ViewToImage(point);
-
-                                                       _PasteBitmap(bitmap, 
point);
-                                               }
-                                       }
+                                       if (message->FindRef("refs", 0, &ref) 
== B_OK)
+                                               SetImage(&ref);
                                }
                        }
                        break;
@@ -1709,9 +1545,6 @@
                case B_MOUSE_WHEEL_CHANGED:
                        _MouseWheelChanged(message);
                        break;
-               case MSG_INVALIDATE:
-                       Invalidate();
-                       break;
 
                case kMsgPopUpMenuClosed:
                        fShowingPopUpMenu = false;
@@ -1817,130 +1650,6 @@
 
 
 void
-ShowImageView::_AddWhiteRect(BRect &rect)
-{
-       // Paint white rectangle, using rect, into the background image
-       BView view(fBitmap->Bounds(), NULL, B_FOLLOW_NONE, B_WILL_DRAW);
-       BBitmap *bitmap = new(nothrow) BBitmap(fBitmap->Bounds(), 
fBitmap->ColorSpace(), true);
-       if (bitmap == NULL || !bitmap->IsValid()) {
-               delete bitmap;
-               return;
-       }
-
-       if (bitmap->Lock()) {
-               bitmap->AddChild(&view);
-               view.DrawBitmap(fBitmap, fBitmap->Bounds());
-
-               view.FillRect(rect, B_SOLID_LOW);
-                       // draw white rect
-
-               view.Sync();
-               bitmap->RemoveChild(&view);
-               bitmap->Unlock();
-
-               _DeleteBitmap();
-               fBitmap = bitmap;
-
-               _SendMessageToWindow(MSG_MODIFIED);
-       } else
-               delete bitmap;
-}
-
-
-void
-ShowImageView::_RemoveSelection(bool toClipboard, bool neverCutBackground)
-{
-       if (!fHasSelection)
-               return;
-
-       BRect rect = fSelectionBox.Bounds();
-       bool cutBackground = (fSelectionBitmap) ? false : true;
-       BBitmap* selection = _CopySelection();
-       BBitmap* restore = NULL;
-
-       if (toClipboard)
-               CopySelectionToClipboard();
-
-       _SetHasSelection(false);
-
-       if (!neverCutBackground && cutBackground) {
-               // If the user hasn't dragged the selection,
-               // paint a white rectangle where the selection was
-               restore = _CopyFromRect(rect);
-               _AddWhiteRect(rect);
-       }
-
-       fUndo.SetTo(rect, restore, selection);
-       Invalidate();
-}
-
-
-void
-ShowImageView::Cut()
-{
-       // Copy the selection to the clipboard,
-       // then remove it
-       _RemoveSelection(true);
-}
-
-
-status_t
-ShowImageView::_PasteBitmap(BBitmap* bitmap, BPoint point)
-{
-       if (bitmap == NULL || !bitmap->IsValid())
-               return B_BAD_VALUE;
-
-       _MergeSelection();
-
-       fCopyFromRect = BRect();
-       BRect selectionRect = bitmap->Bounds().OffsetToCopy(B_ORIGIN);
-       _SetHasSelection(true);
-       delete fSelectionBitmap;
-       fSelectionBitmap = bitmap;
-
-       BRect offsetRect(selectionRect.OffsetToCopy(point));
-       if (fBitmap->Bounds().Intersects(offsetRect)) {
-               // Move the selection rectangle to desired origin,
-               // but only if the resulting selection rectangle
-               // intersects with the background bitmap rectangle
-               selectionRect = offsetRect;
-       }
-       fSelectionBox.SetBounds(this, selectionRect);
-
-       Invalidate();
-
-       return B_OK;
-}
-
-
-void
-ShowImageView::Paste()
-{
-       if (!be_clipboard->Lock())
-               return;
-
-       BMessage* data = be_clipboard->Data();
-       if (data != NULL) {
-               BMessage bitmapArchive;
-               if (data->FindMessage("image/bitmap", &bitmapArchive) == B_OK
-                       || data->FindMessage("image/x-be-bitmap", 
&bitmapArchive)
-                               == B_OK) {
-                       BBitmap* bitmap = dynamic_cast<BBitmap*>(
-                               BBitmap::Instantiate(&bitmapArchive));
-                       if (bitmap != NULL) {
-                               BPoint point;
-                               if (data->FindPoint("be:location", &point) != 
B_OK)
-                                       point = bitmap->Bounds().LeftTop();
-                               _PasteBitmap(bitmap, point);
-                       }
-               }
-       }
-
-       be_clipboard->Unlock();
-}
-
-
-void
 ShowImageView::SelectAll()
 {
        _SetHasSelection(true);
@@ -1954,10 +1663,11 @@
 void
 ShowImageView::ClearSelection()
 {
-       // Remove the selection,
-       // DON'T copy it to the clipboard
-       // or white out the selection
-       _RemoveSelection(false, true);
+       if (!fHasSelection)
+               return;
+
+       _SetHasSelection(false);
+       Invalidate();
 }
 
 
@@ -2207,11 +1917,14 @@
        Invalidate();
 
        // zoom to center if not otherwise specified
-       if (where.x == -1)
+       BPoint offset;
+       if (where.x == -1) {
                where.Set(Bounds().Width() / 2, Bounds().Height() / 2);
+               offset = where;
+               where += Bounds().LeftTop();
+       } else
+               offset = where - Bounds().LeftTop();
 
-       BPoint offset = where - Bounds().LeftTop();
-
        float oldZoom = fZoom;
        fZoom = zoom;
 

Modified: haiku/trunk/src/apps/showimage/ShowImageView.h
===================================================================
--- haiku/trunk/src/apps/showimage/ShowImageView.h      2010-10-23 23:35:08 UTC 
(rev 39104)
+++ haiku/trunk/src/apps/showimage/ShowImageView.h      2010-10-23 23:50:41 UTC 
(rev 39105)
@@ -86,8 +86,6 @@
                        void                            FixupScrollBars();
 
                        void                            Undo();
-                       void                            Cut();
-                       void                            Paste();
                        void                            SelectAll();
                        void                            ClearSelection();
 
@@ -137,15 +135,12 @@
                                kNumberOfOrientations,
                        };
 
-                       void                            _RemoveSelection(bool 
bToClipboard,
-                                                                       bool 
neverCutBackground = false);
                        void                            _SetHasSelection(bool 
bHasSelection);
                        void                            _AnimateSelection(bool 
a);
                        void                            
_SendMessageToWindow(BMessage *message);
                        void                            
_SendMessageToWindow(uint32 code);
                        void                            _Notify();
                        void                            _UpdateStatusText();
-                       void                            _AddWhiteRect(BRect& 
rect);
                        void                            _GetMergeRects(BBitmap* 
merge,
                                                                        BRect 
selection, BRect& srcRect,
                                                                        BRect& 
dstRect);
@@ -153,7 +148,6 @@
                                                                        BRect& 
dstRect);
                        status_t                        _SetSelection(const 
entry_ref* ref,
                                                                        BPoint 
point);
-                       status_t                        _PasteBitmap(BBitmap* 
bitmap, BPoint point);
                        void                            
_MergeWithBitmap(BBitmap* merge,
                                                                        BRect 
selection);
                        void                            _MergeSelection();
@@ -185,7 +179,6 @@
                                                                        bool 
rewind);
                        bool                            _ShowNextImage(bool 
next, bool rewind);
                        bool                            _FirstFile();
-                       BBitmap*                        _CopyFromRect(BRect 
srcRect);
                        BBitmap*                        _CopySelection(uchar 
alpha = 255,
                                                                        bool 
imageSize = true);
                        bool                            
_AddSupportedTypes(BMessage* message,
@@ -198,8 +191,7 @@
                                                                        const 
char* type,
                                                                        
translation_format* format);
                        void                            _HandleDrop(BMessage* 
message);
-                       void                            _ScrollBitmap();
-                       uint32                          _GetMouseButtons();
+                       void                            _ScrollBitmap(BPoint 
point);
                        void                            
_UpdateSelectionRect(BPoint point, bool final);
                        void                            _DrawBackground(BRect 
aroundFrame);
                        void                            _LayoutCaption(BFont& 
font, BPoint& textPos,

Modified: haiku/trunk/src/apps/showimage/ShowImageWindow.cpp
===================================================================
--- haiku/trunk/src/apps/showimage/ShowImageWindow.cpp  2010-10-23 23:35:08 UTC 
(rev 39104)
+++ haiku/trunk/src/apps/showimage/ShowImageWindow.cpp  2010-10-23 23:50:41 UTC 
(rev 39105)
@@ -297,14 +297,14 @@
                        MSG_SCALE_BILINEAR, 0, 0, this);
 
                menu->AddSeparatorItem();
-       }
 
-       _AddItemMenu(menu, B_TRANSLATE("Shrink to window"),
-               MSG_SHRINK_TO_WINDOW, 0, 0, this);
-       _AddItemMenu(menu, B_TRANSLATE("Zoom to window"),
-               MSG_ZOOM_TO_WINDOW, 0, 0, this);
+               _AddItemMenu(menu, B_TRANSLATE("Shrink to window"),
+                       MSG_SHRINK_TO_WINDOW, 0, 0, this);
+               _AddItemMenu(menu, B_TRANSLATE("Zoom to window"),
+                       MSG_ZOOM_TO_WINDOW, 0, 0, this);
 
-       menu->AddSeparatorItem();
+               menu->AddSeparatorItem();
+       }
 
        _AddItemMenu(menu, B_TRANSLATE("Full screen"),
                MSG_FULL_SCREEN, B_ENTER, 0, this);
@@ -369,12 +369,10 @@
        menu = new BMenu(B_TRANSLATE("Edit"));
        _AddItemMenu(menu, B_TRANSLATE("Undo"), B_UNDO, 'Z', 0, this, false);
        menu->AddSeparatorItem();
-       _AddItemMenu(menu, B_TRANSLATE("Cut"), B_CUT, 'X', 0, this, false);
        _AddItemMenu(menu, B_TRANSLATE("Copy"), B_COPY, 'C', 0, this, false);
-       _AddItemMenu(menu, B_TRANSLATE("Paste"), B_PASTE, 'V', 0, this, false);
-       _AddItemMenu(menu, B_TRANSLATE("Clear"),
-               MSG_CLEAR_SELECT, 0, 0, this, false);
        menu->AddSeparatorItem();
+       _AddItemMenu(menu, B_TRANSLATE("Clear selection"),
+               MSG_CLEAR_SELECT, 0, 0, this, false);
        _AddItemMenu(menu, B_TRANSLATE("Select all"),
                MSG_SELECT_ALL, 'A', 0, this);
        bar->AddItem(menu);
@@ -710,18 +708,10 @@
                        fImageView->Undo();
                        break;
 
-               case B_CUT:
-                       fImageView->Cut();
-                       break;
-
                case B_COPY:
                        fImageView->CopySelectionToClipboard();
                        break;
 
-               case B_PASTE:
-                       fImageView->Paste();
-                       break;
-
                case MSG_CLEAR_SELECT:
                        fImageView->ClearSelection();
                        break;


Other related posts: