]> git.saurik.com Git - wxWidgets.git/commitdiff
added EVT_HEADER_DRAGGING_CANCELLED event sent when either resizing or reordering...
authorVadim Zeitlin <vadim@wxwidgets.org>
Wed, 10 Dec 2008 16:05:21 +0000 (16:05 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Wed, 10 Dec 2008 16:05:21 +0000 (16:05 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57233 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/headerctrl.h
interface/wx/headerctrl.h
src/common/headerctrlcmn.cpp
src/generic/datavgen.cpp
src/generic/headerctrlg.cpp
src/msw/headerctrl.cpp

index 322ac6134d129d275f08a8479db1bea9c32f026c..0e998b79fbfe51e3516f9c5187f763b7ee62fc4f 100644 (file)
@@ -151,7 +151,7 @@ private:
 //               control, see wxHeaderCtrlSimple for a standalone version
 // ----------------------------------------------------------------------------
 
-#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__)
+#if 0// defined(__WXMSW__) && !defined(__WXUNIVERSAL__)
     #include "wx/msw/headerctrl.h"
 #else
     #define wxHAS_GENERIC_HEADERCTRL
@@ -288,8 +288,7 @@ public:
         : wxNotifyEvent(commandType, winid),
           m_col(-1),
           m_width(0),
-          m_order(static_cast<unsigned int>(-1)),
-          m_cancelled(false)
+          m_order(static_cast<unsigned int>(-1))
     {
     }
 
@@ -297,8 +296,7 @@ public:
         : wxNotifyEvent(event),
           m_col(event.m_col),
           m_width(event.m_width),
-          m_order(event.m_order),
-          m_cancelled(event.m_cancelled)
+          m_order(event.m_order)
     {
     }
 
@@ -314,10 +312,6 @@ public:
     unsigned int GetNewOrder() const { return m_order; }
     void SetNewOrder(unsigned int order) { m_order = order; }
 
-    // was the drag operation cancelled or did it complete successfully?
-    bool IsCancelled() const { return m_cancelled; }
-    void SetCancelled() { m_cancelled = true; }
-
     virtual wxEvent *Clone() const { return new wxHeaderCtrlEvent(*this); }
 
 protected:
@@ -330,9 +324,6 @@ protected:
     // the new column position for end reorder event
     unsigned int m_order;
 
-    // was the drag operation cancelled?
-    bool m_cancelled;
-
 private:
     DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxHeaderCtrlEvent)
 };
@@ -355,6 +346,8 @@ extern WXDLLIMPEXP_CORE const wxEventType wxEVT_COMMAND_HEADER_END_RESIZE;
 extern WXDLLIMPEXP_CORE const wxEventType wxEVT_COMMAND_HEADER_BEGIN_REORDER;
 extern WXDLLIMPEXP_CORE const wxEventType wxEVT_COMMAND_HEADER_END_REORDER;
 
+extern WXDLLIMPEXP_CORE const wxEventType wxEVT_COMMAND_HEADER_DRAGGING_CANCELLED;
+
 typedef void (wxEvtHandler::*wxHeaderCtrlEventFunction)(wxHeaderCtrlEvent&);
 
 #define wxHeaderCtrlEventHandler(func) \
@@ -381,4 +374,6 @@ typedef void (wxEvtHandler::*wxHeaderCtrlEventFunction)(wxHeaderCtrlEvent&);
 #define EVT_HEADER_BEGIN_REORDER(id, fn) wx__DECLARE_HEADER_EVT(BEGIN_REORDER, id, fn)
 #define EVT_HEADER_END_REORDER(id, fn) wx__DECLARE_HEADER_EVT(END_REORDER, id, fn)
 
+#define EVT_HEADER_DRAGGING_CANCELLED(id, fn) wx__DECLARE_HEADER_EVT(DRAGGING_CANCELLED, id, fn)
+
 #endif // _WX_HEADERCTRL_H_
index a05fff563d50d454785f383231a3fc00063c3859..ce8dd8b2ca2283d81bac047a28eef657d87acf69 100644 (file)
             with the specified index (this can only happen for the columns for
             which wxHeaderColumn::IsResizeable() returns true). The event can
             be vetoed to prevent the column from being resized. If it isn't,
-            the resizing and end resize events will be generated later.
+            the resizing and end resize (or dragging cancelled) events will be
+            generated later.
         @event{EVT_HEADER_RESIZING(id, func)}
             The user is dragging the column with the specified index resizing
             it and its current width is wxHeaderCtrlEvent::GetWidth(). The
             event can be vetoed to stop the dragging operation completely at
             any time.
         @event{EVT_HEADER_END_RESIZE(id, func)}
