The closedhand icon is displayed in the preview window when moving the observed frame area. The CursorManager class has been used for this purpose. Patch optimised by Hombre (issue 1060).

This commit is contained in:
Philippe Hupe
2011-10-26 19:44:54 +02:00
parent a6e5841440
commit 9611ea90cb
2 changed files with 6 additions and 19 deletions

View File

@@ -19,27 +19,17 @@
#include <previewwindow.h> #include <previewwindow.h>
#include <guiutils.h> #include <guiutils.h>
#include <imagearea.h> #include <imagearea.h>
#include <cursormanager.h>
PreviewWindow::PreviewWindow () : previewHandler(NULL), mainCropWin(NULL),cCropMoving(NULL),cNormal(NULL), isMoving(false), imageArea(NULL) { PreviewWindow::PreviewWindow () : previewHandler(NULL), mainCropWin(NULL), isMoving(false), imageArea(NULL) {
rconn = signal_size_allocate().connect( sigc::mem_fun(*this, &PreviewWindow::on_resized) ); rconn = signal_size_allocate().connect( sigc::mem_fun(*this, &PreviewWindow::on_resized) );
} }
PreviewWindow::~PreviewWindow () {
if( cCropMoving )
delete cCropMoving;
if( cNormal )
delete cNormal;
}
void PreviewWindow::on_realize () { void PreviewWindow::on_realize () {
Gtk::DrawingArea::on_realize (); Gtk::DrawingArea::on_realize ();
add_events(Gdk::EXPOSURE_MASK | Gdk::POINTER_MOTION_MASK | Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK | Gdk::SCROLL_MASK); add_events(Gdk::EXPOSURE_MASK | Gdk::POINTER_MOTION_MASK | Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK | Gdk::SCROLL_MASK);
cCropMoving = new Gdk::Cursor (Gdk::FLEUR);
cNormal = new Gdk::Cursor (Gdk::ARROW);
} }
void PreviewWindow::getObservedFrameArea (int& x, int& y, int& w, int& h) { void PreviewWindow::getObservedFrameArea (int& x, int& y, int& w, int& h) {
@@ -169,9 +159,9 @@ bool PreviewWindow::on_motion_notify_event (GdkEventMotion* event) {
if (isMoving) if (isMoving)
mainCropWin->remoteMove ((event->x - press_x)/zoom, (event->y - press_y)/zoom); mainCropWin->remoteMove ((event->x - press_x)/zoom, (event->y - press_y)/zoom);
else if (inside && !moreInside) else if (inside && !moreInside)
get_window()->set_cursor (*cCropMoving); cursorManager.setCursor (get_window(), CSClosedHand);
else else
get_window()->set_cursor (*cNormal); cursorManager.setCursor (get_window(), CSArrow);
return true; return true;
} }
@@ -196,7 +186,7 @@ bool PreviewWindow::on_button_press_event (GdkEventButton* event) {
press_x = event->x; press_x = event->x;
press_y = event->y; press_y = event->y;
} }
get_window()->set_cursor (*cCropMoving); cursorManager.setCursor (get_window(), CSClosedHand);
} }
return true; return true;
} }
@@ -208,7 +198,7 @@ bool PreviewWindow::on_button_release_event (GdkEventButton* event) {
if (isMoving) { if (isMoving) {
isMoving = false; isMoving = false;
get_window()->set_cursor (*cNormal); cursorManager.setCursor (get_window(), CSArrow);
mainCropWin->remoteMoveReady (); mainCropWin->remoteMoveReady ();
} }
return true; return true;

View File

@@ -34,8 +34,6 @@ class PreviewWindow : public Gtk::DrawingArea, public PreviewListener, public Cr
ImageArea* imageArea; ImageArea* imageArea;
int imgX, imgY, imgW, imgH; int imgX, imgY, imgW, imgH;
double zoom; double zoom;
Gdk::Cursor* cCropMoving;
Gdk::Cursor* cNormal;
int press_x, press_y; int press_x, press_y;
bool isMoving; bool isMoving;
@@ -44,7 +42,6 @@ class PreviewWindow : public Gtk::DrawingArea, public PreviewListener, public Cr
public: public:
PreviewWindow (); PreviewWindow ();
~PreviewWindow ();
void setPreviewHandler (PreviewHandler* ph); void setPreviewHandler (PreviewHandler* ph);
void setImageArea (ImageArea* ia); void setImageArea (ImageArea* ia);