Index: src/BufferView.cpp
===================================================================
--- src/BufferView.cpp	(revision 35801)
+++ src/BufferView.cpp	(working copy)
@@ -220,7 +220,8 @@
 	Private(BufferView & bv): wh_(0), cursor_(bv),
 		anchor_pit_(0), anchor_ypos_(0),
 		inlineCompletionUniqueChars_(0),
-		last_inset_(0), mouse_position_cache_(),
+		last_inset_(0), clickableinset_(false), 
+		mouse_position_cache_(),
 		bookmark_edit_position_(-1), gui_(0)
 	{}
 
@@ -263,6 +264,8 @@
 	  * Not owned, so don't delete.
 	  */
 	Inset * last_inset_;
+	/// are we hovering something that we can click
+	bool clickableinset_;
 
 	/// position of the mouse at the time of the last mouse move
 	/// This is used to update the hovering status of inset in
@@ -1958,9 +1961,19 @@
 
 void BufferView::updateHoveredInset() const
 {
+	d->clickableinset_ = false;
+
 	// Get inset under mouse, if there is one.
-	Inset const * covering_inset = getCoveringInset(buffer_.text(),
-			d->mouse_position_cache_.x_, d->mouse_position_cache_.y_);
+	int const x = d->mouse_position_cache_.x_;
+	int const y = d->mouse_position_cache_.y_;
+	Inset const * covering_inset = getCoveringInset(buffer_.text(), x, y);
+
+	if (covering_inset && covering_inset->asInsetCollapsable()) {
+		FuncRequest fr = FuncRequest(LFUN_NOACTION, x, y, mouse_button::none);
+		d->clickableinset_ = static_cast<InsetCollapsable const *>(covering_inset)->hitButton(fr);
+	} else if (covering_inset && covering_inset->hasSettings())
+		d->clickableinset_ = true;
+
 	if (covering_inset == d->last_inset_)
 		// Same inset, no need to do anything...
 		return;
@@ -2888,4 +2901,10 @@
 	}
 }
 
+
+bool BufferView::clickableInset() const
+{ 
+	return d->clickableinset_; 
+}
+
 } // namespace lyx
Index: src/BufferView.h
===================================================================
--- src/BufferView.h	(revision 35801)
+++ src/BufferView.h	(working copy)
@@ -311,6 +311,8 @@
 	void editInset(std::string const & name, Inset * inset);
 	///
 	void clearLastInset(Inset * inset) const;
+	/// Is the mouse hovering a clickable inset or element?
+	bool clickableInset() const;
 
 private:
 	/// noncopyable
Index: src/frontends/qt4/GuiWorkArea.cpp
===================================================================
--- src/frontends/qt4/GuiWorkArea.cpp	(revision 35801)
+++ src/frontends/qt4/GuiWorkArea.cpp	(working copy)
@@ -527,6 +527,9 @@
 		// Show the cursor immediately after any operation
 		startBlinkingCursor();
 	}
+
+	setCursorShape(buffer_view_->clickableInset() 
+		? Qt::PointingHandCursor : Qt::IBeamCursor);
 }
 
 
