aboutsummaryrefslogtreecommitdiffstats
path: root/packages/gtk+/gtk+-2.6.4-1.osso7/gtkhbbox.c.diff
diff options
context:
space:
mode:
Diffstat (limited to 'packages/gtk+/gtk+-2.6.4-1.osso7/gtkhbbox.c.diff')
-rw-r--r--packages/gtk+/gtk+-2.6.4-1.osso7/gtkhbbox.c.diff344
1 files changed, 0 insertions, 344 deletions
diff --git a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkhbbox.c.diff b/packages/gtk+/gtk+-2.6.4-1.osso7/gtkhbbox.c.diff
deleted file mode 100644
index e43db37f5c..0000000000
--- a/packages/gtk+/gtk+-2.6.4-1.osso7/gtkhbbox.c.diff
+++ /dev/null
@@ -1,344 +0,0 @@
---- gtk+-2.6.4/gtk/gtkhbbox.c 2004-08-09 19:59:52.000000000 +0300
-+++ gtk+-2.6.4/gtk/gtkhbbox.c 2005-04-06 16:19:36.644967480 +0300
-@@ -24,10 +24,20 @@
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-+/* Modified for Nokia Oyj during 2002-2005. See CHANGES file for list
-+ * of changes.
-+ */
-+
-+/* Hildon : Button spacing according to the spec. */
-+#define HILDON_BUTTON_SPACING 5
-+/* Selecting hetefogenous mode for a childlayout */
-+#define GTK_BUTTONBOX_HETEROGENOUS 6
-+
- #include <config.h>
- #include "gtkalias.h"
- #include "gtkhbbox.h"
--
-+/* Hildon : We need this to mess with buttons graphics. */
-+#include "gtkbutton.h"
-
- static void gtk_hbutton_box_class_init (GtkHButtonBoxClass *klass);
- static void gtk_hbutton_box_init (GtkHButtonBox *box);
-@@ -36,6 +46,15 @@
- static void gtk_hbutton_box_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation);
-
-+static void osso_gtk_hbutton_child_showhide_handler (GtkWidget *widget,
-+ gpointer user_data);
-+static void osso_gtk_hbutton_box_remove_child_signal_handlers (GtkHButtonBox *hbbox,
-+ GtkWidget *removed_widget,
-+ gpointer data);
-+static void osso_gtk_hbutton_box_find_button_detail (GtkHButtonBox *hbbox,
-+ GtkWidget *addremovewidget,
-+ gpointer data);
-+
- static gint default_spacing = 30;
- static gint default_layout_style = GTK_BUTTONBOX_EDGE;
-
-@@ -76,12 +95,23 @@
-
- widget_class->size_request = gtk_hbutton_box_size_request;
- widget_class->size_allocate = gtk_hbutton_box_size_allocate;
-+
-+ /* HILDON:
-+ * Name buttons only if hildon like style property is set
-+ */
-+ gtk_widget_class_install_style_property (widget_class,
-+ g_param_spec_boolean
-+ ( "hildonlike",
-+ "hildonlike looks",
-+ "Name buttons, 1/0",
-+ FALSE,
-+ G_PARAM_READABLE) );
- }
-
- static void
- gtk_hbutton_box_init (GtkHButtonBox *hbutton_box)
- {
-- /* button_box_init has done everything allready */
-+ /* button_box_init has done everything allready */
- }
-
- GtkWidget*
-@@ -91,6 +121,24 @@
-
- hbutton_box = g_object_new (GTK_TYPE_HBUTTON_BOX, NULL);
-
-+ /* Attach signal handler for 'hildonizing' buttons.
-+ * gtk_hbutton_box_hildonize_buttons will check the name
-+ * and if it is something we're interested in i.e.
-+ *
-+ * hildon_dialogbuttons
-+ * hildon_viewbuttons
-+ *
-+ * it will do the hildonizing
-+ */
-+ g_signal_connect_after (G_OBJECT (hbutton_box), "remove",
-+ G_CALLBACK (osso_gtk_hbutton_box_remove_child_signal_handlers),
-+ NULL);
-+ g_signal_connect_after( G_OBJECT( hbutton_box ), "add",
-+ G_CALLBACK( osso_gtk_hbutton_box_find_button_detail ),
-+ NULL );
-+ g_signal_connect_after( G_OBJECT( hbutton_box ), "remove",
-+ G_CALLBACK( osso_gtk_hbutton_box_find_button_detail ),
-+ NULL );
- return GTK_WIDGET (hbutton_box);
- }
-
-@@ -145,6 +193,11 @@
- gint child_height;
- gint spacing;
- GtkButtonBoxStyle layout;
-+ gint child_xpad=0;
-+ GtkBoxChild *child_req;
-+ GList *children_req;
-+ GtkRequisition treq;
-+
-
- box = GTK_BOX (widget);
- bbox = GTK_BUTTON_BOX (widget);
-@@ -159,6 +212,12 @@
- &child_width,
- &child_height);
-
-+ /* should GTK_BUTTONBOX_HETEROGENOUS add into the GtkButtonBoxStyle
-+ enum struct
-+ */
-+ if( !box->homogeneous )
-+ layout = GTK_BUTTONBOX_HETEROGENOUS;
-+
- if (nvis_children == 0)
- {
- requisition->width = 0;
-@@ -177,11 +236,36 @@
- case GTK_BUTTONBOX_END:
- requisition->width = nvis_children*child_width + ((nvis_children-1)*spacing);
- break;
-+ case GTK_BUTTONBOX_HETEROGENOUS:
-+ children_req = GTK_BOX (box)->children;
-+ child_req = children_req->data;
-+ requisition->width = 0;
-+
-+ while (children_req)
-+ {
-+ child_req = children_req->data;
-+ children_req = children_req->next;
-+
-+ if (GTK_WIDGET_VISIBLE (child_req->widget))
-+ {
-+ gtk_widget_get_child_requisition( child_req->widget,
-+ &(treq) );
-+ requisition->width += treq.width;
-+
-+ gtk_widget_style_get(widget,
-+ "child-internal-pad-x",
-+ &(child_xpad), NULL);
-+ requisition->width += (child_xpad*2);
-+ }
-+ }
-+ requisition->width += ((nvis_children-1)*spacing);
-+
-+ break;
- default:
- g_assert_not_reached();
- break;
- }
--
-+
- requisition->height = child_height;
- }
-
-@@ -227,6 +311,10 @@
- &child_height);
- widget->allocation = *allocation;
- width = allocation->width - GTK_CONTAINER (box)->border_width*2;
-+
-+ if( !base_box->homogeneous )
-+ layout = GTK_BUTTONBOX_HETEROGENOUS;
-+
- switch (layout)
- {
- case GTK_BUTTONBOX_SPREAD:
-@@ -264,6 +352,39 @@
- - GTK_CONTAINER (box)->border_width;
- secondary_x = allocation->x + GTK_CONTAINER (box)->border_width;
- break;
-+ case GTK_BUTTONBOX_HETEROGENOUS:
-+ {
-+ gint sumwidth = 0;
-+ GtkBoxChild *child_h;
-+ GList *children_h = GTK_BOX (box)->children;
-+ /* heterogenous sized childs onto center */
-+ childspacing = spacing;
-+ child_h = children_h->data;
-+
-+ while (children_h )
-+ {
-+ if ( g_list_length (children_h) == 0 ) break;
-+
-+ child_h = children_h->data;
-+ children_h = children_h->next;
-+
-+ if (GTK_WIDGET_VISIBLE (child_h->widget))
-+ {
-+ gint child_xpad = 0;
-+ GtkRequisition treq;
-+ gtk_widget_get_child_requisition( child_h->widget, &(treq) );
-+ sumwidth += treq.width;
-+
-+ gtk_widget_style_get(widget,
-+ "child-internal-pad-x",
-+ &(child_xpad), NULL);
-+ sumwidth += (child_xpad*2);
-+ }
-+ }
-+ x = secondary_x = allocation->x +
-+ ( (allocation->width - sumwidth - (spacing * (nvis_children - 1)))/2 );
-+ break;
-+ }
- default:
- g_assert_not_reached();
- break;
-@@ -282,10 +403,33 @@
-
- if (GTK_WIDGET_VISIBLE (child->widget))
- {
-- child_allocation.width = child_width;
- child_allocation.height = child_height;
- child_allocation.y = y;
-
-+ if(layout != GTK_BUTTONBOX_HETEROGENOUS)
-+ {
-+ child_allocation.width = child_width;
-+ }
-+ else /* if layout will be hetergenous */
-+ {
-+ gint child_hwidth = 0;
-+ GtkRequisition treq;
-+ gint child_xpad = 0;
-+
-+ gtk_widget_get_child_requisition( child->widget, &(treq) );
-+ child_hwidth += treq.width;
-+
-+ gtk_widget_style_get(widget,
-+ "child-internal-pad-x",
-+ &child_xpad, NULL);
-+ child_hwidth += (child_xpad*2);
-+
-+ child_allocation.width = child_hwidth;
-+ childspace = child_hwidth + childspacing;
-+
-+ }
-+
-+ /* calculate the horizontal location */
- if (child->is_secondary)
- {
- child_allocation.x = secondary_x;
-@@ -304,4 +448,104 @@
- }
- }
- }
-+
-+/* Function to wrap "hide" and "show" signals to call
-+ * osso_gtk_hbutton_box_find_button_detail -function.*/
-+static void osso_gtk_hbutton_child_showhide_handler (GtkWidget *widget,
-+ gpointer user_data)
-+{
-+ osso_gtk_hbutton_box_find_button_detail (widget, GTK_WIDGET (user_data), NULL);
-+}
-
-+/* Function to remove "show"&"hide" signal handlers
-+ * from a child when it's removed. */
-+static void osso_gtk_hbutton_box_remove_child_signal_handlers (GtkHButtonBox *hbbox,
-+ GtkWidget *removed_widget,
-+ gpointer data)
-+{
-+ g_signal_handlers_disconnect_by_func (G_OBJECT (removed_widget), osso_gtk_hbutton_box_find_button_detail, hbbox);
-+}
-+
-+/* Signal handler called when we have to set
-+ * painting detail values for buttons in this
-+ * gtk_horizontal_button_box.
-+ */
-+static void osso_gtk_hbutton_box_find_button_detail (GtkHButtonBox *hbbox,
-+ GtkWidget *addremovewidget,
-+ gpointer data)
-+{
-+ GList *child;
-+ gint visible_buttons = 0;
-+ gint secondary_buttons = 0;
-+ GtkWidget *leftmost_button = NULL;
-+ GtkWidget *rightmost_button = NULL;
-+
-+ for( child = GTK_BOX (hbbox)->children ; child ; child = child->next )
-+ {
-+ GtkBoxChild *box_child = child->data;
-+ GtkWidget *child_widget = box_child->widget;
-+ gulong signal_handler = g_signal_handler_find ( G_OBJECT( child_widget ),
-+ G_SIGNAL_MATCH_FUNC,
-+ 0, 0, NULL,
-+ G_CALLBACK (osso_gtk_hbutton_child_showhide_handler),
-+ NULL);
-+
-+ if (signal_handler == 0)
-+ {
-+ g_signal_connect_object ( G_OBJECT( child_widget ),
-+ "hide",
-+ G_CALLBACK ( osso_gtk_hbutton_child_showhide_handler ),
-+ hbbox, G_CONNECT_SWAPPED);
-+ g_signal_connect_object ( G_OBJECT( child_widget ),
-+ "show",
-+ G_CALLBACK ( osso_gtk_hbutton_child_showhide_handler ),
-+ hbbox, G_CONNECT_SWAPPED);
-+ }
-+
-+ if ((GTK_WIDGET_VISIBLE (child_widget)) &&
-+ (GTK_IS_BUTTON (child_widget)))
-+ visible_buttons++;
-+ else
-+ continue;
-+
-+ if (leftmost_button == NULL)
-+ leftmost_button = child_widget;
-+
-+ if (secondary_buttons == 0)
-+ rightmost_button = child_widget;
-+ else
-+ if (box_child->is_secondary)
-+ {
-+ rightmost_button = child_widget;
-+ secondary_buttons++;
-+ }
-+
-+ if (box_child->is_secondary)
-+ rightmost_button = child_widget;
-+ }
-+
-+ if (visible_buttons == 0)
-+ return;
-+
-+ for( child = GTK_BOX (hbbox)->children ; child ; child = child->next )
-+ {
-+ GtkBoxChild *box_child = child->data;
-+ GtkWidget *child_widget = box_child->widget;
-+ OssoGtkButtonAttachFlags attachflags = OSSO_GTK_BUTTON_ATTACH_NORTH | OSSO_GTK_BUTTON_ATTACH_SOUTH;
-+ gboolean automatic_detail;
-+
-+ if (!((GTK_WIDGET_VISIBLE (child_widget)) &&
-+ (GTK_IS_BUTTON (child_widget))))
-+ continue;
-+
-+ if (child_widget == leftmost_button)
-+ attachflags |= OSSO_GTK_BUTTON_ATTACH_WEST;
-+
-+ if (child_widget == rightmost_button)
-+ attachflags |= OSSO_GTK_BUTTON_ATTACH_EAST;
-+
-+ g_object_get (G_OBJECT (child_widget), "automatic_detail", &automatic_detail, NULL);
-+ if (automatic_detail == TRUE)
-+ g_object_set (G_OBJECT (child_widget), "detail", osso_gtk_button_attach_details[attachflags], NULL);
-+ }
-+}