{
CaptureMouse();
- // Required for X to specify that
- // that we wish to draw on top of all windows
- // - and we optimise by specifying the area
- // for creating the overlap window.
- wxScreenDC::StartDrawingOnTop(this);
-
- // We don't say we're dragging yet; we leave that
- // decision for the Dragging() branch, to ensure
- // the user has dragged a little bit.
- m_dragMode = wxSPLIT_DRAG_LEFT_DOWN;
- m_firstX = x;
- m_firstY = y;
+ m_dragMode = wxSPLIT_DRAG_DRAGGING;
+
+ DrawSashTracker(x, y);
+ m_oldX = x;
+ m_oldY = y;
+ return;
}
}
- else if ( event.LeftUp() && m_dragMode == wxSPLIT_DRAG_LEFT_DOWN )
- {
- // Wasn't a proper drag
- ReleaseMouse();
- wxScreenDC::EndDrawingOnTop();
- m_dragMode = wxSPLIT_DRAG_NONE;
-
- SetCursor(*wxSTANDARD_CURSOR);
- }
else if (event.LeftUp() && m_dragMode == wxSPLIT_DRAG_DRAGGING)
{
// We can stop dragging now and see what we've got.
m_dragMode = wxSPLIT_DRAG_NONE;
ReleaseMouse();
+
// Erase old tracker
DrawSashTracker(m_oldX, m_oldY);
- // End drawing on top (frees the window used for drawing
- // over the screen)
- wxScreenDC::EndDrawingOnTop();
-
int w, h;
GetClientSize(&w, &h);
if ( m_splitMode == wxSPLIT_VERTICAL )
m_sashPosition = x;
}
}
- else
+ else // m_splitMode == wxSPLIT_VERTICAL
{
if ( !OnSashPositionChange(y) )
return;
{
m_sashPosition = y;
}
- }
+ } // m_splitMode == wxSPLIT_VERTICAL
SizeWindows();
- }
+ } // left up && dragging
else if (event.Moving() && !event.Dragging())
{
// Just change the cursor if required
SetCursor(*wxSTANDARD_CURSOR);
}
}
- else if ( (event.Dragging() && (m_dragMode == wxSPLIT_DRAG_DRAGGING)) ||
- (event.Dragging() && SashHitTest(x, y, 4)) )
+ else if (event.Dragging() && (m_dragMode == wxSPLIT_DRAG_DRAGGING))
{
- if ( m_splitMode == wxSPLIT_VERTICAL )
- {
- SetCursor(*m_sashCursorWE);
- }
- else
- {
- SetCursor(*m_sashCursorNS);
- }
-
- // Detect that this is really a drag: we've moved more than 1 pixel either way
- if ((m_dragMode == wxSPLIT_DRAG_LEFT_DOWN) &&
-// (abs((int)x - m_firstX) > 1 || abs((int)y - m_firstY) > 1) )
- (abs((int)x - m_firstX) > 0 || abs((int)y - m_firstY) > 1) )
- {
- m_dragMode = wxSPLIT_DRAG_DRAGGING;
- DrawSashTracker(x, y);
- }
- else
- {
- if ( m_dragMode == wxSPLIT_DRAG_DRAGGING )
- {
- // Erase old tracker
- DrawSashTracker(m_oldX, m_oldY);
+ // Erase old tracker
+ DrawSashTracker(m_oldX, m_oldY);
- // Draw new one
- DrawSashTracker(x, y);
- }
- }
+ // Draw new one
+ DrawSashTracker(x, y);
+
m_oldX = x;
m_oldY = y;
}
{
OnDoubleClickSash(x, y);
}
- else
- {
- }
}
void wxSplitterWindow::OnSize(wxSizeEvent& WXUNUSED(event))
while (node)
{
wxWindow *child = (wxWindow*)node->Data();
- if ((child->m_x <= event.m_x) &&
+ if ((child->m_wxwindow == (GtkWidget*) NULL) &&
+ (child->m_x <= event.m_x) &&
(child->m_y <= event.m_y) &&
(child->m_x+child->m_width >= event.m_x) &&
(child->m_y+child->m_height >= event.m_y))
while (node)
{
wxWindow *child = (wxWindow*)node->Data();
- if ((child->m_x <= event.m_x) &&
+ if ((child->m_wxwindow == (GtkWidget*) NULL) &&
+ (child->m_x <= event.m_x) &&
(child->m_y <= event.m_y) &&
(child->m_x+child->m_width >= event.m_x) &&
(child->m_y+child->m_height >= event.m_y))
if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
printf( win->GetClassInfo()->GetClassName() );
printf( ".\n" );
-*/
+*/
wxMouseEvent event( wxEVT_MOTION );
event.m_shiftDown = (gdk_event->state & GDK_SHIFT_MASK);
while (node)
{
wxWindow *child = (wxWindow*)node->Data();
- if ((child->m_x <= event.m_x) &&
+ if ((child->m_wxwindow == (GtkWidget*) NULL) &&
+ (child->m_x <= event.m_x) &&
(child->m_y <= event.m_y) &&
(child->m_x+child->m_width >= event.m_x) &&
(child->m_y+child->m_height >= event.m_y))
wxMouseEvent event( wxEVT_ENTER_WINDOW );
event.SetEventObject( win );
-
+
+ int x = 0;
+ int y = 0;
+ GdkModifierType state = (GdkModifierType)0;
+
+ gdk_window_get_pointer( widget->window, &x, &y, &state );
+
+ event.m_shiftDown = (state & GDK_SHIFT_MASK);
+ event.m_controlDown = (state & GDK_CONTROL_MASK);
+ event.m_altDown = (state & GDK_MOD1_MASK);
+ event.m_metaDown = (state & GDK_MOD2_MASK);
+ event.m_leftDown = (state & GDK_BUTTON1_MASK);
+ event.m_middleDown = (state & GDK_BUTTON2_MASK);
+ event.m_rightDown = (state & GDK_BUTTON3_MASK);
+
+ event.m_x = (long)x;
+ event.m_y = (long)y;
+
if (win->GetEventHandler()->ProcessEvent( event ))
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "enter_notify_event" );
wxMouseEvent event( wxEVT_LEAVE_WINDOW );
event.SetEventObject( win );
+ int x = 0;
+ int y = 0;
+ GdkModifierType state = (GdkModifierType)0;
+
+ gdk_window_get_pointer( widget->window, &x, &y, &state );
+
+ event.m_shiftDown = (state & GDK_SHIFT_MASK);
+ event.m_controlDown = (state & GDK_CONTROL_MASK);
+ event.m_altDown = (state & GDK_MOD1_MASK);
+ event.m_metaDown = (state & GDK_MOD2_MASK);
+ event.m_leftDown = (state & GDK_BUTTON1_MASK);
+ event.m_middleDown = (state & GDK_BUTTON2_MASK);
+ event.m_rightDown = (state & GDK_BUTTON3_MASK);
+
+ event.m_x = (long)x;
+ event.m_y = (long)y;
+
if (win->GetEventHandler()->ProcessEvent( event ))
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "leave_notify_event" );
while (node)
{
wxWindow *child = (wxWindow*)node->Data();
- if ((child->m_x <= event.m_x) &&
+ if ((child->m_wxwindow == (GtkWidget*) NULL) &&
+ (child->m_x <= event.m_x) &&
(child->m_y <= event.m_y) &&
(child->m_x+child->m_width >= event.m_x) &&
(child->m_y+child->m_height >= event.m_y))
while (node)
{
wxWindow *child = (wxWindow*)node->Data();
- if ((child->m_x <= event.m_x) &&
+ if ((child->m_wxwindow == (GtkWidget*) NULL) &&
+ (child->m_x <= event.m_x) &&
(child->m_y <= event.m_y) &&
(child->m_x+child->m_width >= event.m_x) &&
(child->m_y+child->m_height >= event.m_y))
if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
printf( win->GetClassInfo()->GetClassName() );
printf( ".\n" );
-*/
+*/
wxMouseEvent event( wxEVT_MOTION );
event.m_shiftDown = (gdk_event->state & GDK_SHIFT_MASK);
while (node)
{
wxWindow *child = (wxWindow*)node->Data();
- if ((child->m_x <= event.m_x) &&
+ if ((child->m_wxwindow == (GtkWidget*) NULL) &&
+ (child->m_x <= event.m_x) &&
(child->m_y <= event.m_y) &&
(child->m_x+child->m_width >= event.m_x) &&
(child->m_y+child->m_height >= event.m_y))
wxMouseEvent event( wxEVT_ENTER_WINDOW );
event.SetEventObject( win );
-
+
+ int x = 0;
+ int y = 0;
+ GdkModifierType state = (GdkModifierType)0;
+
+ gdk_window_get_pointer( widget->window, &x, &y, &state );
+
+ event.m_shiftDown = (state & GDK_SHIFT_MASK);
+ event.m_controlDown = (state & GDK_CONTROL_MASK);
+ event.m_altDown = (state & GDK_MOD1_MASK);
+ event.m_metaDown = (state & GDK_MOD2_MASK);
+ event.m_leftDown = (state & GDK_BUTTON1_MASK);
+ event.m_middleDown = (state & GDK_BUTTON2_MASK);
+ event.m_rightDown = (state & GDK_BUTTON3_MASK);
+
+ event.m_x = (long)x;
+ event.m_y = (long)y;
+
if (win->GetEventHandler()->ProcessEvent( event ))
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "enter_notify_event" );
wxMouseEvent event( wxEVT_LEAVE_WINDOW );
event.SetEventObject( win );
+ int x = 0;
+ int y = 0;
+ GdkModifierType state = (GdkModifierType)0;
+
+ gdk_window_get_pointer( widget->window, &x, &y, &state );
+
+ event.m_shiftDown = (state & GDK_SHIFT_MASK);
+ event.m_controlDown = (state & GDK_CONTROL_MASK);
+ event.m_altDown = (state & GDK_MOD1_MASK);
+ event.m_metaDown = (state & GDK_MOD2_MASK);
+ event.m_leftDown = (state & GDK_BUTTON1_MASK);
+ event.m_middleDown = (state & GDK_BUTTON2_MASK);
+ event.m_rightDown = (state & GDK_BUTTON3_MASK);
+
+ event.m_x = (long)x;
+ event.m_y = (long)y;
+
if (win->GetEventHandler()->ProcessEvent( event ))
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "leave_notify_event" );