-            Either the user stopped dragging the column by releasing the mouse
-            or the resizing was cancelled. If wxHeaderCtrlEvent::IsCancelled()
-            returns @true, nothing should be done, otherwise the column should
-            normally be resized to the value of wxHeaderCtrlEvent::GetWidth().
+            The user stopped dragging the column by releasing the mouse. The
+            column should normally be resized to the value of
+            wxHeaderCtrlEvent::GetWidth().
 
         @event{EVT_HEADER_BEGIN_REORDER(id, func)}
             The user started to drag the column with the specified index (this
             event can be vetoed to prevent the column from being reordered,
             otherwise the end reorder message will be generated later.
         @event{EVT_HEADER_END_REORDER(id, func)}
-            Either the user dropped the column in its new location or the
-            drag operation was cancelled. If wxHeaderCtrlEvent::IsCancelled()
-            returns @true, nothing should be done, otherwise the event can be
+            The user dropped the column in its new location. The event can be
             vetoed to prevent the column from being placed at the new position
             or handled to update the display of the data in the associated
             control to match the new column location (available from
             wxHeaderCtrlEvent::GetNewOrder()).
+
+        @event{EVT_HEADER_DRAGGING_CANCELLED(id, func)}
+            The resizing or reordering operation currently in progress was
+            cancelled. This can happen if the user pressed Esc key while
+            dragging the mouse or the mouse capture was lost for some other
+            reason. You only need to handle this event if your application
+            entered into some modal mode when resizing or reordering began, in
+            which case it should handle this event in addition to the matching
+            end resizing or reordering ones.
     @endEventTable
 
     @library{wxcore}
@@ -509,11 +516,4 @@ public:
         new column position in wxHeaderCtrl::GetColumnsOrder().
      */
     unsigned int GetNewOrder() const;
-
-    /**
-        Return @true if the drag operation was cancelled.
-
-        This method can only be called for the end drag event.
-     */
-    bool IsCancelled() const;
 };
index 02a18b889e2141d779ab3b7ce4ac86e2a7a4705f..0199090a84129b786fff73558398ab30672e39a9 100644 (file)
@@ -247,3 +247,5 @@ const wxEventType wxEVT_COMMAND_HEADER_END_RESIZE = wxNewEventType();
 
 const wxEventType wxEVT_COMMAND_HEADER_BEGIN_REORDER = wxNewEventType();
 const wxEventType wxEVT_COMMAND_HEADER_END_REORDER = wxNewEventType();
+
+const wxEventType wxEVT_COMMAND_HEADER_DRAGGING_CANCELLED = wxNewEventType();
index b5f7c321e794351f527d20f94e56949ce6750a93..b15e2eb4d480d7d38111bbc7a31f9f9699e46523 100644 (file)
@@ -176,12 +176,9 @@ private:
 
     void OnEndResize(wxHeaderCtrlEvent& event)
     {
-        if ( !event.IsCancelled() )
-        {
-            const unsigned col = event.GetColumn();
-            GetColumn(col).SetWidth(event.GetWidth());
-            GetOwner()->OnColumnChange(col);
-        }
+        const unsigned col = event.GetColumn();
+        GetColumn(col).SetWidth(event.GetWidth());
+        GetOwner()->OnColumnChange(col);
     }
 
     void OnEndReorder(wxHeaderCtrlEvent& event)
index 0887b94cfca63532f3b951a0095e464de38727b6..9c4aaeb89a7c23a1482b9acc050ecb940e63adad 100644 (file)
@@ -300,17 +300,19 @@ void wxHeaderCtrl::EndResizing(int xPhysical)
 
     EndDragging();
 
+    const bool cancelled = xPhysical == -1;
+
     // if dragging was cancelled we must have already lost the mouse capture so
     // don't try to release it
-    if ( xPhysical != -1 )
+    if ( !cancelled )
         ReleaseMouse();
 
-    wxHeaderCtrlEvent event(wxEVT_COMMAND_HEADER_END_RESIZE, GetId());
+    wxHeaderCtrlEvent event(cancelled ? wxEVT_COMMAND_HEADER_DRAGGING_CANCELLED
+                                      : wxEVT_COMMAND_HEADER_END_RESIZE,
+                            GetId());
     event.SetEventObject(this);
     event.SetColumn(m_colBeingResized);
-    if ( xPhysical == -1 )
-        event.SetCancelled();
-    else
+    if ( !cancelled )
         event.SetWidth(ConstrainByMinWidth(m_colBeingResized, xPhysical));
 
     GetEventHandler()->ProcessEvent(event);
index 2e2f75482b788bbcb07cd800fefdfa695ac09f77..5388eca4e1e112a015450667f2820698ae7c21e4 100644 (file)
@@ -325,7 +325,6 @@ bool wxHeaderCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result)
     int idx = nmhdr->iItem;
     int width = 0;
     int order = -1;
-    bool cancelled = false;
     bool veto = false;
     const UINT code = nmhdr->hdr.code;
     switch ( code )
@@ -432,7 +431,7 @@ bool wxHeaderCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result)
             break;
 
         case NM_RELEASEDCAPTURE:
-            cancelled = true;
+            evtType = wxEVT_COMMAND_HEADER_DRAGGING_CANCELLED;
             break;
     }
 
@@ -446,8 +445,6 @@ bool wxHeaderCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result)
         event.SetWidth(width);
         if ( order != -1 )
             event.SetNewOrder(order);
-        if ( cancelled )
-            event.SetCancelled();
 
         if ( GetEventHandler()->ProcessEvent(event) )
         {