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.
2006-12-13 Benjamin Berg <benjamin@sipsolutions.net>
* engines/clearlooks/src/clearlooks_rc_style.c:
(clearlooks_rc_style_init), (clearlooks_gtk2_rc_parse_dummy),
(clearlooks_rc_style_parse), (clearlooks_rc_style_merge):
* engines/clearlooks/src/clearlooks_rc_style.h:
* engines/clearlooks/src/clearlooks_style.c:
(clearlooks_style_draw_box), (clearlooks_style_init_from_rc),
(clearlooks_style_copy):
* engines/clearlooks/src/clearlooks_style.h:
* engines/clearlooks/src/clearlooks_types.h:
- Remove unused code/options from the code. Warn about their usage
while parsing.
* themes/Clearlooks/gtk-2.0/gtkrc:
- Remove options that don't have any effect.
2006-11-16 Michael Natterer <mitch@imendio.com>
Add new infrastructure for notifications of failed keyboard
navigation and navigation with restricted set of keys.
The patch handles configurable beeping, navigating the GUI with
cursor keys only (as in phone environments), and configurable
wrap-around. Fixes bugs #322640, #70986, #318827, #334726, #334742
and #309291.
* gtk/gtksettings.c: added properties gtk-keynav-cursor-only,
gtk-keynav-wrap-around and gtk-error-bell.
* gtk/gtkwidget.[ch]: added new signal "keynav-failed" and public
API to emit it. Added New function gtk_widget_error_bell() which
looks at the gtk-error-bell setting and calls gdk_window_beep()
accordingly.
* gtk/gtk.symbols: add the new widget symbols.
* gtk/gtkcellrendereraccel.c
* gtk/gtkimcontextsimple.c
* gtk/gtkmenu.c
* gtk/gtknotebook.c: use gtk_widget_error_bell() or look at the
gtk-error-bell setting instead of calling gdk_display_beep()
unconditionally.
* gtk/gtkcombobox.c
* gtk/gtkentry.c
* gtk/gtkiconview.c
* gtk/gtklabel.c
* gtk/gtkmenushell.c
* gtk/gtkspinbutton.c
* gtk/gtktextview.c
* gtk/gtktreeview.c: call gtk_widget_error_bell() on failed keynav.
* gtk/gtkentry.c
* gtk/gtklabel.c
* gtk/gtkrange.c
* gtk/gtktextview.c: consult gtk_widget_keynav_failed() on failed
cursor navigation and leave the widget if it returns FALSE.
* gtk/gtkmenushell.c
* gtk/gtknotebook.c: only wrap around if gtk-keynav-wrap-around
is TRUE.
* gtk/gtkradiobutton.c: ask gtk_widget_keynav_failed() to decide
whether to to wrap-around, and don't select active items on cursor
navigation if gtk-keynav-cursor-only is TRUE. Should look at
gtk-keynav-wrap-around too, will look into that.
2006-11-01 Kristian Rietveld <kris@imendio.com>
* gtk/gtkcombobox.c (gtk_combo_box_class_init),
(gtk_combo_box_size_request): add arrow-size property to control
the minimum size of the arrow, have the arrow scale up with the
font by default. (#357950).
2006-08-14 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkcombobox.c (gtk_combo_box_remove): Null the
cell_view pointer if the internal cell view is removed.
(#348828, Rolando Espinoza La Fuente)
2006-06-26 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkcombobox.c (gtk_cell_view_menu_item_new): Avoid
a refcounting leak in the python bindings. (#344876, Phil Dumont)
2006-06-02 Kristian Rietveld <kris@imendio.com>
Separate sensitive/selectable properties.
* gtk/gtktreeselection.c (tree_column_is_sensitive): remove,
(_gtk_tree_selection_row_is_selectable): remove checks to see if at
least one column is sensitive,
(gtk_tree_selection_real_select_node): remove code which enables
insensitive rows to always be unselected.
* gtk/gtktreeview.c (gtk_tree_view_row_changed): remove code
that unselects a node if it just became insensitive.
* gtk/gtkcombobox.c (gtkcombo_box_list_select_func): new function,
based on the at least one column sensitive check from
_gtk_tree_selection_row_is_selectable(),
(gtk_combo_box_list_setup): set selection function on tree selection.
Tue Apr 25 10:25:28 2006 Søren Sandmann <sandmann@redhat.com>
* tests/testgtk.c (create_alpha_window): Create 'composited' label.
* tests/testgtk.c (on_composited_changed): New function, change
the label to say whether the screen is composited or not.
* gtk/gtkwindow.c (gtk_window_on_composited_changed): When
composited status change, invalidate the window and propagate the signal;.
* gtk/gtkwindow.c (gtk_window_map): Set the appropriate type hint
if reset_type_hint is TRUE.
* gtk/gtkwindow.c (gtk_window_set_type_hint): If hint is one of
the old hints, store a shadow copy in the public window->type_hint
bitfield, otherwise set this field to normal. Set the private
field to the type hint.
* gtk/gtkwindow.c (gtk_window_init): Initialize priv->type_hint.
* gtk/gtkwindow.c (struct _GtkWindowPrivate): New field
"reset_type_hint" indicating whether the type hint needs to be
reset. New field type_hint containing a GdkWindowTypeHint.
* gtk/gtkwidget.c (propagate_composited_changed): New function to
propagate changes in composited status.
(gtk_widget_class_init): Add composited_changed signal.
* gtk/gtkwidget.h (struct _GtkWidgetClass): New signal composited-changed.
* gtk/gtkwidget.c (gtk_widget_is_composited): New function.
* gtk/gtktooltips.c (gtk_tooltips_draw_tips): Set transient for.
* gtk/gtktooltips.c (gtk_tooltips_force_window): Set the type hint
* gtk/gtkmenuitem.c (gtk_menu_item_position_menu): Compute whether
the item belongs to a menubar. Set the type_hint appropriately
depending on the outcome.
* gtk/gtkmenu.c (gtk_menu_position): Set the default type hint here.
* gtk/gtkmenu.c (gtk_menu_attach_to_widget): connect to hierarchy
changed on the attach widget.
* gtk/gtkmenu.c (attach_widget_hierarchy_changed): New function to
set the transient_for property for menus.
* gtk/gtkdnd.c (set_icon_stock_pixbuf): Set the appropriate type hint.
* gtk/gtkcombo.c (gtk_combo_popup_list): Make the popup window
transient for the toplevel.
* gtk/gtkcombobox.c (gtk_combo_box_set_popup_widget): Set
transient-for, for the popup window.
* gdk/x11/gdkwindow-x11.c (gdk_window_get_type_hint): Support for
new window types.
* gdk/x11/gdkwindow-x11.c (gdk_window_set_type_hint): Add support
for new window types.
* gdk/x11/gdkscreen-x11.c (_gdk_x11_screen_process_owner_change):
New function called whenever the compositing manager comes and goes.
* gdk/x11/gdkscreen-x11.c (gdk_screen_is_composited): New function.
* gdk/x11/gdkscreen-x11.c
(_gdk_x11_screen_request_cm_notification, make_cm_atom,
check_is_composited): New functions
* gdk/x11/gdkevents-x11.c (gdk_event_translate): Call
_gdk_x11_screen_process_owner_change when an
XFixesSelectionNotifyEvent is received.
* gdk/x11/gdkdisplay-x11.c (gdk_display_open): Call
_gdk_x11_screen_request_cm_notification() on all screens.
* gdk/quartz/gdkscreen-quartz.c (gdk_screen_is_composited): Dummy
implementation.
* gdk/gdkscreen.c (gdk_screen_class_init): New signal,
'composited-changed'.
* gdk/gdkwindow.h: Add new EWMH window types.
* gdk/win32/gdkscreen-win32.c (gdk_screen_is_composited)
2006-03-20 Matthias Clasen <mclasen@redhat.com>
* gtk/gtknotebook.c (gtk_notebook_remove_tab_label): Don't leave
page->tab_label dangling.
(gtk_notebook_real_remove): Use GTK_IN_DESTRUCTION.
(gtk_notebook_destroy): Leave the removal of the children
to the container destroy method. (#319032, Yevgen Muntyan)
2006-03-20 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkcombobox.c (gtk_combo_box_remove): Use the existing
GTK_IN_DESTRUCTION flag, rather than roll our own.
2006-03-15 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkcombobox.c (gtk_combo_box_list_button_released)
(gtk_combo_box_list_key_press): Popdown the list before changing
the active iter, otherwise people will be surprised by the
grabs that are still in place when their ::changed handler
runs.
2006-03-09 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkcombobox.c (gtk_combo_box_class_init): Replace the
popup-show and popup-hide signals with a readonle popup-shown
property. (#162531, Christian Persch)
2006-01-14 Matthias Clasen <mclasen@redhat.com>
Fix a crash with combo boxes in RESIZE_IMMEDIATE
containers. (#326806, Sebastian Bacher)
* gtk/gtkcombobox.c (gtk_combo_box_size_allocate)
(gtk_combo_box_size_request): Don't call
gtk_combo_box_check_appearance() from here, as that
can lead to recursion.
(gtk_combo_box_init): Instead, call it here.
2005-11-10 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkcombobox.c: Add show-popup and hide-popup signals and
emit them when the popup is shown or hidden. (#162531, Tommi
Komulainen)
2005-09-01 Matthias Clasen <mclasen@redhat.com>
* gdk/*.c: Intern some more strings.
* gtk/gtkintl.h:
* gtk/*.c: Define an I_() macro and use it instead of the
bulky g_intern_static_string().
2005-08-31 Matthias Clasen <mclasen@redhat.com>
* gdk/Makefile.am:
* gtk/Makefile.am: Intern type names in code generated by
glib-mkenums, too.
* gtk/*.c:
* gdk/x11/*.c:
* gdk/*.c: Intern type names before registering the type to avoid
unnecessary copies.
2005-07-21 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkcombobox.c (gtk_combo_box_list_destroy): Cleanup
a possible resize idle. (#311141, Robert Ögren)
* gtk/gtktreemodelsort.c (gtk_tree_model_sort_row_changed):
(gtk_tree_model_sort_sort_level): Ref the level while using it,
otherwise it may get nuked by gtk_tree_model_sort_increment_stamp.
(gtk_tree_model_sort_row_deleted): Don't leak the root level
here. (#300089, James Bramford, Markku Vire)
2005-07-18 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkcombobox.c (gtk_combo_box_set_focus_on_click): Propagate
the focus-on-click value to the button. (#310543, Christian Persch)
2005-05-26 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkcombobox.c (gtk_combo_box_list_auto_scroll): Make
autoscrolling work at the bottom of the screen.
2005-05-17 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkcombobox.c (gtk_combo_box_list_button_released): Keep
the popup posted if the button is released over the cellview.
This matches the behaviour of other combo box implementations.
(#171378)