]> git.saurik.com Git - wxWidgets.git/commitdiff
minor fixes
authorRobert Roebling <robert@roebling.de>
Thu, 6 May 1999 14:30:49 +0000 (14:30 +0000)
committerRobert Roebling <robert@roebling.de>
Thu, 6 May 1999 14:30:49 +0000 (14:30 +0000)
  cursor fix for splitter window

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2352 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/gtk/notebook.h
include/wx/gtk1/notebook.h
src/common/event.cpp
src/generic/splitter.cpp
src/gtk/notebook.cpp
src/gtk/win_gtk.c
src/gtk/window.cpp
src/gtk1/notebook.cpp
src/gtk1/win_gtk.c
src/gtk1/window.cpp

index 34e2906a9c61460fedecee7ffae41075f8e6d0c1..c23be2fe212584cd241521ca1c329426a9ca1964 100644 (file)
@@ -164,6 +164,9 @@ public:
   bool DoPhase(int phase);
   void ApplyWidgetStyle();
 
   bool DoPhase(int phase);
   void ApplyWidgetStyle();
 
+  // report if window belongs to notebook  
+  bool IsOwnGtkWindow( GdkWindow *window );
+
   // common part of all ctors
   void Init();
 
   // common part of all ctors
   void Init();
 
index 34e2906a9c61460fedecee7ffae41075f8e6d0c1..c23be2fe212584cd241521ca1c329426a9ca1964 100644 (file)
@@ -164,6 +164,9 @@ public:
   bool DoPhase(int phase);
   void ApplyWidgetStyle();
 
   bool DoPhase(int phase);
   void ApplyWidgetStyle();
 
+  // report if window belongs to notebook  
+  bool IsOwnGtkWindow( GdkWindow *window );
+
   // common part of all ctors
   void Init();
 
   // common part of all ctors
   void Init();
 
index 2f4f8be170758692659a2a7079c5534a6b959092..b0de8f2df37f82630082eccec381e9fb26befa34 100644 (file)
         { (const wxEventTable *)NULL, &wxEvtHandler::sm_eventTableEntries[0] };
 
     const wxEventTableEntry wxEvtHandler::sm_eventTableEntries[] =
         { (const wxEventTable *)NULL, &wxEvtHandler::sm_eventTableEntries[0] };
 
     const wxEventTableEntry wxEvtHandler::sm_eventTableEntries[] =
-        { { 0, 0, 0,
-    #ifdef __SGI_CC__
-        // stupid SGI compiler --- offer aug 98
-        0L }
-    #else // !SGI CC
-        NULL }
-    #endif // SGI/!SGI
-        };
+        { { 0, 0, 0, (wxObjectEventFunction) NULL, (wxObject*) NULL } };
 
 #endif // !USE_SHARED_LIBRARY
 
 
 #endif // !USE_SHARED_LIBRARY
 
index c52c7e75862de163505530cc8be3e05cf0740572..526ca5533e5fa65eee1f8a5fa394fbdb346dd48d 100644 (file)
@@ -153,6 +153,16 @@ void wxSplitterWindow::OnMouseEvent(wxMouseEvent& event)
     SetCursor(wxCursor());
 #endif
 
     SetCursor(wxCursor());
 #endif
 
+    // under wxGTK the method above causes the mouse
+    // to flicker so we set the standard cursor only
+    // when leaving the window and when moving over
+    // non-sash parts of the window. this should work
+    // on the other platforms as well, but who knows.
+#ifdef __WXGTK__
+    if (event.Leaving())
+        SetCursor(* wxSTANDARD_CURSOR);
+#endif
+
     if (event.LeftDown())
     {
         if ( SashHitTest(x, y) )
     if (event.LeftDown())
     {
         if ( SashHitTest(x, y) )
@@ -173,9 +183,6 @@ void wxSplitterWindow::OnMouseEvent(wxMouseEvent& event)
         m_dragMode = wxSPLIT_DRAG_NONE;
         ReleaseMouse();
 
         m_dragMode = wxSPLIT_DRAG_NONE;
         ReleaseMouse();
 
-#ifdef __WXGTK__
-        SetCursor(* wxSTANDARD_CURSOR);
-#endif
         // Erase old tracker
         DrawSashTracker(m_oldX, m_oldY);
 
         // Erase old tracker
         DrawSashTracker(m_oldX, m_oldY);
 
@@ -253,6 +260,13 @@ void wxSplitterWindow::OnMouseEvent(wxMouseEvent& event)
                     SetCursor(*m_sashCursorNS);
                 }
         }
                     SetCursor(*m_sashCursorNS);
                 }
         }
