]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkvpaned.c
Opaque resizing + prelighting for paned widget. move reszing logic to
[~andy/gtk] / gtk / gtkvpaned.c
index 5cfd4b69816ec18f7be5aae0466cb0ea49494c46..39316f86685b8a11b177b1b5726b146c9fd9b342 100644 (file)
@@ -32,13 +32,6 @@ static void     gtk_vpaned_size_request   (GtkWidget      *widget,
                                           GtkRequisition *requisition);
 static void     gtk_vpaned_size_allocate  (GtkWidget      *widget,
                                           GtkAllocation  *allocation);
-static void     gtk_vpaned_xor_line       (GtkPaned       *paned);
-static gboolean gtk_vpaned_button_press   (GtkWidget      *widget,
-                                          GdkEventButton *event);
-static gboolean gtk_vpaned_button_release (GtkWidget      *widget,
-                                          GdkEventButton *event);
-static gboolean gtk_vpaned_motion         (GtkWidget      *widget,
-                                          GdkEventMotion *event);
 
 static gpointer parent_class;
 
@@ -78,9 +71,6 @@ gtk_vpaned_class_init (GtkVPanedClass *class)
 
   widget_class->size_request = gtk_vpaned_size_request;
   widget_class->size_allocate = gtk_vpaned_size_allocate;
-  widget_class->button_press_event = gtk_vpaned_button_press;
-  widget_class->button_release_event = gtk_vpaned_button_release;
-  widget_class->motion_notify_event = gtk_vpaned_motion;
 }
 
 static void
@@ -231,119 +221,3 @@ gtk_vpaned_size_allocate (GtkWidget     *widget,
        gtk_widget_size_allocate (paned->child2, &child_allocation);
     }
 }
-
-static void
-gtk_vpaned_xor_line (GtkPaned *paned)
-{
-  GtkWidget *widget;
-  GdkGCValues values;
-  guint16 ypos;
-  gint handle_size;
-
-  widget = GTK_WIDGET (paned);
-
-  gtk_widget_style_get (widget, "handle_size", &handle_size, NULL);
-
-  if (!paned->xor_gc)
-    {
-      values.function = GDK_INVERT;
-      values.subwindow_mode = GDK_INCLUDE_INFERIORS;
-      paned->xor_gc = gdk_gc_new_with_values (widget->window,
-                                             &values,
-                                             GDK_GC_FUNCTION | GDK_GC_SUBWINDOW);
-    }
-
-  gdk_gc_set_line_attributes (paned->xor_gc, 2, GDK_LINE_SOLID,
-                             GDK_CAP_NOT_LAST, GDK_JOIN_BEVEL);
-
-  ypos = widget->allocation.y + paned->child1_size
-    + GTK_CONTAINER (paned)->border_width + handle_size / 2;
-
-  gdk_draw_line (widget->window, paned->xor_gc,
-                widget->allocation.x,
-                ypos,
-                widget->allocation.x + widget->allocation.width - 1,
-                ypos);
-}
-
-static gboolean
-gtk_vpaned_button_press (GtkWidget      *widget,
-                        GdkEventButton *event)
-{
-  GtkPaned *paned = GTK_PANED (widget);
-  gint handle_size;
-
-  gtk_widget_style_get (widget, "handle_size", &handle_size, NULL);
-
-  if (!paned->in_drag &&
-      (event->window == paned->handle) && (event->button == 1))
-    {
-      paned->in_drag = TRUE;
-      /* We need a server grab here, not gtk_grab_add(), since
-       * we don't want to pass events on to the widget's children */
-      gdk_pointer_grab (paned->handle, FALSE,
-                       GDK_POINTER_MOTION_HINT_MASK
-                       | GDK_BUTTON1_MOTION_MASK
-                       | GDK_BUTTON_RELEASE_MASK, NULL, NULL,
-                       event->time);
-      paned->child1_size += event->y - handle_size / 2;
-      paned->child1_size = CLAMP (paned->child1_size, 0,
-                                 widget->allocation.height -
-                                 handle_size -
-                                 2 * GTK_CONTAINER (paned)->border_width);
-      gtk_vpaned_xor_line(paned);
-
-      return TRUE;
-    }
-
-  return FALSE;
-}
-
-static gboolean
-gtk_vpaned_button_release (GtkWidget      *widget,
-                          GdkEventButton *event)
-{
-  GtkPaned *paned = GTK_PANED (widget);
-  GObject *object = G_OBJECT (widget);
-
-  if (paned->in_drag && (event->button == 1))
-    {
-      gtk_vpaned_xor_line (paned);
-      paned->in_drag = FALSE;
-      paned->position_set = TRUE;
-      gdk_pointer_ungrab (event->time);
-      gtk_widget_queue_resize (GTK_WIDGET (paned));
-      g_object_freeze_notify (object);
-      g_object_notify (object, "position");
-      g_object_notify (object, "position_set");
-      g_object_thaw_notify (object);
-
-      return TRUE;
-    }
-
-  return FALSE;
-}
-
-static gboolean
-gtk_vpaned_motion (GtkWidget      *widget,
-                  GdkEventMotion *event)
-{
-  GtkPaned *paned = GTK_PANED (widget);
-  gint y;
-  gint handle_size;
-
-  gtk_widget_style_get (widget, "handle_size", &handle_size, NULL);
-
-  gtk_widget_get_pointer (widget, NULL, &y);
-
-  if (paned->in_drag)
-    {
-      gint size = y - GTK_CONTAINER (paned)->border_width - handle_size / 2;
-
-      gtk_vpaned_xor_line (paned);
-      paned->child1_size = CLAMP (size, paned->min_position, paned->max_position);
-      gtk_vpaned_xor_line (paned);
-    }
-
-  return TRUE;
-}