diff options
-rw-r--r-- | widgets/misc/ChangeLog | 7 | ||||
-rw-r--r-- | widgets/misc/e-search-bar.c | 27 |
2 files changed, 31 insertions, 3 deletions
diff --git a/widgets/misc/ChangeLog b/widgets/misc/ChangeLog index ccd2c1828c..112d6d3aec 100644 --- a/widgets/misc/ChangeLog +++ b/widgets/misc/ChangeLog @@ -1,5 +1,12 @@ 2001-01-28 Ettore Perazzoli <ettore@ximian.com> + * e-search-bar.c (add_spacer): Make the spacer 4 pixels wider. + (add_dropdown): Put the dropdown button into an event box with a + 1-pixel border, so that we match the [Hardcoded! Stupid GTK+!] + border around the option menu. + +2001-01-28 Ettore Perazzoli <ettore@ximian.com> + * e-dropdown-button.c (menu_deactivate_cb): New function to change the state of the toggle button when the pop-up menu disappears. (impl_clicked): Removed. diff --git a/widgets/misc/e-search-bar.c b/widgets/misc/e-search-bar.c index 39730c7aa6..4c49f76d55 100644 --- a/widgets/misc/e-search-bar.c +++ b/widgets/misc/e-search-bar.c @@ -106,6 +106,7 @@ add_dropdown (ESearchBar *esb, ESearchBarItem *items) { GtkWidget *menu; + GtkWidget *event_box; int i; menu = gtk_menu_new (); @@ -131,13 +132,23 @@ add_dropdown (ESearchBar *esb, GTK_WIDGET_UNSET_FLAGS (esb->dropdown, GTK_CAN_FOCUS); gtk_widget_show (esb->dropdown); - gtk_box_pack_start(GTK_BOX(esb), esb->dropdown, FALSE, FALSE, 0); + /* So, GtkOptionMenu is stupid; it adds a 1-pixel-wide empty border + around the button for no reason. So we add a 1-pixel-wide border + around the button as well, by using an event box. */ + event_box = gtk_event_box_new (); + gtk_container_set_border_width (GTK_CONTAINER (event_box), 1); + gtk_container_add (GTK_CONTAINER (event_box), esb->dropdown); + gtk_widget_show (event_box); + + gtk_box_pack_start(GTK_BOX(esb), event_box, FALSE, FALSE, 0); } static void add_option(ESearchBar *esb, ESearchBarItem *items) { GtkWidget *menu; + GtkRequisition dropdown_requisition; + GtkRequisition option_requisition; int i; esb->option = gtk_option_menu_new(); @@ -167,6 +178,15 @@ add_option(ESearchBar *esb, ESearchBarItem *items) gtk_option_menu_set_history (GTK_OPTION_MENU (esb->option), 0); gtk_widget_set_sensitive (esb->option, TRUE); + + /* Set the minimum height of this widget to that of the dropdown + button, for a better look. */ + g_assert (esb->dropdown != NULL); + + gtk_widget_size_request (esb->dropdown, &dropdown_requisition); + gtk_widget_size_request (esb->option, &option_requisition); + + gtk_container_set_border_width (GTK_CONTAINER (esb->dropdown), GTK_CONTAINER (esb->option)->border_width); } static void @@ -187,7 +207,8 @@ add_spacer (ESearchBar *esb) spacer = gtk_drawing_area_new(); gtk_widget_show(spacer); gtk_box_pack_start(GTK_BOX(esb), spacer, FALSE, FALSE, 0); - gtk_widget_set_usize(spacer, 15, 1); + + gtk_widget_set_usize(spacer, 19, 1); } @@ -303,7 +324,7 @@ e_search_bar_construct (ESearchBar *search_bar, g_return_if_fail (menu_items != NULL); g_return_if_fail (option_items != NULL); - gtk_box_set_spacing(GTK_BOX (search_bar), 1); + gtk_box_set_spacing (GTK_BOX (search_bar), 1); add_dropdown (search_bar, menu_items); |