Author: mir3x
Date: Tue Nov 22 20:40:37 2016
New Revision: 34612

URL: http://svn.gna.org/viewcvs/freeciv?rev=34612&view=rev
Log:
Qt client - city dialog - allow scrolling using wheel without using scrollbar

See patch #8014


Modified:
    branches/S2_6/client/gui-qt/citydlg.cpp
    branches/S2_6/client/gui-qt/citydlg.h

Modified: branches/S2_6/client/gui-qt/citydlg.cpp
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_6/client/gui-qt/citydlg.cpp?rev=34612&r1=34611&r2=34612&view=diff
==============================================================================
--- branches/S2_6/client/gui-qt/citydlg.cpp     (original)
+++ branches/S2_6/client/gui-qt/citydlg.cpp     Tue Nov 22 20:40:37 2016
@@ -433,6 +433,23 @@
 }
 
 /****************************************************************************
+  Mouse wheel event - send it to scrollbar
+****************************************************************************/
+void impr_info::wheelEvent(QWheelEvent *event)
+{
+  QPoint p;
+
+  p = parentWidget()->parentWidget()->pos();
+  p = mapToGlobal(p);
+  QWheelEvent new_event(QPoint(5, 5), p + QPoint(5,5), event->pixelDelta(),
+                        event->angleDelta(),
+                        event->angleDelta().y(),
+                        Qt::Horizontal,  event->buttons(),
+                        event->modifiers(), event->phase(), event->source());
+  QApplication::sendEvent(parentWidget(), &new_event);
+}
+
+/****************************************************************************
   Updates list of improvements
 ****************************************************************************/
 void impr_info::update_buildings()
@@ -462,6 +479,24 @@
   setUpdatesEnabled(true);
   layout->update();
   updateGeometry();
+}
+
+/****************************************************************************
+  Mouse wheel event - send it to scrollbar
+****************************************************************************/
+void impr_item::wheelEvent(QWheelEvent *event)
+{
+  QPoint p;
+
+  p = parentWidget()->parentWidget()->pos();
+  p = mapToGlobal(p);
+  QWheelEvent new_event(QPoint(5, 5), p + QPoint(5,5), event->pixelDelta(),
+                        event->angleDelta(),
+                        event->angleDelta().y(),
+                        Qt::Horizontal,  event->buttons(),
+                        event->modifiers(), event->phase(), event->source());
+  QApplication::sendEvent(parentWidget()->parentWidget(),
+                          &new_event);
 }
 
 /****************************************************************************
@@ -834,6 +869,25 @@
 }
 
 /****************************************************************************
+  Mouse wheel event - send it to scrollbar
+****************************************************************************/
+void unit_item::wheelEvent(QWheelEvent *event)
+{
+  QPoint p;
+
+  p = parentWidget()->parentWidget()->pos();
+  p = mapToGlobal(p);
+  QWheelEvent new_event(QPoint(5, 5), p + QPoint(5,5), event->pixelDelta(),
+                        event->angleDelta(),
+                        event->angleDelta().y(),
+                        Qt::Horizontal,  event->buttons(),
+                        event->modifiers(), event->phase(), event->source());
+  QApplication::sendEvent(parentWidget()->parentWidget(),
+                          &new_event);
+}
+
+
+/****************************************************************************
   Mouse press event -activates unit and closes dialog
 ****************************************************************************/
 void unit_item::mousePressEvent(QMouseEvent *event)
@@ -895,6 +949,22 @@
   setLayout(layout);
 }
 
+/****************************************************************************
+  Mouse wheel event - send it to scrollbar
+****************************************************************************/
+void unit_info::wheelEvent(QWheelEvent *event)
+{
+  QPoint p;
+
+  p = parentWidget()->parentWidget()->pos();
+  p = mapToGlobal(p);
+  QWheelEvent new_event(QPoint(5, 5), p + QPoint(5,5), event->pixelDelta(),
+                        event->angleDelta(),
+                        event->angleDelta().y(),
+                        Qt::Horizontal,  event->buttons(),
+                        event->modifiers(), event->phase(), event->source());
+  QApplication::sendEvent(parentWidget(), &new_event);
+}
 
 /****************************************************************************
   Updates units

Modified: branches/S2_6/client/gui-qt/citydlg.h
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_6/client/gui-qt/citydlg.h?rev=34612&r1=34611&r2=34612&view=diff
==============================================================================
--- branches/S2_6/client/gui-qt/citydlg.h       (original)
+++ branches/S2_6/client/gui-qt/citydlg.h       Tue Nov 22 20:40:37 2016
@@ -140,6 +140,7 @@
   void unload_all();
 
 protected:
+  void wheelEvent(QWheelEvent *event);
   void mousePressEvent(QMouseEvent *event);
   void leaveEvent(QEvent *event);
   void enterEvent(QEvent *event);
@@ -165,6 +166,8 @@
 
 private:
   bool supports;
+protected:
+  void wheelEvent(QWheelEvent *event);
 };
 
 
@@ -186,6 +189,7 @@
   struct city *pcity;
 
 protected:
+  void wheelEvent(QWheelEvent *event);
   void mouseDoubleClickEvent(QMouseEvent *event);
   void leaveEvent(QEvent *event);
   void enterEvent(QEvent *event);
@@ -207,6 +211,8 @@
   void clear_layout();
   QHBoxLayout *layout;
   QList<impr_item *> impr_list;
+protected:
+  void wheelEvent(QWheelEvent *event);
 };
 
 /****************************************************************************


_______________________________________________
Freeciv-commits mailing list
Freeciv-commits@gna.org
https://mail.gna.org/listinfo/freeciv-commits

Reply via email to