We expand a tab if either tab-expand is set, or the generic widget
expand property in the correct direction is set. And we do not
propagate expand flags from tab labels to the notebook, only
the expand flags from the pages.
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".
Dealing with bare pointers is problematic for language bindings,
using interned strings is much more straightforward and more than
good enough for what is needed here.
http://bugzilla.gnome.org/show_bug.cgi?id=630521
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.
GtkNotebook was filling widget->requisition directly at "size-request"
time instead of filling in the *requsition argument, also (more importantly)
at size_allocate time GtkNotebook was consulting the action widget's
widget->requisition directly instead of safely calling
gtk_widget_get_child_requisition(). This commit closes bgo #628068.
In certain cases the menu label of a notebook page will be reused after the
page was removed from the notebook, for instance when a page is dragged from
one notebook to another. For such cases make sure that the menu label isn't
destroyed as part of destroying the menu item it was in.
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.
So they're not included in the result of gtk_container_foreach() which
preserves it as a convenient way to get the list of all notebook content
widgets.
Bug #601409.
Add support for putting widgets in the tab area, before or after
the tabs. This was requested a long time ago in bug 116650. The
implementation is the work of Johannes Schmid.
Previously, this flag wasn't cleared properly when the notebook lost
focus, but only when the notebook was focussed again later.
As this flag is only used to advance correctly focus pages by grabbing
focus to the new page after switching the page, this is not good.
In particular, it can cause a focus grab when programmatically switching
the notebook page and the focus is inside a completely different widget.
A previous attempt at this fix in
6e0af6c252 has been reverted in
dfe0c8c0ca because it didn't work
correctly.
Previously, this flag wasn't cleared properly when the notebook lost
focus, but only when the notebook was focussed again later.
As this flag is only used to advance correctly focus pages by grabbing
focus to the new page after switching the page, this is not good.
In particular, it can cause a focus grab when programmatically switching
the notebook page and the focus is inside a completely different widget.
GtkNotebook used gdk_window_get_pointer() incorrectly, as it already
had coordinates from various GdkEvents. Using get_pointer() means
that you get pointer positions *after* the event has happened, which
leads to visual out-of-sync results, or inadvertently detached tabs if
you click on them while your machine is being slow.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
2008-10-30 Matthias Clasen <mclasen@redhat.com>
Bug 558522 – scroll arrow painted insensitive even though there
are pages beyond the edge
gtk/gtknotebook.c (gtk_notebook_real_insert_page): Redraw
arrows. Pointed out by Christian Persch
svn path=/trunk/; revision=21738
2008-09-26 Matthias Clasen <mclasen@redhat.com>
Bug 553578 - tabs are not drawn correctly
* gtk/gtknotebook.c: Track the visibility state of notebook tabs
between allocations so that we know to redraw the tab labels if
tabs are hidden and shown without changing position.
Reported by Marek Kašík, patch by Owen Taylor.
svn path=/trunk/; revision=21525
slow
* gtk/gtknotebook.c (gtk_notebook_page_allocate): Return a boolean
that indicates whether the tab allocation has changed.
(gtk_notebook_pages_allocate): Only redraw the tabs if their
allocation has changed.
(gtk_notebook_calculate_tabs_allocations): Remove unused return value.
Patch by Owen Taylor
svn path=/trunk/; revision=21414
2008-08-05 Milan Crha <mcrha@redhat.com>
* gtk/gtknotebook.c: (gtk_notebook_do_arrow): Allow changing page with
arrows even on non-focusable notebook. (#528091)
svn path=/trunk/; revision=21170
2008-08-12 Sven Neumann <sven@gimp.org>
* gtk/gtknotebook.c
* gtk/gtkradiotoolbutton.c: property nick and blurb should be
marked with P_(), not _().
svn path=/trunk/; revision=21091
2008-08-12 Michael Natterer <mitch@imendio.com>
* gtk/*.c: consistently chain up using
GTK_FOO_CLASS(parent_class)->bar(instance) instead of
(*GTK_FOO_CLASS(parent_class))->bar(instance).
svn path=/trunk/; revision=21085
2008-08-04 Carlos Garnacho <carlos@imendio.com>
* gtk/gtknotebook.c (gtk_notebook_expose): Set drag window background
to be the GtkNotebook background color. This is a workaround to
prevent black pixels in rounded tabs when reordering. Improves
#368234.
svn path=/trunk/; revision=20973
2008-07-04 Michael Natterer <mitch@imendio.com>
Fix make check:
* gtk/Makefile.am: remove GTK_DISABLE_DEPRECATED from INCLUDES
again :-(
* gtk/gtkclist.c
* gtk/gtkcombo.c
* gtk/gtkctree.c
* gtk/gtklist.c
* gtk/gtklistitem.c
* gtk/gtknotebook.c
* gtk/gtkobject.c
* gtk/gtkoldeditable.c
* gtk/gtkpixmap.c
* gtk/gtktext.c
* gtk/gtktree.c
* gtk/gtktreeitem.c: don't #define it again before including
gtkalias.h after it has been #undef'ed before.
svn path=/trunk/; revision=20763
2008-06-30 Cody Russell <bratsche@gnome.org>
* Practically everything changed.
Change all references of GIMP Toolkit (and variations of it)
to GTK+ Toolkit, showing no mercy at all to our beloved
ancestry. (#540529)
svn path=/trunk/; revision=20709
2008-06-20 Johan Dahlin <jdahlin@async.com.br>
* gtk/gtkbutton.c:
* gtk/gtkcolorsel.c:
* gtk/gtkentry.c:
* gtk/gtkitemfactory.c:
* gtk/gtknotebook.c:
Fix up deprecated markup syntax. Add version numbers and
a message on the remaning ones.
svn path=/trunk/; revision=20655
2008-06-17 Tor Lillqvist <tml@novell.com>
* gtk/gtknotebook.c: Need to do the GTK_DISABLE_DEPRECATED
#undef/#define dance here, too, because
gtk_notebook_set_group_id() is deprecated but used here before it
is defined, and gcc complains about conflicting type from the
implicit int declaration when it sees the actual void definition.
svn path=/trunk/; revision=20435
2008-06-08 Björn Lindqvist <bjourne@gmail.com>
Bug 131920 – gtkNotebook sends incorrect switch_page value
* gtk/gtknotebook.c (gtk_notebook_real_remove): Make switch-page
signal send correct page index when page index 0 is active and
removed. (#131920, Samuel Fogh)
svn path=/trunk/; revision=20339
2008-04-10 Carlos Garnacho <carlos@imendio.com>
* gtk/gtknotebook.c (hide_drag_window): Do not call
gtk_widget_set_parent_window(), using widget->window instead of NULL
to unset is the wrong thing, and gtk_widget_unparent() will already
take care of this (#467698, patch by Sébastien Granjoux)
svn path=/trunk/; revision=19987
2008-02-15 Matthias Clasen <mclasen@redhat.com>
* gtk/gtknotebook.c (gtk_notebook_stop_reorder): Prevent
a crash with hidden, reorderable tabs. (#513230,
Mike Massonnet, patch by Carlos Garnacho)
svn path=/trunk/; revision=19593
2007-12-30 Johannes Schmid <jhs@gnome.org>
* gtk/gtknotebook.c: (gtk_notebook_stop_reorder):
Also reorder menu when reordering tabs by drag & drop
(Bug #506474)
* tests/testnotebookdnd.c: (create_notebook_with_notebooks):
Add a menu to one of the notebooks to have a test-case for
the change mentioned above.
svn path=/trunk/; revision=19294
2007-12-10 Matthias Clasen <mclasen@redhat.com>
* gtk/gtknotebook.c (gtk_notebook_real_remove): Another fix
to avoid further fallout from the fix for bug 388321.
svn path=/trunk/; revision=19139
2007-06-04 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkmarshalers.list:
* gtk/gtknotebook.[hc]: Add a create-window signal that allows
to override the global create-window-hook on a per-notebook
basis. The default handler falls back to the global hook.
(#386935, Christian Hammond)
svn path=/trunk/; revision=18024
2007-05-19 Matthias Clasen <mclasen@redhat.com>
* gtk/gtk.symbols:
* gtk/gtknotebook.[hc]: Deprecate gtk_notebook_[gs]et_group_id
in favour of new functions gtk_notebook_[gs]et_group, which
takes a pointer as group identifier and makes it easier to
avoid group id collisions. (#386930, Christian Hammond)
* tests/testnotebookdnd.c: Use new grouping api.
svn path=/trunk/; revision=17873
2007-05-18 Carlos Garnacho <carlos@imendio.com>
* gtk/gtknotebook.c (gtk_notebook_init) (gtk_notebook_drag_motion)
(gtk_notebook_drag_drop): Allow widgets up in the hierarchy to run
their DnD handlers if the target doesn't match with anything the
notebook manages. (#350665, Joakim Lundborg).
svn path=/trunk/; revision=17860
2007-05-18 Carlos Garnacho <carlos@imendio.com>
* gtk/gtknotebook.c (gtk_notebook_real_insert_page): Do not unset
the brand new current page if there was none set previously. Fixes
#425138 (Reported by Michail Crayson). Some code simplifications.
(gtk_notebook_draw_arrow): code style fix.
svn path=/trunk/; revision=17858
2007-03-08 Matthias Clasen <mclasen@redhat.com>
* gtk/gtknotebook.c (gtk_notebook_real_insert_page):
Set child visibility to FALSE here; it will be turned
back on in switch_page. (#413664, Carlos Garnacho)
svn path=/trunk/; revision=17434
2007-01-05 Carlos Garnacho <carlosg@gnome.org>
* gtk/gtknotebook.c (gtk_notebook_size_request): take into account
both scroll arrows when calculating size request in GTK_POS_LEFT or
GTK_POS_RIGHT notebooks. (#393124, reported by Christian Persch)
svn path=/trunk/; revision=17080