+#ifdef __WXGTK__
+        else
+       {
+           // where else do we unset the cursor?
+            SetCursor(* wxSTANDARD_CURSOR);
+       }
+#endif
     }
     else if (event.Dragging() && (m_dragMode == wxSPLIT_DRAG_DRAGGING)) 
     {
     }
     else if (event.Dragging() && (m_dragMode == wxSPLIT_DRAG_DRAGGING)) 
     {
index 2eb7a24f51c130b0dad8519c5638f92dd25b103c..05082ea6df5074f7e864f5e95fd3279d1bdad71c 100644 (file)
@@ -707,6 +707,12 @@ void wxNotebook::ApplyWidgetStyle()
     gtk_widget_set_style( m_widget, m_widgetStyle );
 }
 
     gtk_widget_set_style( m_widget, m_widgetStyle );
 }
 
+bool wxNotebook::IsOwnGtkWindow( GdkWindow *window )
+{
+    return ((m_widget->window == window) ||
+            (GTK_NOTEBOOK(m_widget)->panel == window));
+}
+
 //-----------------------------------------------------------------------------
 // wxNotebookEvent
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 // wxNotebookEvent
 //-----------------------------------------------------------------------------
index cd9ed0177e0065f30fcdf6871477d63a9e6ef2ad..d7f721c56b66d89ec0844f63fde2ce1d3ad57d9b 100644 (file)
@@ -464,8 +464,10 @@ gtk_myfixed_size_request (GtkWidget      *widget,
 
   myfixed = GTK_MYFIXED (widget);
   
 
   myfixed = GTK_MYFIXED (widget);
   
-  requisition->width = widget->requisition.width;
-  requisition->height = widget->requisition.height;
+  /* request very little, I'm not sure if requesting nothing
+     will always have positive effects on stability... */
+  requisition->width = 2;
+  requisition->height = 2;
 
   children = myfixed->children;
   while (children)
 
   children = myfixed->children;
   while (children)
index 9200b4e12bc5071fc5b3e38b2694e002df6da8fe..f03c85f08a912bde15d7952a3abd409fec0b68b5 100644 (file)
@@ -1092,7 +1092,7 @@ static gint gtk_window_enter_callback( GtkWidget *widget, GdkEventCrossing *gdk_
     if (!win->HasVMT()) return FALSE;
     if (g_blockEventsOnDrag) return FALSE;
 
     if (!win->HasVMT()) return FALSE;
     if (g_blockEventsOnDrag) return FALSE;
 
-    if (widget->window != gdk_event->window) return FALSE;
+    if (!win->IsOwnGtkWindow( gdk_event->window )) return FALSE;
 
     if ((widget->window) && (win->m_cursor.Ok()))
         gdk_window_set_cursor( widget->window, win->m_cursor.GetCursor() );
 
     if ((widget->window) && (win->m_cursor.Ok()))
         gdk_window_set_cursor( widget->window, win->m_cursor.GetCursor() );
@@ -1144,16 +1144,16 @@ static gint gtk_window_leave_callback( GtkWidget *widget, GdkEventCrossing *gdk_
     if (!win->HasVMT()) return FALSE;
     if (g_blockEventsOnDrag) return FALSE;
 
     if (!win->HasVMT()) return FALSE;
     if (g_blockEventsOnDrag) return FALSE;
 
-    if (widget->window != gdk_event->window) return FALSE;
+    if (!win->IsOwnGtkWindow( gdk_event->window )) return FALSE;
 
     if (widget->window)
         gdk_window_set_cursor( widget->window, wxSTANDARD_CURSOR->GetCursor() );
 
 /*
 
     if (widget->window)
         gdk_window_set_cursor( widget->window, wxSTANDARD_CURSOR->GetCursor() );
 
 /*
-    printf( "OnLeave from " );
+    wxPrintf( _T("OnLeave from ") );
     if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
     if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
-        printf( win->GetClassInfo()->GetClassName() );
-    printf( ".\n" );
+        wxPrintf( win->GetClassInfo()->GetClassName() );
+    wxPrintf( _T(".\n") );
 */
 
     wxMouseEvent event( wxEVT_LEAVE_WINDOW );
 */
 
     wxMouseEvent event( wxEVT_LEAVE_WINDOW );
index 2eb7a24f51c130b0dad8519c5638f92dd25b103c..05082ea6df5074f7e864f5e95fd3279d1bdad71c 100644 (file)
@@ -707,6 +707,12 @@ void wxNotebook::ApplyWidgetStyle()
     gtk_widget_set_style( m_widget, m_widgetStyle );
 }
 
     gtk_widget_set_style( m_widget, m_widgetStyle );
 }
 
+bool wxNotebook::IsOwnGtkWindow( GdkWindow *window )
+{
+    return ((m_widget->window == window) ||
+            (GTK_NOTEBOOK(m_widget)->panel == window));
+}
+
 //-----------------------------------------------------------------------------
 // wxNotebookEvent
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 // wxNotebookEvent
 //-----------------------------------------------------------------------------
index cd9ed0177e0065f30fcdf6871477d63a9e6ef2ad..d7f721c56b66d89ec0844f63fde2ce1d3ad57d9b 100644 (file)
@@ -464,8 +464,10 @@ gtk_myfixed_size_request (GtkWidget      *widget,
 
   myfixed = GTK_MYFIXED (widget);
   
 
   myfixed = GTK_MYFIXED (widget);
   
-  requisition->width = widget->requisition.width;
-  requisition->height = widget->requisition.height;
+  /* request very little, I'm not sure if requesting nothing
+     will always have positive effects on stability... */
+  requisition->width = 2;
+  requisition->height = 2;
 
   children = myfixed->children;
   while (children)
 
   children = myfixed->children;
   while (children)
index 9200b4e12bc5071fc5b3e38b2694e002df6da8fe..f03c85f08a912bde15d7952a3abd409fec0b68b5 100644 (file)
@@ -1092,7 +1092,7 @@ static gint gtk_window_enter_callback( GtkWidget *widget, GdkEventCrossing *gdk_
     if (!win->HasVMT()) return FALSE;
     if (g_blockEventsOnDrag) return FALSE;
 
     if (!win->HasVMT()) return FALSE;
     if (g_blockEventsOnDrag) return FALSE;
 
-    if (widget->window != gdk_event->window) return FALSE;
+    if (!win->IsOwnGtkWindow( gdk_event->window )) return FALSE;
 
     if ((widget->window) && (win->m_cursor.Ok()))
         gdk_window_set_cursor( widget->window, win->m_cursor.GetCursor() );
 
     if ((widget->window) && (win->m_cursor.Ok()))
         gdk_window_set_cursor( widget->window, win->m_cursor.GetCursor() );
@@ -1144,16 +1144,16 @@ static gint gtk_window_leave_callback( GtkWidget *widget, GdkEventCrossing *gdk_
     if (!win->HasVMT()) return FALSE;
     if (g_blockEventsOnDrag) return FALSE;
 
     if (!win->HasVMT()) return FALSE;
     if (g_blockEventsOnDrag) return FALSE;
 
-    if (widget->window != gdk_event->window) return FALSE;
+    if (!win->IsOwnGtkWindow( gdk_event->window )) return FALSE;
 
     if (widget->window)
         gdk_window_set_cursor( widget->window, wxSTANDARD_CURSOR->GetCursor() );
 
 /*
 
     if (widget->window)
         gdk_window_set_cursor( widget->window, wxSTANDARD_CURSOR->GetCursor() );
 
 /*
-    printf( "OnLeave from " );
+    wxPrintf( _T("OnLeave from ") );
     if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
     if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
-        printf( win->GetClassInfo()->GetClassName() );
-    printf( ".\n" );
+        wxPrintf( win->GetClassInfo()->GetClassName() );
+    wxPrintf( _T(".\n") );
 */
 
     wxMouseEvent event( wxEVT_LEAVE_WINDOW );
 */
 
     wxMouseEvent event( wxEVT_LEAVE_WINDOW );