When we're size allocating the children widgets, always trim the
allocation for padding and border of GtkComboBox, as that's all the area
they have available.
It was using the wrong padding values for RTL, and generally, using the
same variables in a distant macro makes this method even more
complicated than it already is...
If we're in menu mode with no children, instead of tweaking the
allocation of the arrow and the separator separately, tweak the
allocation of the box that contain both.
GtkComboBox always handles focus through its children, so there's no
need to request and allocate them again.
In fact, Adwaita was forcing these style properties to zero for
GtkComboBox.
This way themes can use GtkComboBox.combobox-entry to match that
specific case, and GtkComboBox.combobox-entry .button to match the
button/arrow side of the widget.
- Passing a NULL ID string should be equivalent to
gtk_combo_box_set_active (combo_box, -1).
- Use g_strcmp0() instead of strcmp() when comparing
ID strings to avoid a crash when an ID is NULL.
- Return a boolean indicating if the ID was found or not.
https://bugzilla.gnome.org/show_bug.cgi?id=647806
The button is what draws the background/frame outline of the combobox,
and padding is defined as the spacing *inside* the widget between the
border and the content.
https://bugzilla.gnome.org/show_bug.cgi?id=646882
When the combobox is in menu mode, the right padding of the togglebutton
inside, should be allocated to its rightmost children, which is the
arrow.
https://bugzilla.gnome.org/show_bug.cgi?id=646882
I've decided that it is isn't feasible to make cell areas runtime-settable
in the time we have left before 3.0, therefore, I'm going with the
approach to allow init() functions to instantiate the default cell area
and issue a warning if a construct property is ignored.
This is not ideal, but it keeps existing icon view and combo box
subclasses working.
https://bugzilla.gnome.org/show_bug.cgi?id=639139
- Removed GtkTreeMenu from gtk-docs.sgml
- Removed GtkTreeMenu from gtk3-sections.txt
- Removed GtkTreeMenu from gtk.symbols
- Make GtkTreeMenu apis prefixed with '_' (including _get_type()).
- Updated GtkComboBox sources to use the private apis
- Updated GtkCellView to not mention #GtkTreeMenu in gtk-doc statements
- Updated tests/testtreemenu to not use a GtkTreeMenu but still
show a very fancy GtkComboBox
- Moved gtktreemenu.h to private headers section in the makefile.
- Removed include of gtktreemenu.h from gtk.h
And updated gtk_combo_box_list_position() which is still waiting
for GtkTreeView to report natural width in order to properly do
non fixed width dropdown menus.
First iteration at implementing combo box using a delegate
treemenu, almost everything is working. Still need to finalize
sensitivity issues in GtkTreeMenu (and should go ahead and pass
through GtkComboBox code with a fine comb...).
Before hide_all was used on popup_window, which means popup_widget
was also unmapped. This is now no longer the case. This fixes
subsequent pop ups for appears-as-list == 1.
All current users of this CSS property have been updated to deal
with a GtkBorder.
Also a 0 border width has been set in the default CSS to ensure
GtkStyleContext and GtkThemingEngine always provide a non-NULL
pointer for this property.
Based on a patch by Matthias, add an "active-id" property for
GtkComboBox and add some convenience API for GtkComboBoxText.
Also, add a test case to gtk-demo.
This patch adds a GtkComboBox:popup-fixed-width to decide if the
popup's width should be a fixed width matching the combo's allocated width.
The patch includes a kindof hack to work around treeviews currently
not supporting height-for-width geometry (for list-mode only), this
hack can be safely removed once treeviews start reporting natural
widths properly.
GtkComboBox now sports a construct-only "has-entry" property which
decides if it uses a GtkEntry to allow additional user input. Also
it has a new "entry-text-column" to fetch strings for the entry
from the model.
This patch deprecates the GtkComboBoxEntry and updates the rest of GTK+
to use the new semantics on GtkComboBox instead.
GtkComboBoxEntry will be removed altogether before GTK+ 3, in a
later commit.
It doesn't make sense to keep them separate as GtkSizeRequest requires a
GtkWidget and GtkWidget implements GtkSizeRequest, so you can never have
one without the other.
It also makes the code a lot easier because no casts are required when
calling functions.
Also, the names would translate to gtk_widget_get_width() and people
agreed that this would be a too generic name, so a "preferred" was added
to the names.
So this patch moves the functions:
gtk_size_request_get_request_mode() => gtk_widget_get_request_mode()
gtk_size_request_get_width() => gtk_widget_get_preferred_width()
gtk_size_request_get_height() => gtk_widget_get_preferred_height()
gtk_size_request_get_size() => gtk_widget_get_preferred_size()
gtk_size_request_get_width_for_height() =>
gtk_widget_get_preferred_width_for_height()
gtk_size_request_get_height_for_width() =>
gtk_widget_get_preferred_height_for_width()
... and moves the corresponding vfuncs to the GtkWidgetClass.
The patch also renames the implementations of the vfuncs in widgets to
include the word "preferrred".
The keysyms create a lot of potential namespace conflicts for
C, and are especially problematic for introspection, where we take
constants into the namespace, so GDK_Display conflicts with GdkDisplay.
For C application compatiblity, add gdkkeysyms-compat.h which uses
the old names.
Just one user in GTK+ continues to use gdkkeysyms-compat.h, which is
the gtkimcontextsimple.c, since porting that requires porting more
custom Perl code.
The old version wasn't introspectable as it didn't have a length
return parameter. Also, delete gtk_tree_path_get_indices_with_depth,
since it's no longer needed.
In the early 2.14.x releases, GtkAdjustment was changed to enforce
that values are restricted to the range [lower, upper - page_size].
This has always been the documented behaviour, and the recommended
practice is to set page_size to 0 when using adjustments for simple
scalar values, like in a slider or spin button.
Due to the large number of applications that are affected by this
change, the behaviour has been reverted to the old behaviour in
2.14.3, with an explicit warning that this change will be
reintroduced in 2.90.
This reverts commit e6373738fc.
https://bugzilla.gnome.org/show_bug.cgi?id=619474
This commit was created using a script that searched for all docstrings
containing a parameter and the string 'or %NULL'.
Gdk backends and demos excluded as they are not part of a public API
https://bugzilla.gnome.org/show_bug.cgi?id=610474
Deprecate widget flag macros GTK_WIDGET_STATE, GTK_WIDGET_SAVED_STATE,
GTK_WIDGET_FLAGS, GTK_WIDGET_TOPLEVEL, GTK_WIDGET_NO_WINDOW and
GTK_WIDGET_COMPOSITE_CHILD.
Also deprecate the type macros GTK_WIDGET_TYPE, GTK_OBJECT_TYPE_NAME and
GTK_OBJECT_TYPE which have become redundant.
Instances of GTK_WIDGET_TOPLEVEL are replaced with gtk_widget_is_toplevel,
GTK_WIDGET_TYPE is replaced with G_OBJECT_TYPE, GTK_WIDGET_COMPOSITE_CHILD
is replaced with use of the "composite-child" property and uses of
GTK_WIDGET_NO_WINDOW are adjusted to use gtk_widget_get_has_window.
Uses of GTK_WIDGET_SAVED_STATE and GTK_WIDGET_FLAGS inside GtkWidget are
changed to direct flag usage.
Documentation is updated to refer to gtk_widget_set_has_window and
gtk_widget_get_has_window.
Gail and tests are updated as well.
Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=69872
The Gtk-custom.c file in gir-repository contained a number of
introspection annotations. Merge those into the GTK source files.
Some documentation was moved from the tmpl/ files to accomodate
the addition of annotations.
GtkCellEditable::editing-canceled property was added in 2.19 cycle,
so we should make the code that currently uses entry->editing_canceled
directly go through the property
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=599213
GTK_ENTRY()->editing_canceled should really have been a parameter of the
GtkCellEditable::editing-done signal, it should be a property on the cell
editable interface
https://bugzilla.gnome.org/show_bug.cgi?id=594962
Fixed the button-sensivity patch done to GtkComboBox to account for
changes in appearance (changes to the appears-as-list style property).
Also, in list-mode, the event box that has been created below the cell
view also needs to have its sensitivity updated.
Reserving toggle space is nice for consistency in main menus
and context menus, but it gets in the way in special situations,
such as combo boxes, tabular menus, etc.
We do want to have consistent padding in menus in menubars and context
menus, but the menus used in comboboxes don't need the extra padding.
Add private GtkMenu API for turning this off. Bug 564063
2009-02-19 Michael Hasselmann <michaelh@openismus.com>
* gtk/gtkcombobox.c (gtk_combo_box_set_active_internal):
Added a check to not emit a "changed" signal when an already
invalid selection was set to invalid.
svn path=/trunk/; revision=22390
2009-01-21 Christian Dywan <christian@twotoasts.de>
Bug 567413 – GtkComboBoxEntry doesn't emit "changed" signal
on entry editing
* gtk/gtkcombobox.c (gtk_combo_box_set_active): Return only if index
is set. Patch by Carl-Anton Ingmarsson.
svn path=/trunk/; revision=22152
2008-08-06 Michael Natterer <mitch@imendio.com>
* gtk/gtkcombobox.c
* gtk/gtkiconview.c
* gtk/gtkrange.c
* gtk/gtkscrolledwindow.c
* gtk/gtktreeview.c: remove CLAMPing from values passed to
gtk_adjustment_set_value() since it does it right now.
svn path=/trunk/; revision=21021
2008-08-05 Michael Natterer <mitch@imendio.com>
* gtk/gtkcombobox.c (gtk_combo_box_update_sensitivity): bail out
early if priv->button is NULL to avoid zillions of warnings when
destroying combo boxes that were working fine before the
button sensitivity patch.
svn path=/trunk/; revision=21014
2008-08-04 Matthias Clasen <mclasen@redhat.com>
Bug 382291 – Automatically dim the combobox when the model is empty
* gtk/gtk.symbols:
* gtkcombobox.[hc]: Add a GtkComboBox::button-sensitivity
property with getter and setter to control the sensitity of
empty combo boxes. Patch by Carlos Garnacho, Sven Herzberg,
Christian Dywan and others.
* README.in: Add a note about automatic combobox sensitivity.
svn path=/trunk/; revision=20997
2008-06-20 Michael Natterer <mitch@imendio.com>
Bug 538395 – gtk_combo_box_append_text() on non-compliant model
segfaults
* gtk/gtkcombobox.c (gtk_combo_box_append_text)
(gtk_combo_box_insert_text)
(gtk_combo_box_prepend_text)
(gtk_combo_box_remove_text)
(gtk_combo_box_real_get_active_text): apply patch from Christian
Dywan which adds the needed g_return_if_fail() to prevent the
crashes.
svn path=/trunk/; revision=20477
2008-06-16 Michael Natterer <mitch@imendio.com>
* gtk/gtkcombobox.c (gtk_combo_box_class_init): use
_gtk_marshal_BOOLEAN__VOID instead of the deprecated
gtk_marshal_BOOLEAN__VOID.
svn path=/trunk/; revision=20404
2008-06-13 Michael Natterer <mitch@imendio.com>
* gtk/gtkcombobox.c (gtk_combo_box_menu_position): cast menu's
toplevel to GtkWindow when passing to gtk_window_set_type_hint().
svn path=/trunk/; revision=20372
2008-16-03 Alberto Ruiz <aruiz@gnome.org>
* gtl/gtkcombobox.c: (gtk_combo_box_size_allocate) The child is now aware of
both the combobox and frame (if has-frame is set) thickness and border. (bug #521442)
svn path=/trunk/; revision=19886
2008-03-11 Alberto Ruiz <aruiz@gnome.org>
* gtk/gtkcombobox.c (gtk_combo_box_size_allocate):
Take thickness into account in the size allocation of the child widgets in
list mode.
Fixes#521442
svn path=/trunk/; revision=19747
2008-02-12 Matthias Clasen <mclasen@redhat.com>
* gtk/*.c: Unify the handling of various "Enter" keysyms
all over the place. (#515047, Christian Persch)
svn path=/trunk/; revision=19528
2008-02-08 Cody Russell <bratsche@gnome.org>
* gtk/gtkcombobox.c (gtk_combo_box_cell_layout_pack_start):
Removed an extra semicolon. (#515219, reported by Kazuki IWAMOTO)
svn path=/trunk/; revision=19502
2008-02-04 Michael Natterer <mitch@imendio.com>
* gtk/gtkcombobox.c (gtk_combo_box_cell_layout_add_attribute):
g_return_if_fail() is the cell is not part of the combo instead of
crashing in the next line.
svn path=/trunk/; revision=19462
2007-12-24 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkcombobox.c: When popping up a menu from a treeview cell,
use the time and button information from the event. (#504901,
Peter Bloomfield)
svn path=/trunk/; revision=19234
2007-08-08 Mikael Hallendal <micke@imendio.com>
* gtk/gtkcombobox.c (gtk_combo_box_class_init):
Document the new signals popup, popdown and move-active.
svn path=/trunk/; revision=18594
2007-07-09 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkcombobox.c (gtk_combo_box_model_row_deleted): Emit
::changed when removing the active row. (#452056, Paul Pogonyshev)
svn path=/trunk/; revision=18416
2007-06-14 Carlos Garnacho <carlos@imendio.com>
* gtk/gtkcombobox.c: removed unused and hardly visible GtkFrame from
the menu widget hierarchy when ::appears-as-list is TRUE. (#435471)
* NEWS: add a note about repercussions of this change to RC files.
svn path=/trunk/; revision=18127
2007-06-13 Michael Natterer <mitch@imendio.com>
* gtk/gtkmenuitem.[ch]: add "submenu" property. Fix
gtk_menu_item_set_submenu() to accept NULL submenus and deprecate
gtk_menu_item_remove_submenu() because we have a properly working
setter now (bug #447065).
* gtk/gtk.symbols: deprecate gtk_menu_item_remove_submenu().
* gtk/gtkcombobox.c: use gtk_menu_item_set_submenu() instead of
gtk_menu_item_remove_submenu().
svn path=/trunk/; revision=18125
2007-05-18 Carlos Garnacho <carlos@imendio.com>
Make combobox menu popdown keybindable (#433593)
* gtk/gtkcombobox.c (gtk_combo_box_class_init): Add "popdown" binding
signal and keybindings.
(gtk_combo_box_real_popdown): Added, "popdown" keybinding signal
handler.
(gtk_combo_box_menu_key_press):
(gtk_combo_box_list_key_press): forward the event to the combobox if
it wasn't handled by the menu.
svn path=/trunk/; revision=17861
2007-05-02 Armin Burgmeier <armin@openismus.com>
* gtk/gtkcombobox.c: Destroy the menu in dispose instead of
finalize, because the menu might unparent itself from its parent and
cause a signal emission on a finalized object. (#430746)
svn path=/trunk/; revision=17782
2007-03-07 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkcombo.c: (gtk_combo_init):
* gtk/gtkcombobox.c: (gtk_combo_box_set_popup_widget),
(gtk_combo_box_menu_setup):
Set names on the popup widgets to make them themable. (#414975,
Benjamin Berg)
svn path=/trunk/; revision=17417
Thu Feb 1 12:22:06 2007 Tim Janik <timj@imendio.com>
* gtk/gtkcombobox.c (gtk_combo_box_list_destroy): remove extra reference
that gtkcombobox keeps on priv->popup_widget if it's a tree view.
svn path=/trunk/; revision=17246
2007-01-04 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkcombobox.c (gtk_combo_box_popup): move set_cursor
after realization of the popup window, so clamp node doesn't fail.
(#346616, Tommi Komulainen, patch by Kristian Rietveld).
svn path=/trunk/; revision=17073
2006-12-17 Matthias Clasen <mclasen@redhat.com>
Fix a few problems with nested menus in comboboxes
(#386694, Yevgen Muntyan)
* gtk/gtkcombobox.c (gtk_combo_box_menu_fill_level): Always
connect the activate callback.
(gtk_combo_box_menu_item_activate): Do nothing if called on
an item with a submenu.
(gtk_combo_box_menu_row_deleted): Remove a submenu when it
is empty.
2006-12-15 Dom Lachowicz <domlachowicz@gmail.com>
* gtk/gtkcombobox.c: Make GtkComboBox in "appears-as-list" mode
more closely resemble its Win32 counterpart. Bug #340204.