Commit dc4e9e2f authored by Shawn Amundson's avatar Shawn Amundson

corrects a small resize bug in the viewport widget. The viewport widget

        * gtk/gtkviewport.c: corrects a small resize bug in the
          viewport widget.  The viewport widget provides a _set_shadow
          function to draw its shadows. But if GTK_SHADOW_NONE is sent
          to this function, the viewport isn't resized correctly (it's
          still considered as a shadowed widget).  (gtk-fortier-971213-0)

        * gtk/gtknotebook.c: this patch fixes the redraw problems of
          notebook tabs, without using gdk_gc_set_clip_rectangle.
          (gtk-hamann_jeske-971218-0)

        * add gtk_widget_(show/hide)_all (Stefan Wille)
          (gtk-wille-301297-0)  Patch for testgtk not included
          because it did not patch clean.

-Shawn
parent 0e9ff02e
Fri Jan 2 12:07:33 CST 1998 Shawn T. Amundson <amundson@gimp.org>
* gtk/gtkviewport.c: corrects a small resize bug in the
viewport widget. The viewport widget provides a _set_shadow
function to draw its shadows. But if GTK_SHADOW_NONE is sent
to this function, the viewport isn't resized correctly (it's
still considered as a shadowed widget). (gtk-fortier-971213-0)
* gtk/gtknotebook.c: this patch fixes the redraw problems of
notebook tabs, without using gdk_gc_set_clip_rectangle.
(gtk-hamann_jeske-971218-0)
* add gtk_widget_(show/hide)_all (Stefan Wille)
(gtk-wille-301297-0) Patch for testgtk not included
because it did not patch clean.
Thu Jan 1 21:21:56 PST 1998 Manish Singh <yosh@gimp.org>
* configure.in: fixed up the xinput test
......@@ -11,6 +27,7 @@ Mon Dec 29 22:05:45 1997 Miguel de Icaza <miguel@nuclecu.unam.mx>
Sat Dec 27 20:39:99 1997 Elliot Lee <sopwith@redhat.com>
* gtk/gtkhandlebox.c: It mostly works now, please test it and make
fixes as needed.
Fri Dec 26 11:20:03 1997 Scott Goehring <scott@poverty.bloomington.in.us>
* gtk/Makefile.am (gtkinclude_HEADERS): added gtkhandlebox.c
......
Fri Jan 2 12:07:33 CST 1998 Shawn T. Amundson <amundson@gimp.org>
* gtk/gtkviewport.c: corrects a small resize bug in the
viewport widget. The viewport widget provides a _set_shadow
function to draw its shadows. But if GTK_SHADOW_NONE is sent
to this function, the viewport isn't resized correctly (it's
still considered as a shadowed widget). (gtk-fortier-971213-0)
* gtk/gtknotebook.c: this patch fixes the redraw problems of
notebook tabs, without using gdk_gc_set_clip_rectangle.
(gtk-hamann_jeske-971218-0)
* add gtk_widget_(show/hide)_all (Stefan Wille)
(gtk-wille-301297-0) Patch for testgtk not included
because it did not patch clean.
Thu Jan 1 21:21:56 PST 1998 Manish Singh <yosh@gimp.org>
* configure.in: fixed up the xinput test
......@@ -11,6 +27,7 @@ Mon Dec 29 22:05:45 1997 Miguel de Icaza <miguel@nuclecu.unam.mx>
Sat Dec 27 20:39:99 1997 Elliot Lee <sopwith@redhat.com>
* gtk/gtkhandlebox.c: It mostly works now, please test it and make
fixes as needed.
Fri Dec 26 11:20:03 1997 Scott Goehring <scott@poverty.bloomington.in.us>
* gtk/Makefile.am (gtkinclude_HEADERS): added gtkhandlebox.c
......
Fri Jan 2 12:07:33 CST 1998 Shawn T. Amundson <amundson@gimp.org>
* gtk/gtkviewport.c: corrects a small resize bug in the
viewport widget. The viewport widget provides a _set_shadow
function to draw its shadows. But if GTK_SHADOW_NONE is sent
to this function, the viewport isn't resized correctly (it's
still considered as a shadowed widget). (gtk-fortier-971213-0)
* gtk/gtknotebook.c: this patch fixes the redraw problems of
notebook tabs, without using gdk_gc_set_clip_rectangle.
(gtk-hamann_jeske-971218-0)
* add gtk_widget_(show/hide)_all (Stefan Wille)
(gtk-wille-301297-0) Patch for testgtk not included
because it did not patch clean.
Thu Jan 1 21:21:56 PST 1998 Manish Singh <yosh@gimp.org>
* configure.in: fixed up the xinput test
......@@ -11,6 +27,7 @@ Mon Dec 29 22:05:45 1997 Miguel de Icaza <miguel@nuclecu.unam.mx>
Sat Dec 27 20:39:99 1997 Elliot Lee <sopwith@redhat.com>
* gtk/gtkhandlebox.c: It mostly works now, please test it and make
fixes as needed.
Fri Dec 26 11:20:03 1997 Scott Goehring <scott@poverty.bloomington.in.us>
* gtk/Makefile.am (gtkinclude_HEADERS): added gtkhandlebox.c
......
Fri Jan 2 12:07:33 CST 1998 Shawn T. Amundson <amundson@gimp.org>
* gtk/gtkviewport.c: corrects a small resize bug in the
viewport widget. The viewport widget provides a _set_shadow
function to draw its shadows. But if GTK_SHADOW_NONE is sent
to this function, the viewport isn't resized correctly (it's
still considered as a shadowed widget). (gtk-fortier-971213-0)
* gtk/gtknotebook.c: this patch fixes the redraw problems of
notebook tabs, without using gdk_gc_set_clip_rectangle.
(gtk-hamann_jeske-971218-0)
* add gtk_widget_(show/hide)_all (Stefan Wille)
(gtk-wille-301297-0) Patch for testgtk not included
because it did not patch clean.
Thu Jan 1 21:21:56 PST 1998 Manish Singh <yosh@gimp.org>
* configure.in: fixed up the xinput test
......@@ -11,6 +27,7 @@ Mon Dec 29 22:05:45 1997 Miguel de Icaza <miguel@nuclecu.unam.mx>
Sat Dec 27 20:39:99 1997 Elliot Lee <sopwith@redhat.com>
* gtk/gtkhandlebox.c: It mostly works now, please test it and make
fixes as needed.
Fri Dec 26 11:20:03 1997 Scott Goehring <scott@poverty.bloomington.in.us>
* gtk/Makefile.am (gtkinclude_HEADERS): added gtkhandlebox.c
......
Fri Jan 2 12:07:33 CST 1998 Shawn T. Amundson <amundson@gimp.org>
* gtk/gtkviewport.c: corrects a small resize bug in the
viewport widget. The viewport widget provides a _set_shadow
function to draw its shadows. But if GTK_SHADOW_NONE is sent
to this function, the viewport isn't resized correctly (it's
still considered as a shadowed widget). (gtk-fortier-971213-0)
* gtk/gtknotebook.c: this patch fixes the redraw problems of
notebook tabs, without using gdk_gc_set_clip_rectangle.
(gtk-hamann_jeske-971218-0)
* add gtk_widget_(show/hide)_all (Stefan Wille)
(gtk-wille-301297-0) Patch for testgtk not included
because it did not patch clean.
Thu Jan 1 21:21:56 PST 1998 Manish Singh <yosh@gimp.org>
* configure.in: fixed up the xinput test
......@@ -11,6 +27,7 @@ Mon Dec 29 22:05:45 1997 Miguel de Icaza <miguel@nuclecu.unam.mx>
Sat Dec 27 20:39:99 1997 Elliot Lee <sopwith@redhat.com>
* gtk/gtkhandlebox.c: It mostly works now, please test it and make
fixes as needed.
Fri Dec 26 11:20:03 1997 Scott Goehring <scott@poverty.bloomington.in.us>
* gtk/Makefile.am (gtkinclude_HEADERS): added gtkhandlebox.c
......
Fri Jan 2 12:07:33 CST 1998 Shawn T. Amundson <amundson@gimp.org>
* gtk/gtkviewport.c: corrects a small resize bug in the
viewport widget. The viewport widget provides a _set_shadow
function to draw its shadows. But if GTK_SHADOW_NONE is sent
to this function, the viewport isn't resized correctly (it's
still considered as a shadowed widget). (gtk-fortier-971213-0)
* gtk/gtknotebook.c: this patch fixes the redraw problems of
notebook tabs, without using gdk_gc_set_clip_rectangle.
(gtk-hamann_jeske-971218-0)
* add gtk_widget_(show/hide)_all (Stefan Wille)
(gtk-wille-301297-0) Patch for testgtk not included
because it did not patch clean.
Thu Jan 1 21:21:56 PST 1998 Manish Singh <yosh@gimp.org>
* configure.in: fixed up the xinput test
......@@ -11,6 +27,7 @@ Mon Dec 29 22:05:45 1997 Miguel de Icaza <miguel@nuclecu.unam.mx>
Sat Dec 27 20:39:99 1997 Elliot Lee <sopwith@redhat.com>
* gtk/gtkhandlebox.c: It mostly works now, please test it and make
fixes as needed.
Fri Dec 26 11:20:03 1997 Scott Goehring <scott@poverty.bloomington.in.us>
* gtk/Makefile.am (gtkinclude_HEADERS): added gtkhandlebox.c
......
Fri Jan 2 12:07:33 CST 1998 Shawn T. Amundson <amundson@gimp.org>
* gtk/gtkviewport.c: corrects a small resize bug in the
viewport widget. The viewport widget provides a _set_shadow
function to draw its shadows. But if GTK_SHADOW_NONE is sent
to this function, the viewport isn't resized correctly (it's
still considered as a shadowed widget). (gtk-fortier-971213-0)
* gtk/gtknotebook.c: this patch fixes the redraw problems of
notebook tabs, without using gdk_gc_set_clip_rectangle.
(gtk-hamann_jeske-971218-0)
* add gtk_widget_(show/hide)_all (Stefan Wille)
(gtk-wille-301297-0) Patch for testgtk not included
because it did not patch clean.
Thu Jan 1 21:21:56 PST 1998 Manish Singh <yosh@gimp.org>
* configure.in: fixed up the xinput test
......@@ -11,6 +27,7 @@ Mon Dec 29 22:05:45 1997 Miguel de Icaza <miguel@nuclecu.unam.mx>
Sat Dec 27 20:39:99 1997 Elliot Lee <sopwith@redhat.com>
* gtk/gtkhandlebox.c: It mostly works now, please test it and make
fixes as needed.
Fri Dec 26 11:20:03 1997 Scott Goehring <scott@poverty.bloomington.in.us>
* gtk/Makefile.am (gtkinclude_HEADERS): added gtkhandlebox.c
......
......@@ -83,6 +83,9 @@ static gint gtk_container_focus_move (GtkContainer *container,
GtkDirectionType direction);
static void gtk_container_children_callback (GtkWidget *widget,
gpointer client_data);
static void gtk_container_show_all (GtkWidget *widget);
static void gtk_container_hide_all (GtkWidget *widget);
static gint container_signals[LAST_SIGNAL] = { 0 };
......@@ -168,6 +171,13 @@ gtk_container_class_init (GtkContainerClass *class)
gtk_object_class_add_signals (object_class, container_signals, LAST_SIGNAL);
/* Other container classes should overwrite show_all and hide_all,
unless they make all their children accessable
through gtk_container_foreach.
*/
widget_class->show_all = gtk_container_show_all;
widget_class->hide_all = gtk_container_hide_all;
class->need_resize = gtk_real_container_need_resize;
class->focus = gtk_real_container_focus;
}
......@@ -842,3 +852,39 @@ gtk_container_children_callback (GtkWidget *widget,
children = (GList**) client_data;
*children = g_list_prepend (*children, widget);
}
static void
gtk_container_show_all (GtkWidget *widget)
{
GtkContainer *container;
g_return_if_fail (widget != NULL);
g_return_if_fail (GTK_IS_CONTAINER (widget));
container = GTK_CONTAINER (widget);
/* First show children, then self.
This makes sure that toplevel windows get shown as last widget.
Otherwise the user would see the widgets get
visible one after another.
*/
gtk_container_foreach (container, (GtkCallback) gtk_widget_show_all, NULL);
gtk_widget_show (widget);
}
static void
gtk_container_hide_all (GtkWidget *widget)
{
GtkContainer *container;
g_return_if_fail (widget != NULL);
g_return_if_fail (GTK_IS_CONTAINER (widget));
container = GTK_CONTAINER (widget);
/* First hide self, then children.
This is the reverse order of gtk_container_show_all.
*/
gtk_widget_hide (widget);
gtk_container_foreach (container, (GtkCallback) gtk_widget_hide_all, NULL);
}
......@@ -47,6 +47,8 @@ static gint gtk_menu_key_press (GtkWidget *widget,
GdkEventKey *event);
static gint gtk_menu_need_resize (GtkContainer *container);
static void gtk_menu_deactivate (GtkMenuShell *menu_shell);
static void gtk_menu_show_all (GtkWidget *widget);
static void gtk_menu_hide_all (GtkWidget *widget);
guint
......@@ -93,7 +95,9 @@ gtk_menu_class_init (GtkMenuClass *class)
widget_class->expose_event = gtk_menu_expose;
widget_class->configure_event = gtk_menu_configure;
widget_class->key_press_event = gtk_menu_key_press;
widget_class->show_all = gtk_menu_show_all;
widget_class->hide_all = gtk_menu_hide_all;
container_class->need_resize = gtk_menu_need_resize;
menu_shell_class->submenu_placement = GTK_LEFT_RIGHT;
......@@ -732,3 +736,32 @@ gtk_menu_deactivate (GtkMenuShell *menu_shell)
if (parent)
gtk_menu_shell_deactivate (parent);
}
static void
gtk_menu_show_all (GtkWidget *widget)
{
GtkContainer *container;
g_return_if_fail (widget != NULL);
g_return_if_fail (GTK_IS_MENU (widget));
container = GTK_CONTAINER (widget);
/* Show children, but not self. */
gtk_container_foreach (container, (GtkCallback) gtk_widget_show_all, NULL);
}
static void
gtk_menu_hide_all (GtkWidget *widget)
{
GtkContainer *container;
g_return_if_fail (widget != NULL);
g_return_if_fail (GTK_IS_MENU (widget));
container = GTK_CONTAINER (widget);
/* Hide children, but not self. */
gtk_container_foreach (container, (GtkCallback) gtk_widget_hide_all, NULL);
}
......@@ -65,6 +65,8 @@ static void gtk_menu_item_position_menu (GtkMenu *menu,
gint *x,
gint *y,
gpointer user_data);
static void gtk_menu_item_show_all (GtkWidget *widget);
static void gtk_menu_item_hide_all (GtkWidget *widget);
static GtkItemClass *parent_class;
static gint menu_item_signals[LAST_SIGNAL] = { 0 };
......@@ -127,6 +129,8 @@ gtk_menu_item_class_init (GtkMenuItemClass *klass)
widget_class->expose_event = gtk_menu_item_expose;
widget_class->enter_notify_event = gtk_menu_item_enter;
widget_class->leave_notify_event = gtk_menu_item_leave;
widget_class->show_all = gtk_menu_item_show_all;
widget_class->hide_all = gtk_menu_item_hide_all;
item_class->select = gtk_real_menu_item_select;
item_class->deselect = gtk_real_menu_item_deselect;
......@@ -745,3 +749,40 @@ gtk_menu_item_right_justify(GtkMenuItem *menuitem)
menuitem->right_justify = 1;
}
static void
gtk_menu_item_show_all (GtkWidget *widget)
{
GtkContainer *container;
GtkMenuItem *menu_item;
g_return_if_fail (widget != NULL);
g_return_if_fail (GTK_IS_MENU_ITEM (widget));
container = GTK_CONTAINER (widget);
menu_item = GTK_MENU_ITEM (widget);
/* Show children, traverse to submenu, show self. */
gtk_container_foreach (container, (GtkCallback) gtk_widget_show_all, NULL);
if (menu_item->submenu)
gtk_widget_show_all (menu_item->submenu);
gtk_widget_show (widget);
}
static void
gtk_menu_item_hide_all (GtkWidget *widget)
{
GtkContainer *container;
GtkMenuItem *menu_item;
g_return_if_fail (widget != NULL);
g_return_if_fail (GTK_IS_MENU_ITEM (widget));
container = GTK_CONTAINER (widget);
menu_item = GTK_MENU_ITEM (widget);
/* Reverse order of gtk_menu_item_show_all */
gtk_widget_hide (widget);
if (menu_item->submenu)
gtk_widget_hide_all (menu_item->submenu);
gtk_container_foreach (container, (GtkCallback) gtk_widget_hide_all, NULL);
}
......@@ -51,9 +51,6 @@ static void gtk_notebook_foreach (GtkContainer *container,
gpointer callback_data);
static void gtk_notebook_switch_page (GtkNotebook *notebook,
GtkNotebookPage *page);
static void gtk_notebook_set_clip_rect (GtkNotebook *notebook,
GtkStateType state_type,
GdkRectangle *area);
static void gtk_notebook_draw_tab (GtkNotebook *notebook,
GtkNotebookPage *page,
GdkRectangle *area);
......@@ -738,11 +735,6 @@ gtk_notebook_paint (GtkWidget *widget,
{
notebook = GTK_NOTEBOOK (widget);
/* Set the clip rectangle here, so we don't overwrite things
* outside of exposed area when drawing shadows */
gtk_notebook_set_clip_rect (notebook, GTK_STATE_ACTIVE, area);
gtk_notebook_set_clip_rect (notebook, GTK_STATE_NORMAL, area);
gdk_window_clear_area (widget->window,
area->x, area->y,
area->width, area->height);
......@@ -874,9 +866,6 @@ gtk_notebook_paint (GtkWidget *widget,
x, y, width, height);
}
}
gtk_notebook_set_clip_rect (notebook, GTK_STATE_ACTIVE, NULL);
gtk_notebook_set_clip_rect (notebook, GTK_STATE_NORMAL, NULL);
}
}
......@@ -1071,18 +1060,6 @@ gtk_notebook_switch_page (GtkNotebook *notebook,
}
}
static void
gtk_notebook_set_clip_rect (GtkNotebook *notebook,
GtkStateType state_type,
GdkRectangle *area)
{
GtkWidget *widget = GTK_WIDGET (notebook);
gdk_gc_set_clip_rectangle (widget->style->bg_gc[state_type], area);
gdk_gc_set_clip_rectangle (widget->style->light_gc[state_type], area);
gdk_gc_set_clip_rectangle (widget->style->dark_gc[state_type], area);
gdk_gc_set_clip_rectangle (widget->style->black_gc, area);
}
static void
gtk_notebook_draw_tab (GtkNotebook *notebook,
......@@ -1093,7 +1070,8 @@ gtk_notebook_draw_tab (GtkNotebook *notebook,
GdkRectangle page_area;
GtkStateType state_type;
GdkPoint points[6];
gint n;
g_return_if_fail (notebook != NULL);
g_return_if_fail (page != NULL);
g_return_if_fail (area != NULL);
......@@ -1105,101 +1083,206 @@ gtk_notebook_draw_tab (GtkNotebook *notebook,
if (gdk_rectangle_intersect (&page_area, area, &child_area))
{
GtkWidget *widget;
switch (notebook->tab_pos)
{
case GTK_POS_TOP:
points[0].x = page->allocation.x + page->allocation.width - 1;
points[0].y = page->allocation.y + page->allocation.height - 1;
points[1].x = page->allocation.x + page->allocation.width - 1;
points[1].y = page->allocation.y + TAB_CURVATURE;
points[2].x = page->allocation.x + page->allocation.width - TAB_CURVATURE - 1;
points[2].y = page->allocation.y;
points[3].x = page->allocation.x + TAB_CURVATURE;
points[3].y = page->allocation.y;
if( child_area.x + child_area.width >
page->allocation.x + page->allocation.width - TAB_OVERLAP )
{
points[0].x = page->allocation.x + page->allocation.width - 1;
points[0].y = page->allocation.y + page->allocation.height - 1;
points[4].x = page->allocation.x;
points[4].y = page->allocation.y + TAB_CURVATURE;
points[1].x = page->allocation.x + page->allocation.width - 1;
points[1].y = page->allocation.y + TAB_CURVATURE;
points[5].x = page->allocation.x;
points[5].y = page->allocation.y + page->allocation.height - 1;
points[2].x = page->allocation.x + page->allocation.width
- TAB_CURVATURE - 1;
points[2].y = page->allocation.y;
n = 3;
}
else
{
points[0].x = page->allocation.x + page->allocation.width
- TAB_OVERLAP - 1;
points[0].y = page->allocation.y;
n = 1;
}
if( (child_area.x < page->allocation.x + TAB_OVERLAP) &&
(page == notebook->cur_page ||
page == (GtkNotebookPage *)(notebook->children->data)) )
{
points[n].x = page->allocation.x + TAB_CURVATURE;
points[n++].y = page->allocation.y;
points[n].x = page->allocation.x;
points[n++].y = page->allocation.y + TAB_CURVATURE;
points[n].x = page->allocation.x;
points[n++].y = page->allocation.y + page->allocation.height - 1;
}
else
{
points[n].x = page->allocation.x + TAB_OVERLAP;
points[n++].y = page->allocation.y;
}
break;
case GTK_POS_BOTTOM:
points[0].x = page->allocation.x;
points[0].y = page->allocation.y;
points[1].x = page->allocation.x;
points[1].y = page->allocation.y + page->allocation.height - TAB_CURVATURE - 1;
points[2].x = page->allocation.x + TAB_CURVATURE;
points[2].y = page->allocation.y + page->allocation.height - 1;
if( (child_area.x < page->allocation.x + TAB_OVERLAP) &&
(page == notebook->cur_page ||
page == (GtkNotebookPage *)(notebook->children->data)) )
{
points[0].x = page->allocation.x;
points[0].y = page->allocation.y;
points[3].x = page->allocation.x + page->allocation.width - TAB_CURVATURE - 1;
points[3].y = page->allocation.y + page->allocation.height - 1;
points[1].x = page->allocation.x;
points[1].y = page->allocation.y + page->allocation.height
- TAB_CURVATURE - 1;
points[4].x = page->allocation.x + page->allocation.width - 1;
points[4].y = page->allocation.y + page->allocation.height - TAB_CURVATURE - 1;
points[2].x = page->allocation.x + TAB_CURVATURE;
points[2].y = page->allocation.y + page->allocation.height - 1;
n = 3;
}
else
{
points[0].x = page->allocation.x + TAB_OVERLAP;
points[0].y = page->allocation.y + page->allocation.height - 1;
n = 1;
}
points[5].x = page->allocation.x + page->allocation.width - 1;
points[5].y = page->allocation.y;
if( child_area.x + child_area.width >
page->allocation.x + page->allocation.width - TAB_OVERLAP )
{
points[n].x = page->allocation.x + page->allocation.width
- TAB_CURVATURE - 1;
points[n++].y = page->allocation.y + page->allocation.height - 1;
points[n].x = page->allocation.x + page->allocation.width - 1;
points[n++].y = page->allocation.y + page->allocation.height
- TAB_CURVATURE - 1;
points[n].x = page->allocation.x + page->allocation.width - 1;
points[n++].y = page->allocation.y;
}
else
{
points[n].x = page->allocation.x + page->allocation.width
- TAB_OVERLAP - 1;
points[n++].y = page->allocation.y + page->allocation.height - 1;
}
break;
case GTK_POS_LEFT:
points[0].x = page->allocation.x + page->allocation.width - 1;
points[0].y = page->allocation.y;
points[1].x = page->allocation.x + TAB_CURVATURE;
points[1].y = page->allocation.y;
points[2].x = page->allocation.x;
points[2].y = page->allocation.y + TAB_CURVATURE;
if( (child_area.y < page->allocation.y + TAB_OVERLAP) &&
(page == notebook->cur_page ||
page == (GtkNotebookPage *)(notebook->children->data)) )
{
points[0].x = page->allocation.x + page->allocation.width - 1;
points[0].y = page->allocation.y;
points[1].x = page->allocation.x + TAB_CURVATURE;
points[1].y = page->allocation.y;
points[2].x = page->allocation.x;
points[2].y = page->allocation.y + TAB_CURVATURE;
n = 3;
}
else
{
points[0].x = page->allocation.x;
points[0].y = page->allocation.y + TAB_OVERLAP;
n = 1;
}
points[3].x = page->allocation.x;
points[3].y = page->allocation.y + page->allocation.height - TAB_CURVATURE - 1;
if( child_area.y + child_area.height >
page->allocation.y + page->allocation.height - TAB_OVERLAP )
{
points[n].x = page->allocation.x;
points[n++].y = page->allocation.y + page->allocation.height
- TAB_CURVATURE - 1;
points[4].x = page->allocation.x + TAB_CURVATURE;
points[4].y = page->allocation.y + page->allocation.height - 1;
points[n].x = page->allocation.x + TAB_CURVATURE;
points[n++].y = page->allocation.y + page->allocation.height - 1;
points[5].x = page->allocation.x + page->allocation.width - 1;
points[5].y = page->allocation.y + page->allocation.height - 1;
points[n].x = page->allocation.x + page->allocation.width - 1;
points[n++].y = page->allocation.y + page->allocation.height - 1;
}
else
{
points[n].x = page->allocation.x;
points[n++].y = page->allocation.y + page->allocation.height
- TAB_OVERLAP - 1;
}
break;
case GTK_POS_RIGHT:
points[0].x = page->allocation.x;
points[0].y = page->allocation.y + page->allocation.height - 1;
points[1].x = page->allocation.x + page->allocation.width - TAB_CURVATURE - 1;
points[1].y = page->allocation.y + page->allocation.height - 1;
points[2].x = page->allocation.x + page->allocation.width - 1;
points[2].y = page->allocation.y + page->allocation.height - TAB_CURVATURE - 1;
if( child_area.y + child_area.height >
page->allocation.y + page->allocation.height - TAB_OVERLAP )
{
points[0].x = page->allocation.x;
points[0].y = page->allocation.y + page->allocation.height - 1;
points[1].x = page->allocation.x + page->allocation.width
- TAB_CURVATURE - 1;
points[1].y = page->allocation.y + page->allocation.height - 1;
points[2].x = page->allocation.x + page->allocation.width - 1;
points[2].y = page->allocation.y + page->allocation.height
- TAB_CURVATURE - 1;
n = 3;
}
else
{
points[0].x = page->allocation.x + page->allocation.width - 1;
points[0].y = page->allocation.y + page->allocation.height
- TAB_OVERLAP - 1;
n = 1;
}
points[3].x = page->allocation.x + page->allocation.width - 1;
points[3].y = page->allocation.y + TAB_CURVATURE;
if( (child_area.y < page->allocation.y + TAB_OVERLAP) &&
(page == notebook->cur_page ||