Commit Graph

20900 Commits

Author SHA1 Message Date
Matthias Clasen
bfc1a2118f GtkCellView: Use G_PARAM_EXPLICIT_NOTIFY 2014-06-09 13:30:58 -04:00
Matthias Clasen
d33b14bfbe GtkCellView: Explicitly notify for orientation 2014-06-09 13:30:57 -04:00
Matthias Clasen
2d88a3ae30 GtkCellRendererToggle: Use G_PARAM_EXPLICIT_NOTIFY 2014-06-09 13:30:57 -04:00
Matthias Clasen
c96f5b953a GtkCellRendererText: Use G_PARAM_EXPLICIT_NOTIFY 2014-06-09 13:30:57 -04:00
Matthias Clasen
ce76a47d68 GtkCellRendererSpin: Use G_PARAM_EXPLICIT_NOTIFY
Also avoid redundant notification for ::digits.
2014-06-09 13:30:56 -04:00
Matthias Clasen
31654f4515 GtkCellRendererProgress: Use G_PARAM_EXPLICIT_NOTIFY
Also add explicit notification and avoid redundant notification
for some properties.
2014-06-09 13:30:56 -04:00
Matthias Clasen
af4d142df5 GtkCellRendererCombo: Use G_PARAM_EXPLICIT_NOTIFY
And add explicit notification for some properties.
2014-06-09 13:30:56 -04:00
Matthias Clasen
da4a1e1594 GtkCellRenderer: Use G_PARAM_EXPLICIT_NOTIFY 2014-06-09 13:30:56 -04:00
Matthias Clasen
be25e4ebcb GtkCellAreaBox: Explicitly notify orientation 2014-06-09 13:30:56 -04:00
Matthias Clasen
510c2cdfb6 GtkWindow: Use G_PARAM_EXPLICIT_NOTIFY 2014-06-09 13:30:55 -04:00
Matthias Clasen
05cabd3557 GtkWindow: Trivial cleanup 2014-06-09 13:30:55 -04:00
Matthias Clasen
8677446fe0 GtkLabel: Use G_PARAM_EXPLICIT_NOTIFY 2014-06-09 13:30:55 -04:00
Matthias Clasen
1720eb4713 GtkComboBox: Notify for has-frame and editing-canceled 2014-06-09 13:30:55 -04:00
Matthias Clasen
9722ae0458 GtkCellEditable: Use G_PARAM_EXPLICIT_NOTIFY
This is an interface property, so all implementors will have
to adjust to this.
2014-06-09 13:30:55 -04:00
Matthias Clasen
5ce3d8e74f GtkAppChooserButton: Use G_PARAM_EXPLICIT_NOTIFY 2014-06-09 13:30:54 -04:00
Matthias Clasen
d6cae074a6 GtkContainer: Use G_PARAM_EXPLICIT_NOTIFY 2014-06-09 13:30:54 -04:00
Matthias Clasen
acad03f77b GtkWidget: Use G_PARAM_EXPLICIT_NOTIFY
A few properties here are special, and can't benefit from it:
those which are just shorthands, like ::margin and ::expand,
and those that have explicit -set properties, like::hexpand
and ::vexpand.
2014-06-09 13:30:54 -04:00
Matthias Clasen
2e04899ee5 GtkOrientable use G_PARAM_EXPLICIT_NOTIFY
This one is a little tricky, since we override this property
in many places, and you cannot add flags when overriding. So,
all places where this is overridden will have to make sure to
notify explicitly.
2014-06-09 13:30:54 -04:00
Matthias Clasen
126942f04c GtkEntry: Use G_PARAM_EXPLICIT_NOTIFY 2014-06-09 13:30:54 -04:00
Matthias Clasen
1139b21997 GtkCellRendererText: Use G_PARAM_EXPLICIT_NOTIFY for 'alignment' 2014-06-09 13:30:54 -04:00
Matthias Clasen
8b1757b6e0 GtkCellAreaBox: Use G_PARAM_EXPLICIT_NOTIFY 2014-06-09 13:30:54 -04:00
Matthias Clasen
d5c56ea780 GtkCalendar: Use G_PARAM_EXPLICIT_NOTIFY
And make sure we correctly notify for all properties.
2014-06-09 13:30:53 -04:00
Matthias Clasen
c5c3c335a6 GtkAspectFrame: Use G_PARAM_EXPLICIT_NOTIFY 2014-06-09 13:30:53 -04:00
Matthias Clasen
b9e7d1e8a6 GtkApplicationWindow: Use G_PARAM_EXPLICIT_NOTIFY 2014-06-09 13:30:53 -04:00
Matthias Clasen
1bb880af36 GtkApplicationWindow: Avoid a crash
In several places, we were not correctly dealing with the
possibility of application not being set.
2014-06-09 13:30:53 -04:00
Matthias Clasen
81c35b5b6e GtkAppChooserWidget: Use G_PARAM_EXPLICIT_NOTIFY 2014-06-09 13:30:53 -04:00
Matthias Clasen
ed28a71bf2 GtkAppChooserButton: Fix a possible crash
We were not correctly dealing with content_type being NULL
in one place.
2014-06-09 13:30:53 -04:00
Matthias Clasen
a27ba44331 GtkComboBox: Use G_PARAM_EXPLICIT_NOTIFY 2014-06-09 13:30:53 -04:00
Matthias Clasen
5e04bd04c8 GtkCellRendererSpinner: Use G_PARAM_EXPLICIT_NOTIFY 2014-06-09 13:30:52 -04:00
Matthias Clasen
f4e60bc36d GtkCellRendererAccel: Use G_PARAM_EXPLICIT_NOTIFY 2014-06-09 13:30:52 -04:00
Matthias Clasen
e423c045d5 GtkButtonBox: Use G_PARAM_EXPLICIT_NOTIFY 2014-06-09 13:30:52 -04:00
Matthias Clasen
f531b0757c GtkBox: Use G_PARAM_EXPLICIT_NOTIFY 2014-06-09 13:30:52 -04:00
Matthias Clasen
06564f5df6 GtkBox: Convert to g_object_install_properties 2014-06-09 13:30:52 -04:00
Matthias Clasen
e54525729e GtkBox: Move overridden property ids to the end
This will make it easier to convert to g_object_install_properties
in the next commit.
2014-06-09 13:30:52 -04:00
Matthias Clasen
d218e17a2a GtkButton: Use G_PARAM_EXPLICIT_NOTIFY 2014-06-09 13:30:52 -04:00
Matthias Clasen
62d591a550 GtkButton: Convert to g_object_class_install_properties 2014-06-09 13:30:51 -04:00
Matthias Clasen
fba83da3ee GtkAccelLabel: use G_PARAM_EXPLICIT_NOTIFY 2014-06-09 13:30:51 -04:00
Matthias Clasen
10f8ea27bf GtkAccelLabel: Convert to g_object_class_install_properties 2014-06-09 13:30:51 -04:00
Matthias Clasen
bc46df34fc GtkAboutDialog: Use a setter for wrap-license
This avoids redundant notification.
2014-06-09 13:30:51 -04:00
Matthias Clasen
09a589b716 GtkAboutDialog: Fix a parameter check
When we expanded the GtkLicense enumeration in 3.12, we forgot
to update the limit check in gtk_about_dialog_set_license_type.
Caught by testing property notification for enum properties.
2014-06-09 13:30:51 -04:00
Matthias Clasen
06ab3e7477 GtkAboutDialog: Use G_PARAM_EXPLICIT_NOTIFY 2014-06-09 13:30:51 -04:00
Matthias Clasen
c8acad2816 GtkAboutDialog: Convert to g_object_class_install_properties 2014-06-09 13:30:51 -04:00
Matthias Clasen
fae5302eae GtkRevealer: Use G_PARAM_EXPLICIT_NOTIFY 2014-06-09 13:30:51 -04:00
Matthias Clasen
07e180fef0 GtkRevealer: Convert to g_object_class_install_properties 2014-06-09 13:30:51 -04:00
Matthias Clasen
51d17910a1 GtkFlowBox: Use G_PARAM_EXPLICIT_NOTIFY 2014-06-09 13:30:50 -04:00
Matthias Clasen
b549e52c2c GtkFlowBox: Convert to g_object_class_install_properties 2014-06-09 13:30:50 -04:00
Matthias Clasen
45801c8f2c GtkFlowBox: Move overridden prop ids to the end
This makes it easier to convert to g_object_class_install_properties
in the next commit.
2014-06-09 13:30:50 -04:00
Matthias Clasen
ac08d6a421 GtkFlowBox: Drop unused prop ids
No h/valign properties here.
2014-06-09 13:30:50 -04:00
Matthias Clasen
6e03ac9958 GtkListBox: Use G_PARAM_EXPLICIT_NOTIFY 2014-06-09 13:30:50 -04:00
Matthias Clasen
d591341bd1 GtkStack: Avoid a few redundant notify emissions
A few of the property setters were missing the
standard checks.
2014-06-09 13:30:50 -04:00
Matthias Clasen
0a681f9224 GtkStack: Use G_PARAM_EXPLICIT_NOTIFY 2014-06-09 13:30:49 -04:00
Juan R. Garcia Blanco
15c34b22d2 inspector: Fix build with quartz backend
Add -xobjective-c to libgtkinspector_la_CFLAGS to handle objc headers.
2014-06-08 11:52:45 +02:00
Matthias Clasen
3aa1350bd0 GtkWindow: always input-shape csd windows
Even if we don't have border windows, we need to set the input
shape so we ignore clicks in the shadow region.
2014-06-06 22:07:14 -04:00
Matthias Clasen
3266b4dd9b inspector: Make picking more robust
Apparently ClutterOffscreen returns NULL as a window.
While that is not cool, we shouldn't crash.
2014-06-06 13:35:40 -04:00
Matthias Clasen
02a44c454c GtkDialog: Be a little more careful about button placement
We were applying response based heuristics, even if the button
is explicitly put in the headerbar. That broke button placement
in some epiphany dialogs, such as the Cookies one. Therefore,
restrict the heuristics to action widgets that are added through
gtk_widget_add_action_widget() or <child type="action">, where it
is not possible to specify placement explicitly.
2014-06-06 13:00:06 -04:00
Matthias Clasen
9c6c4fdeb8 GtkDialog: avoid a crash
Just because use-header-bar is set, it is not safe to assume
every action widget is in the headerbar, so be careful when
setting child properties.
2014-06-06 12:20:57 -04:00
Chun-wei Fan
d8de23bef6 gtk/gtkkineticscrolling.c: Include fallback-c89.c
... as round() is being used, which is for C99 and later.  fallback-c89.c
includes math.h as well.
2014-06-06 14:47:19 +08:00
Matthias Clasen
763f0a37c1 inspector: Avoid a crash
An unset action-name should not cause us to crash.
2014-06-05 21:08:56 -04:00
Matthias Clasen
7aadd6fd2e Remove unintentional addition
Debugging leftovers.
2014-06-05 18:12:42 -04:00
Matthias Clasen
d724175e49 GtkDialog: Improve the buildable implementation
When combining action child type with <action-widgets> to assign
response ids, we were not properly updating buttons that ended up
getting added to the headerbar before they have a response id.
Fix this by reapplying the headerbar button setup after parsing
<action-widgets>, and make sure to also update the suggested-action
style class.
2014-06-05 18:08:45 -04:00
Carlos Garnacho
246e6cd0b9 combobox: Fix reentrancy in gtk_combo_box_popdown()
If called when already popped down, warnings would be issued due
to priv->grab_pointer being unexpectedly NULL, this would happen
in regular operation when selecting items in appears-as-list mode.

So both add a NULL check for priv->grab_pointer, and bail out early
if the popup window is already hidden.
2014-06-05 21:16:05 +02:00
Lieven van der Heide
828594d5bd scrolledwindow: Replace kinetic scrolling with GtkKineticScrolling
Two GtkKineticScrolling helpers are used, one per axis direction.

https://bugzilla.gnome.org/show_bug.cgi?id=729608
2014-06-05 16:49:23 +02:00
Lieven van der Heide
c726226825 gtk: Add kinetic scrolling helper
GtkKineticScrolling implements the actual physics laws for friction
and springs. When created, position/velocity/boundaries/constants are
given, so at every gtk_kinetic_scrolling_tick() it returns the current
position, and whether the system is in rest.

https://bugzilla.gnome.org/show_bug.cgi?id=729608
2014-06-05 16:49:23 +02:00
Carlos Garnacho
3ffb4fa699 flowbox: Use gestures for event management
A multipress gesture takes care of item selection/activation, and
a drag gesture is used to manage events when rubberbanding selection
is performed.
2014-06-05 16:15:54 +02:00
Carlos Garnacho
933ff62f66 listbox: Use multipress gesture for row selection/activation
This gesture replaces the button_press/release_event handlers.
2014-06-05 16:15:54 +02:00
Carlos Garnacho
8dcdec58eb label: Use gestures for event management
A multipress gesture takes care of link handling, and char/word/all
selection mode on selectable labels. A drag gesture is used for both
text selection and DnD checks on selectable labels.
2014-06-05 16:15:54 +02:00
Carlos Garnacho
26dff0d783 range: Use GtkGesture for event management
A multipress gesture takes care of clicks, and where those happened.
If the click is meant to move the slider while pressed, the drag gesture
takes over, dragging the slider while active.
2014-06-05 16:15:54 +02:00
Carlos Garnacho
fbb3fdda8c expander: Use multipress gesture for event management
This actually acts regardless of the value n_press, alternatively
expanding and collapsing the GtkExpander.
2014-06-05 16:15:54 +02:00
Carlos Garnacho
90424289fb widget: reset all controllers when the widget becomes insensitive
Widgets becoming insensitive won't receive further events, but there
could be chances the controllers don't get properly notified and reset
in those situations.
2014-06-05 16:15:54 +02:00
Matthias Clasen
14d1a5cba4 inspector: Make GMenu content show up
My problem was that all the content is usually hidden away
in sections, so without recursion, nothing shows up. So,
implement the recursion then.
2014-06-05 09:29:18 -04:00
Matthias Clasen
af8bd96e6e Forgotten file 2014-06-05 08:35:07 -04:00
Matthias Clasen
2346ccde43 inspector: show GMenus
This does not quite work yet, and I have no idea why.
2014-06-05 08:32:15 -04:00
Ryan Lortie
8011d853e1 GtkMenuTracker: fix signal handler argument list
The signal handler for the visibility of menu items changing had the
wrong signature, resulting in the GParamSpec from the notify signal
being treated as a boolean (which was always true).  This resulted in
items being added over and over and never being removed.

Fix that...
2014-06-05 08:29:59 -04:00
Matthias Clasen
582504cc33 inspector: Actually destroy the property editors
We were never finalizing any of the popovers used for editing
properties. Fix that.
2014-06-05 05:57:50 -04:00
Matthias Clasen
7a8092998a inspector: Fix a memory leak 2014-06-05 05:57:50 -04:00
Matthias Clasen
27f692da2d inspector: Add an initial action editor
Use a popup, like we do for properties. For now, it allows
activating the action (with parameter, if necessary) and
setting the state.
2014-06-05 05:57:49 -04:00
Chun-wei Fan
bbed824320 gtk/deprecated/gtkcolorsel.c: Include gtkwindowgroup.h
Since commit 872fbfac the GtkWindowGroup was split out from the GtkWindow
sources, so include gtkwindowgroup.h to avoid C4013 warnings/errors
(implicit declaration of ...) on gtk_window_group_add_window().
2014-06-05 14:45:35 +08:00
Matthias Clasen
2bbea2bc93 Expand GtkWindowGroup docs 2014-06-04 21:25:05 -04:00
Matthias Clasen
23aeb955ce inspector: Lower the inspector window when picking
This avoids the problem  of the inspector window covering the
widget you want to pick.
2014-06-04 20:29:10 -04:00
Matthias Clasen
205e8f7e58 inspector: Show the widget tree when picking
Makes more sense that way.
2014-06-04 20:12:42 -04:00
Matthias Clasen
1c232066b8 inspector: Go to the desired tab
We were setting the next-tab properly, but were trying to
read it off the wrong object. Now, going from a cell renderer
attribute mapping to the model, or from an action-name to the
action actually works.
2014-06-04 19:28:24 -04:00
Carlos Garnacho
cb059bfc1b widget: Set GDK_BUTTON1_MASK on emulated pointer events
The touch_event handler was missing those when emulating pointer events
for the widgets that get GDK_TOUCH_MASK set, but have no specialized
touch handlers.
2014-06-04 13:44:56 +02:00
Matthias Clasen
7a0642743d Fix up internal function naming
Even if you believe this functionality belongs into gdk, it
is not ok to name internal functions in gtkwindow.c gdk_window...
2014-06-04 06:38:20 -04:00
Matthias Clasen
872fbfacd3 Split GtkWindowGroup into its own file
gtkwindow.c is too big and too messy. This is a small step
towards making it better.
2014-06-04 06:24:05 -04:00
Carlos Garnacho
25f5da5018 widget: Ensure all gestures outside a grab scope are cancelled
This code is a product of early stages in the gestures branch, where
capturing would have an effect outside grab boundaries. But this isn't
really the case, so every gesture outside the grab scope must be reset
to avoid keeping stale data.
2014-06-03 16:13:25 +02:00
Carlos Garnacho
26ced6abad widget: Only deny a sequence if it was previously claimed
Before this change, a sequence being claimed deep in the event propagation
chain would make the sequence go denied on every ancestor, regardless of
previous state.

To make things more consistent, only deny the sequence if it was previously
claimed, so the behavior is the same for gesture groups within the widget
than for those outside the widget.

The gestures testsuite has been updated to reflect this new behavior.
2014-06-03 15:59:03 +02:00
Carlos Garnacho
c773859c99 gesture: Ensure late gestures handling the sequence get the group state
It might happen that a gesture claims a sequence before any other gesture
in its group even handled a single event from that sequence. In that case,
ensure the state is set accordingly right when the sequence is handled in
those.

The "group" gesture testcase has been updated to observe this behavior.
2014-06-03 15:59:03 +02:00
Matthias Clasen
f6cf7fee73 inspector: Parse custom css with a delay
The CSS editor was feeling a little sluggish, because it was
reparsing and reapplying the CSS on every keystroke. Add a small
delay, to make this feel smoother.
2014-06-03 09:44:28 -04:00
Chun-wei Fan
61b9bcf1d5 MSVC Projects: "Generate" the gtk-inspector Projects
Like the GDK and GTK portions, use autotools scripts to generate the
complete projects for gtk-inspector as sources there seem to change from
time to time.

It might be so that this, like the a11y sources, will be referenced from
the main Makefile.am of GTK directly, but just do this so that the
projects can build properly.
2014-06-03 17:03:40 +08:00
Carlos Garnacho
3c0ebf65cf window: Only check for the event widget if clicked on the "content" region
Every button press/release event reaching the the multipress gesture in GtkWindow
and happening in the "title" region must be handled, regardless of the event widget.
Children there wanting the event(s) for themselves are (and were always) expected
to stop event propagation.

So the only place to check for the event widget's "window-dragging" style property
is the "content" region, which matches the pre-gestures behavior.

This fixes some issues with sequences being mistakenly claimed (and events not
propagated further) on situations it shouldn't.
2014-06-02 18:38:25 +02:00
Carlos Garnacho
00656ed10b window: Handle manually bubbled events
The multipress gesture must react to either direct events on the
GtkWindow (special cased through _gtk_widget_check_handle_wm_event),
or bubbled events from child widgets. Ensure bubbled events go
through the gesture, those are fed manually to make sure events are
only handled once, in either one or other place. The implicit grab
will ensure that doesn't change mid-action.
2014-06-02 18:38:25 +02:00
Carlos Garnacho
7f33706c12 window: Refactor _gtk_window_check_handle_wm_event()
Separate the event widget check from event handling
2014-06-02 18:38:25 +02:00
Carlos Garnacho
e1c425a24d treeview: Ensure the event is consumed on ::row-activate
Otherwise the event is possibly handled, but still propagated further anyway.
Ensure the event is consumed by claiming the current sequence on the
GtkGestureMultiPress::pressed handler.
2014-06-02 18:38:25 +02:00
Carlos Garnacho
541ed65a51 treeview: restrict the multipress gesture to GDK_BUTTON_PRIMARY
::row-activated only used to be triggered by GDK_BUTTON_PRIMARY, so make
the multipress gesture handling this now to be only triggered by that same
button.

https://bugzilla.gnome.org/show_bug.cgi?id=731020
2014-06-01 21:57:15 +02:00
Matthias Clasen
a3cd0ee7d8 Revert "Use minimum/natural size semantics"
This reverts commit 6d53c2339f.

https://bugzilla.gnome.org/show_bug.cgi?id=731054 showed some
major regressions caused by this commit.
2014-06-01 10:20:08 -04:00
Matthias Clasen
73ff6a8e0f Revert "Better resize of expandable columns"
This reverts commit 0050d469b5.

Conflicts:
	gtk/gtktreeview.c
2014-06-01 10:19:14 -04:00
Matthias Clasen
fd62353e25 Avoid another revert conflict
Moving this bit up a few lines lets the following revert apply
cleanly.
2014-06-01 10:18:38 -04:00
Matthias Clasen
210453b79e Revert "treeview: Remove unneeded checks"
This reverts commit a158a2aa48.

The commit conflicts with a later revert, so move it out of the way.
2014-06-01 10:17:59 -04:00
Carlos Garnacho
995b6d1fd4 textview: Only trigger drag gesture on GDK_BUTTON_PRIMARY
This gesture was only meant to react on GDK_BUTTON_PRIMARY (either
through real pointer events, or implicitly assumed from touch events),
as it used to behave before gestures. Otherwise the gtk_drag_begin*()
call assumes being triggered by button 1, and the drag misbehaves
because that button isn't really in the state mask.

https://bugzilla.gnome.org/show_bug.cgi?id=731016
2014-05-31 15:11:05 +02:00
Matthias Clasen
921b6519f1 inspector: better type detection for resources
Pass the name to g_content_type_guess. With this, most
CSS gets sniffed as C source code.
2014-05-30 23:45:11 -04:00
Matthias Clasen
e4ba5b6ab6 inspector: Go to the right tab when changing objects
When going from attribute mapping to model, it makes most sense
to go directly to the data tab, and when going from an action
name to the owner, we want to show the actions tab. Make it so.
2014-05-30 23:22:29 -04:00
Matthias Clasen
5ed6653859 inspector: Allow jumping to actions
The property editor for action-name properties now offers
to go to the object where the action is defined.
2014-05-30 23:22:29 -04:00
Matthias Clasen
d33ff810cc inspector: Trivial string change
'Size Groups' looks better than 'Sizegroups'.
2014-05-30 23:22:29 -04:00
Debarshi Ray
047d2b5f6d Update GtkImage icons when the direction is changed
Don't call gtk_widget_set_state_flags(), it filters the direction flags.
Instead, call gtk_widget_update_state_flags() directly.

https://bugzilla.gnome.org/show_bug.cgi?id=730833
2014-05-31 05:19:41 +02:00
Benjamin Otte
3df52ae6d5 builder: Cleanup
Use the usual way of providing user data to vfuncs:
- Don't allocate it, use the stack
- Use CamelCase for naming the struct
2014-05-31 05:19:40 +02:00
Matthias Clasen
bb9bf4b408 inspector: Handle attribute mapping changes better
When the mapping is changed, notify the property and
queue a draw on the widget. This makes both the inspector
and the app update their display.
2014-05-30 21:56:07 -04:00
Matthias Clasen
2e4c87038e inspector: some code reshuffling 2014-05-30 21:35:39 -04:00
Matthias Clasen
6a9ea3487e inspector: Support saving CSS
We have a file chooser, lets use it.
2014-05-30 20:35:43 -04:00
Matthias Clasen
eec1bc7ed1 GtkPrintUnixDialog: Remove some dead code
Automatic template children get cleaned up and NULLed out in destroy,
the g_clear_pointer() calls in finalize never do anything.
2014-05-30 19:33:11 -04:00
Evan Nemerson
54ec42f035 gtk: port many nullability annotation fixes from Vala bindings
https://bugzilla.gnome.org/show_bug.cgi?id=730745
2014-05-30 13:24:20 -07:00
Matthias Clasen
4d1930cf74 Make notebook content redraw during drag
The extra condition here that caused the current child to
not redraw during reordering was introduced in f383e1f1
during the port to ::draw, but was not explained in the
commit message, and removing it has no obvious negative
effect.

https://bugzilla.gnome.org/show_bug.cgi?id=730767
2014-05-30 13:39:27 -04:00
Matthias Clasen
6de6656d1f GtkBuilder: Ensure types are fully initialized
Just calling get_type() does not ensure that the signals, properties
and everything else gets set up properly. Ensure it is, by calling
g_type_class_ref() before using the type. This fixes the testcase
added in the previous commit.
2014-05-30 12:39:07 -04:00
Matthias Clasen
1af5f6d507 GtkActionable: Update the docs
Actionable is no longer restricted to "app" and "win" actions.
2014-05-30 07:05:50 -04:00
Matthias Clasen
8817fa9e3d GtkScrolledWindow: Add some NULL checks back
Turns out these were not quite redundant, gtk_container_forall
may be called very early during construction.

https://bugzilla.gnome.org/show_bug.cgi?id=730924
2014-05-29 21:52:40 -04:00
Matthias Clasen
489b59867c Revert "GtkMisc: Keep gtk_misc_set_alignment working"
This reverts commit aabc356b80.

Labels are back to looking at x/yalign (for now).
2014-05-29 10:32:46 -04:00
Carlos Garnacho
618e3d3157 eventcontroller: Ensure controllers stay alive during event emission
Those might trigger the destruction of some widget that would dispose the
event controller while the event is still being handled, so keep an extra
ref on the controller during event processing.
2014-05-28 19:39:07 +02:00
Evan Nemerson
9db729f5a6 gtk: fix several out argument annotations
These mostly just switch from allow-none to optional, nullable, or
both, as necessary.

https://bugzilla.gnome.org/show_bug.cgi?id=730745
2014-05-27 21:10:33 -07:00
Evan Nemerson
a77765f172 gtk: add missing ownership annotations ported from Vala
https://bugzilla.gnome.org/show_bug.cgi?id=730745
2014-05-27 21:10:33 -07:00
Evan Nemerson
07d825574f gtk: add missing type annotations ported from Vala bindings
https://bugzilla.gnome.org/show_bug.cgi?id=730745
2014-05-27 21:10:33 -07:00
Evan Nemerson
bda145b19f gtk: fix annotation syntax and missing some missing annotations
These changes clean up various errors and omissions resulting from
either slightly incorrect G-I/gtk-doc syntax or missing documentation
blocks.

https://bugzilla.gnome.org/show_bug.cgi?id=730745
2014-05-27 21:10:32 -07:00
Evan Nemerson
e596e58c51 gtk: port missing array annotations from Vala bindings
https://bugzilla.gnome.org/show_bug.cgi?id=730745
2014-05-27 21:10:32 -07:00
Evan Nemerson
e568903360 gtk: fix many callback annotations to include closure information
Without this information introspection-based consumers don't realize
they can include context information, but instead think that they
receive an extra gpointer argument (which they don't know how to
handle).

https://bugzilla.gnome.org/show_bug.cgi?id=730745
2014-05-27 21:10:32 -07:00
Matthias Clasen
a28d2cb923 Move extract-strings to its own directory
This will hopefully help resolve the circular dependency between
libgtk linking against inspector/libgtkinspector and inspector/
needing extract-strings from gtk/.

I didn't preserve the EXEEXT decorations in this operation -
automake gave me stern warnings about it, so I just dropped them
all. Somebody who cross-builds GTK+ will have to reconstruct this.
2014-05-27 17:28:10 -04:00
Matthias Clasen
ea2d20e313 Fix distcheck 2014-05-27 15:14:02 -04:00
Matthias Clasen
3bb404f40c Don't assert in gtk_event_controller_constructed
This prevents some of our generic object implementation tests
from working with gesture objects. Instead, add g_return_if_fail
checks in all the gesture constructors.
2014-05-27 14:33:32 -04:00
Matthias Clasen
e4680d64a0 Documentation fixes
Add a few missing symbols, and match up parameters in headers
and doc comments.
2014-05-27 14:33:32 -04:00
Matthias Clasen
4ce2f3e769 Silence gtk-doc warnings 2014-05-27 13:17:34 -04:00
Matthias Clasen
7fa0228755 Revert "GtkImage: Drop use of GtkMisc::x/yalign"
This reverts commit 54d5b426fc.

Conflicts:
	gtk/gtkimage.c
2014-05-27 13:08:25 -04:00
Matthias Clasen
24863a0b6a Revert "GtkLabel: Drop use of GtkMisc::x/yalign"
This reverts commit b320c198b6.
2014-05-27 13:07:03 -04:00
Matthias Clasen
6ce2a8fb13 Revert "Fix up GtkLabel and GtkImage sizing"
This reverts commit 3b30cfa344.
2014-05-27 13:04:43 -04:00
Matthias Clasen
7c83a71239 Revert "More label and image sizing fixes"
This reverts commit 68c1e83cf0.
2014-05-27 13:04:34 -04:00
Carlos Garnacho
d9bdb9a137 window: Do not raise border windows on each size allocation
This prevents these windows from being raised above popovers, which
is about the only child widget that may overlap with those anyway.

https://bugzilla.gnome.org/show_bug.cgi?id=730589
2014-05-27 17:56:59 +02:00
Carlos Garnacho
4cf111aab3 treeview: Make the multipress gesture listen only to bin_window
This gesture is meant to handle row-activated signaling, so make the
gesture ignore events from any other window.
2014-05-27 17:47:13 +02:00
Carlos Garnacho
2012b67c5b button: Claim the sequence on multipress::pressed
In order to avoid the event from bubbling, as it used to (not) do.
2014-05-27 17:47:12 +02:00
Carlos Garnacho
e0fd901722 gesture: Fix wrong assert in gtk_gesture_set_window
The window must be part of the event controller widget, so
fix the inverted logic.
2014-05-27 17:47:12 +02:00
Carlos Garnacho
49a6626884 eventcontroller: Hide more details
Signals are left hidden, so the only entry point to handle_event/reset
is API.
2014-05-27 17:47:12 +02:00
Carlos Garnacho
907e9f1946 gtk: Update GtkGesture users to the GtkPropagationPhase semantics change
Mainly doing s/TARGET/BUBBLE/ on the fully ported widgets, but GtkTreeView
where the double click handler has moved to GTK_PHASE_TARGET so it runs
parallelly to the still existing event handlers.
2014-05-27 17:47:12 +02:00
Carlos Garnacho
505efbb3f3 widget: Change GtkCapturePhase behavior in event controllers' handling
Previously, there would be globally just a capture and a bubble phase,
with the event just going down the hierarchy once, and the up once.
GTK_PHASE_TARGET actually meaning "run within event handlers", so in
a hierarchy of 3 widgets, emission would be:

  Capture(C)
  Capture(B)
  Capture(A)
  Target(A) (if event handlers allow)
  Bubble(A)
  Target(B) (if event handlers allow)
  Bubble(B)
  Target(C) (if event handlers allow)
  Bubble(C)

This commit changes this behavior and uses GTK_PHASE_TARGET in a less
misleading way, running only on the widget that was meant to receive
the event. And GTK_PHASE_BUBBLE has taken over the execution place of
GTK_PHASE_TARGET, so the emission remains:

  Capture(C)
  Capture(B)
  Capture(A)
  Target(A)
  Bubble(A) (if event handlers allow)
  Bubble(B) (...)
  Bubble(C) (...)

As it was, GTK_PHASE_BUBBLE was useful for running event controllers
paralelly to event handlers, without modifying a single line in those.
For those mixed scenarios, Any of the other phases will have to be
used at discretion, or the event handlers eventually changed to chain
up and let the default event handlers in GtkWidget to be run.
2014-05-27 17:47:12 +02:00
Carlos Garnacho
a8e833dc5c window: Avoid double event processing in the multipress event controller
The events to those are fed outside the regular event propagation scheme,
through _gtk_window_check_handle_wm_event(), so set the controller to
GTK_PHASE_NONE so events aren't processed first manually, and then
automatically.
2014-05-27 17:47:12 +02:00
Carlos Garnacho
9f8bd7a2bc gesturezoom: Just return a double in get_scale_delta()
Checking whether the gesture is active is a responsibility of the caller.
2014-05-27 17:47:12 +02:00
Carlos Garnacho
8f7d5fb2c0 gesturerotate: Just return a double in get_angle_delta()
Whether the gesture is active or recognized should be checked before in
callers, or just not used naively.
2014-05-27 17:47:12 +02:00
Carlos Garnacho
d05a9f9a7b gesture: Replace gtk_gesture_attach/detach with event controller API
Event controllers now auto-attach, and the GtkCapturePhase only determines
when are events dispatched, but all controllers are managed by the widget wrt
grabs.

All callers have been updated.
2014-05-27 17:47:12 +02:00
Carlos Garnacho
ad6606e8af gtk: Update callers of GtkGesturePan orientation 2014-05-27 17:47:12 +02:00
Carlos Garnacho
2e903243c6 eventcontroller: Make the event-mask property and methods private.
This will rarely have any use if no subclassing is allowed, so just make it
private for our own.
2014-05-27 17:47:12 +02:00
Carlos Garnacho
ef61c9c58b gtk: Replace GtkPanOrientation with GtkOrientation
And document GtkOrientation to be more generic. There's little added
value in a separate enum for this.
2014-05-27 17:47:12 +02:00
Matthias Clasen
68c1e83cf0 More label and image sizing fixes
Go back to respecting GtkMisc::xpad/ypad. Not doing so breaks
the misc-alignment reftest. As long as we still derive from
GtkMisc, we may as well do this.
2014-05-27 06:00:21 -04:00
Matthias Clasen
3b30cfa344 Fix up GtkLabel and GtkImage sizing
When GtkMisc was removed, I forgot to apply the style context
padding. This caused the info-bar-message-types reftest to fail.
2014-05-27 00:22:40 -04:00
Matthias Clasen
2488b954f2 Don't use hicolor as the default icon-theme
The icontheme lookup code has a special-case that prefers builtin icons
if the theme name is "hicolor". This is problematic for our reftests,
which run in a barebones environment with not settings.
2014-05-26 23:17:32 -04:00
Matthias Clasen
0bd0f39576 docs: enum cleanup
Move GtkStateType to the GtkWidget apis where it is used, and
mark the enum as deprecated.
2014-05-26 10:37:06 -04:00
Kalev Lember
750f6b9913 GtkApplication: Fix two muxer-related memory leaks
Drop the ref on the action muxer in finalize, and also make sure
shutdown() tears down the muxer setup done in startup().

When GtkApplication adds itself to a muxer, it causes the muxer to take
a ref on the GtkApplication. This has to be undone in shutdown() to make
sure the GtkApplication doesn't end up holding a ref on itself.

https://bugzilla.gnome.org/show_bug.cgi?id=730383
2014-05-25 10:49:27 +02:00
Matthias Clasen
8230299748 inspector: Allow changing attribute mappings 2014-05-24 23:31:54 -04:00
Matthias Clasen
8a6aca31a8 Typo fixes 2014-05-24 18:20:31 -04:00
Matthias Clasen
e916391e6c Drop an unused object
A downside of using templates is that we can have 'parasitic'
objects in there that don't get used for anything.
2014-05-24 18:20:31 -04:00
Matthias Clasen
72c79deb3b GtkIconTheme: Add more debug spew
Still trying to track down test problems in gnome-continuous.
2014-05-24 18:20:31 -04:00
Benjamin Otte
0430ae0ca5 image: Draw the image again
An important line of code was removed in
54d5b426fc that lead to an undefined
variable. Add that line back.
2014-05-24 19:38:56 +02:00
Benjamin Otte
1cbace5f68 combobox: Implement clip 2014-05-24 16:21:02 +02:00
Benjamin Otte
750178e1ed entry: Implement clip 2014-05-24 16:20:48 +02:00
Benjamin Otte
4bbca44512 gestureswipe: Fix return value 2014-05-24 16:16:41 +02:00
Benjamin Otte
b03d54b75f image: Remove unused variable 2014-05-24 16:16:32 +02:00
Benjamin Otte
a9bcea5118 button: Implement clip 2014-05-24 16:12:21 +02:00
Benjamin Otte
f5b1e75d93 widget: Include box-shadow in the clip
This allows all widgets that implement clip to use box shadows.
2014-05-24 16:12:21 +02:00
Benjamin Otte
0cd63faee2 widget: Add _gtk_widget_set_css_clip()
... and use it in GtkBox and GtkGrid.
2014-05-24 16:12:21 +02:00
Benjamin Otte
434f91feff spinner: Implement clip
We now allow you to gtk-icon-transform() the spinner outside of the
spinners allocation.
2014-05-24 16:12:20 +02:00
Benjamin Otte
4f89eb05cf API: widget: Add gtk_widget_set_clip() API
And handle the fact that drawing bounds are now handled by this API and
the corresponding gtk_widget_get_clip().

Also add _gtk_widget_supports_clip() function to check if a widget has
been ported to the new world.
2014-05-24 16:12:20 +02:00
Matthias Clasen
a13d12a445 inspector: Make picking widgets work again
This broke when I accidentally removed the line that adds
each object to the hash table. Bring it back.
2014-05-24 09:55:41 -04:00
Rico Tzschichholz
0b586e52c2 build: Fix typo 2014-05-24 09:52:41 +02:00
Rico Tzschichholz
86d4c26420 gtk: Fix make dist 2014-05-24 09:24:46 +02:00
Matthias Clasen
aabc356b80 GtkMisc: Keep gtk_misc_set_alignment working
Now that labels and images no longer use x/yalign in their code,
we need to make gtk_misc_set_alignment set the h/valign for these
widgets, to keep it stumbling along until its final demise.

https://bugzilla.gnome.org/show_bug.cgi?id=730613
2014-05-24 00:48:12 -04:00
Matthias Clasen
1008e15414 GtkToolButton: Drop use of GtkMisc
Use h/valign instead of x/yalign.

https://bugzilla.gnome.org/show_bug.cgi?id=730613
2014-05-24 00:48:02 -04:00
Matthias Clasen
687eae4b51 GtkAssistant: Drop use of GtkMisc
Use halign instead of xalign.

https://bugzilla.gnome.org/show_bug.cgi?id=730613
2014-05-24 00:04:41 -04:00
Matthias Clasen
4d002d5e6a GtkAccelLabel: Drop use of GtkMisc
Just use 0 instead of xpad.

https://bugzilla.gnome.org/show_bug.cgi?id=730613
2014-05-24 00:04:41 -04:00
Matthias Clasen
54d5b426fc GtkImage: Drop use of GtkMisc::x/yalign
Instead, use GtkWidget::h/valign to position the image inside
the allocation. And just stop using GtkMisc::x/ypad.

https://bugzilla.gnome.org/show_bug.cgi?id=730613
2014-05-24 00:04:41 -04:00
Matthias Clasen
b320c198b6 GtkLabel: Drop use of GtkMisc::x/yalign
Instead, use GtkWidget::h/valign to position the text inside
the allocation. And just stop using GtkMisc::x/ypad.

https://bugzilla.gnome.org/show_bug.cgi?id=730613
2014-05-24 00:04:41 -04:00
Matthias Clasen
0011c9dae4 Fix filechooser actionbar visibility
The actionbar was always visible, even when there is no filter
and no extra widget to show. Now we only show it when there is
something to show.
2014-05-24 00:00:00 -04:00
Matthias Clasen
51a09af076 inspector: Treat resources the same as in gtk/ 2014-05-23 23:00:43 -04:00
Matthias Clasen
00d02491d8 Drop no-longer-used gtkrc files
These were replaced by css files long ago.
2014-05-23 22:00:51 -04:00
Matthias Clasen
45e1128472 Drop a pointless function
No need to have a finalize function if it just chains
up to the parent class.
2014-05-23 21:56:44 -04:00
Matthias Clasen
716ecff28d Trivial: slight code rearrangement 2014-05-23 21:41:58 -04:00
Matthias Clasen
04703689b8 Deprecate GtkAligment
This has been dangling ever since 3.0.

https://bugzilla.gnome.org/show_bug.cgi?id=645781
2014-05-23 20:31:25 -04:00
Matthias Clasen
4928d5e401 Drop an unneeded include
There's no GtkGesture in gtkwidget.h anymore. We do need an include
in gtkwidgetprivate.h though.
2014-05-23 20:09:50 -04:00
Evan Nemerson
4a4b23bfad a11y: build directly into libgtk instead of an internal library
https://bugzilla.gnome.org/show_bug.cgi?id=730615
2014-05-23 19:20:59 -04:00
Carlos Garnacho
60e15deb83 spinbutton: Avoid touch text handles to pop up
Those get in the middle more than help on these widgets, the widget
is already packed with clickable areas and having handles (and their
invisible clickable area around) hovering above don't help, plus the
purpose in most likely numeric values is a bit doubtful.

All touch events are either consumed by the up/down panels, or
the swipe gesture, all GtkEntry handling of touch events on the text
window is avoided, so handles to not appear anymore.
2014-05-23 19:54:33 +02:00
Carlos Garnacho
a4a122c8e8 colorswatch: Set gestures in GTK_PHASE_TARGET
That's the right phase for gestures replacing entirely event handlers.
2014-05-23 19:54:33 +02:00
Carlos Garnacho
d59c909663 spinbutton: Use GTK_PHASE_CAPTURE for touch swipes
The gesture must be able to catch first events for it to be seen
as recognized in event handlers.
2014-05-23 19:54:33 +02:00
Carlos Garnacho
01d74f86a0 widget: Flip execution order of GTK_PHASE_TARGET/BUBBLE
the "bubble" phase used to run before event handlers before GTK_PHASE_TARGET
was added, in order to keep phases in the expected order, move GTK_PHASE_BUBBLE
to be run (still invariably) after event handlers.

The only behavioral change should be wrt widgets wanting mixed event handler/
gesture handling, they could previously attach the gesture to the bubble phase
and check for gtk_gesture_is_active() in the event handler to bail out, they'll
have to use GTK_PHASE_CAPTURE for that purpose from now on.
2014-05-23 19:54:33 +02:00
Carlos Garnacho
ca1510177c texthandle: Mind the invisible area when moving the handle
The handle is still centered horizontally, but the extra vertical
space wasn't taken into account, leading to misplacing the dragging
point (and the handle) during motion events.
2014-05-23 19:54:33 +02:00
Carlos Garnacho
c9f54aef69 textview: Check first whether the sequence is handled, fetch later the event
And always unset/hide the selection popover if unhandled, that means the
sequence went grabbed/claimed somewhere else and cancelled here.
2014-05-23 19:54:33 +02:00
Carlos Garnacho
f54277204f entry: Check first whether the sequence is handled, fetch later the event
And always unset/hide the selection popover if unhandled, that means the
sequence went grabbed/claimed somewhere else and cancelled here.
2014-05-23 19:54:33 +02:00
Carlos Garnacho
485da90a2e gesture: Use GdkEventSequence GType in signals 2014-05-23 19:54:33 +02:00
Carlos Garnacho
7e61216105 gesture: Introspection fixes
Set annotations on return values for gtk_gesture_get_device() and
gtk_gesture_get_window().
2014-05-23 19:54:33 +02:00
Carlos Garnacho
03a3b2ccab eventcontroller: introspection fix
Set transfer annotation on gtk_event_controller_get_widget()
2014-05-23 19:54:33 +02:00
Carlos Garnacho
5fdf07547f paned: Handle pointer events from touchscreen devices
GtkPaned may just capture pointer events because the child widget
doesn't happen to have GDK_TOUCH_MASK set, resort to checking the
device in that case.
2014-05-23 19:54:33 +02:00
Matthias Clasen
0442431943 Docs: Cosmetic fixes 2014-05-23 19:54:33 +02:00
Matthias Clasen
9f3f634c16 docs: Correct a reference 2014-05-23 19:54:33 +02:00
Matthias Clasen
c83d3f054b Revert "docs: More GtkEventController removal"
This reverts commit 75f503fb1fc9068c9e1a0d02126c55addbe8eb3e.
2014-05-23 19:54:32 +02:00
Matthias Clasen
ae5f930d1b Docs: Add information about event propagation 2014-05-23 19:54:32 +02:00
Matthias Clasen
aead8a360b Docs: Minor changes 2014-05-23 19:54:32 +02:00
Matthias Clasen
729a3a98d9 Document gtk_gesture_set_state 2014-05-23 19:54:32 +02:00
Matthias Clasen
01cd5cf382 docs: More GtkEventController removal 2014-05-23 19:54:32 +02:00
Carlos Garnacho
681164564e paned: Use GtkGesture to handle handle dragging
Dragging is all handled by a GtkGesturePan now, matching the
paned orientation.

On touch events, a wider area is listened for, so touch events
don't need to be as accurate to initiate dragging, if no dragging
is truly initiated in this case, events are just forwarded for
child widgets to handle.
2014-05-23 19:54:32 +02:00
Carlos Garnacho
8f20780fb9 switch: Use GtkGesture to handle input events
A pan gesture is used to handle switch dragging, which is only triggered
by horizontal panning movements. A multipress gesture handles the cases
where clicking without dragging happens, just toggling the switch.
2014-05-23 19:54:32 +02:00
Matthias Clasen
a47d0406a7 inspector: Add more complete gesture support
Add a dedicated tab that shows how gestures are grouped,
and allows changing the propagation phase.
2014-05-23 19:54:32 +02:00
Matthias Clasen
1c5f14a9e4 inspector: Minimal support for gestures
We're just showing them as objects in the tree, for now.
2014-05-23 19:54:32 +02:00
Matthias Clasen
a727c41e4a Add back a private api to list controllers
This will let us show them in the inspector.
2014-05-23 19:54:32 +02:00
Carlos Garnacho
2ba89256f4 texthandle: Make a bigger hit area around texthandles
The hit area now extends to all sides around the handle, instead
of just towards where the text is. This makes it easier to grab
handles once shown.
2014-05-23 19:54:32 +02:00
Carlos Garnacho
f322e55e19 gesture: Declare GtkGesture:window as an object property 2014-05-23 19:54:32 +02:00
Carlos Garnacho
f81f00ed6b widget: 3-way merge ate my g_object_ref()
Move it to the right place.
2014-05-23 19:54:32 +02:00
Carlos Garnacho
d351c52114 scrolledwindow: Handle directional cancellation if there is a single scroll direction
A pan gesture is optionally attached if there is only one scrolling direction, the pan
gesture orientation is changed so movements tangential to the scroll direction get
scrolling cancelled (The pan gesture is automatically denied when that happens, and
that state change spreads to the others gestures in the group). If the pan direction
happens in the expected directions, no cancellation happens, and scrolling eventually
takes place.
2014-05-23 19:54:32 +02:00
Carlos Garnacho
57eca4f445 widget: remove check on whether the controller was already added
Multiple calls are supposedly allowed to change the phase (although
unlikely to happen), so remove the g_return_if_fail() checking whether
the controller was already added.
2014-05-23 19:54:31 +02:00
Carlos Garnacho
bd68db4b25 pan: Remove wrong check
From the very early days where there were a NONE=0 GtkPanOrientation
value. This makes vertical pan operations work as expected.
2014-05-23 19:54:31 +02:00
Carlos Garnacho
e70e3963dd entry: Ensure the cursor text handle is shown after touching to reposition cursor. 2014-05-23 19:54:31 +02:00
Carlos Garnacho
cf7bb9a3bf popover: Hide widget first when disposing
In order to ensure invariants are kept.
2014-05-23 19:54:31 +02:00
Carlos Garnacho
15f7170358 entry: Obey implementations' frame when placing handles/popovers around
Y=0 was assumed in a few places, not necessarily right on eg. vertical
spinbuttons.
2014-05-23 19:54:31 +02:00
Carlos Garnacho
10c47fa6d6 entry: Improve touch popover interaction
Presses alternatively show and dismiss the popover, the popover is still
always shown invariably after any dragging happens (either text selection,
or dragging a text handle)
2014-05-23 19:54:31 +02:00
Carlos Garnacho
bd5fb3a09f textview: Show the magnifier popover a bit farther from the touch position
Somewhat arbitrary at the moment, would be nice to have minimal units
support for this, or at least hidpi support.
2014-05-23 19:54:31 +02:00
Carlos Garnacho
b2d56c588a textview: Improve touch popover interaction
Presses alternatively show and dismiss the popover, the popover is still
always shown invariably after any dragging happens (either text selection,
or dragging a text handle)
2014-05-23 19:54:31 +02:00
Carlos Garnacho
e580c29f07 entry: Use gestures to handle pointer/touch events
Similarly to GtkTextView, a GtkGestureMultiPress gesture handles
button/touch presses to initiate one selection mode or other, and
a GtkGestureDrag is used to handle text selection and DnD checks.

The code from button press/release, motion, and grab_notify handlers
has been shuffled into the actions triggered by those gestures.
2014-05-23 19:54:31 +02:00
Carlos Garnacho
d559cade42 spinbutton: Attach "swipe to spin" controllers to the bubble phase
It is unnecessary to have those process events manually, just attach
those to the bubble phase.
2014-05-23 19:54:31 +02:00
Carlos Garnacho
70ea24b9e8 colorplane: Fully port to GtkGesture
A GtkGestureDrag is used for color selection, removing also the
need to track the pointer state in widget data. The GDK grab performed
just to set the crosshair cursor has been replaced by a call
to gdk_window_set_device_cursor(), which will be unset if the
drag operation is finished, or cancelled due to the implicit grab
being broken.
2014-05-23 19:54:31 +02:00
Carlos Garnacho
ced7e7c08d button: Make multipress gesture exclusive
We only want actions to be triggered by a single sequence there,
so buttons trigger no actions on further simultaneous touches
happening.
2014-05-23 19:54:31 +02:00
Carlos Garnacho
0b3f4d5555 gesturesingle: Add an "exclusive" boolean property
All "exclusive" gestures listen for either pointer events, or
"pointer emulating" touch events, so only a single sequence at
a time can make these run.
2014-05-23 19:54:31 +02:00
Carlos Garnacho
fd9925141b button: Use GtkGestureMultiPress for signal emission
It is now useful for that purpose with a ::release signal, so replace
the custom GtkGestureSingle with one of these.
2014-05-23 19:54:31 +02:00
Carlos Garnacho
e638ff7974 drag: Allow gtk_gesture_get_start_point/offset() to be called on ::drag-end 2014-05-23 19:54:30 +02:00
Carlos Garnacho
d2db31ee5e multipress: Add matching ::released signal
This signal will always be paired with a ::pressed signal, unless
the sequence is cancelled, or the controller is reset. the n_press
argument in the signal always matches the ::press signal one, even
if GtkGestureMultiPress::stopped was emitted in between.
2014-05-23 19:54:30 +02:00
Carlos Garnacho
04c8b4c705 multipress: Protect against fleeting touches mistriggering events
The current sequence (as per gtk_gesture_single_get_current_sequence)
is used to find out the coordinates. And only emit ::pressed if the
gesture began through a GDK_BUTTON_PRESS/TOUCH_BEGIN (eg. not due to
an extra touch being lifted)
2014-05-23 19:54:30 +02:00
Carlos Garnacho
24f20864b4 textview: Set up controllers on the GTK_PHASE_TARGET propagation phase
This way events are managed by gestures in the event handlers themselves,
respecting the execution order already assumed by subclasses around.
2014-05-23 19:54:30 +02:00
Carlos Garnacho
dd164502f7 widget: Hook GTK_PHASE_TARGET controllers to the default event handlers
Just call the controllers on that phase if the default widget handlers
are run.

For compatibility reasons, in the touch event handler, let the pointer
emulating touch be transformed to a pointer event as usual, in order to
have widget handlers a chance to run at all. If they have to be managed
by a controller in that phase, it'll have to be through the default pointer
event handlers.
2014-05-23 19:54:30 +02:00
Carlos Garnacho
1c48cc253d gesture: Add GTK_PHASE_TARGET
This phase is meant to run in the default widget handlers, as opposed
to externally as in the bubble/capture phase. This will be most usually
the expected phase for every controller replacing code in event handlers
in GTK+, just so invocation and triggering order is kept unaltered.
2014-05-23 19:54:30 +02:00
Carlos Garnacho
3d34f26a6a gesture: Handle GdkEventGrabBroken
That may happen separately from grab-notify, and also due to external
reasons, so ensure all sequences are cancelled if a grab is taken
in some GdkWindows that would obscure events on the controller.
2014-05-23 19:54:30 +02:00
Matthias Clasen
6a290bdecb GtkColorSwatch: Use gesture for button events too 2014-05-23 19:54:30 +02:00
Matthias Clasen
6896c979a9 GtkWindow: Only use a multipress gesture for toplevels
There is no point in creating and attaching this gesture
for override-redirect windows, so don't do it.
2014-05-23 19:54:30 +02:00
Matthias Clasen
bad1dd4ac7 Be careful about the list of event controllers
We can end up with _gtk_widget_remove_controller getting called
while we are iterating over the list in _gtk_widget_run_controllers.
To avoid trouble, only mark the event controller as dead by
setting data->controller to NULL, and defer the actual freeing
and list manipulation to the loop in _gtk_widget_run_controllers.
Update other places that operate on controllers to handle
data->controller being NULL.
2014-05-23 19:54:30 +02:00
Carlos Garnacho
d97e4bf6b7 textview: Convert gestures' coordinates to text window ones
And make some code shared between multipress/drag gesture.
2014-05-23 19:54:30 +02:00
Carlos Garnacho
f47138b653 textview: Use GtkGestureDrag for text selection/DnD
remaining code in button press/release, motion notify, and grab
notify handlers has been shuffled to be managed by this gesture.
2014-05-23 19:54:30 +02:00
Carlos Garnacho
a4da4f8dfa textview: Use GtkGestureMultiPress for click handling
The button press handler is no longer necessary, and most of its
code has been shuffled into the GtkGestureMultiPress::pressed
handler.
2014-05-23 19:54:30 +02:00
Carlos Garnacho
fe9685bca1 widget: tighten the conditions at which a press event is emulated
Make it really sure that the event is only emitted after every gesture
that consumed the button press is done with the sequence.
The event must only be emulated if a gesture in the capture phase happened
to consume the event, be cancelled, and
2014-05-23 19:54:30 +02:00
Carlos Garnacho
6e9b054543 widget: Fix gesture event handler retval for bubbled events
Do not clobber the return value if the regular event handler happens
to return FALSE, even if the gesture meant to consume the event.
2014-05-23 19:54:30 +02:00
Carlos Garnacho
2a0bf33bc9 gesture: Prevent against sequence cancellation within gtk_gesture_set_state()
Sequences may be cancelled within the ::sequence-state-changed handler, which
would change the points hashtable as it's being iterated in this function. So
iterate over a list of sequences and let the hashtable change freely.
2014-05-23 19:54:29 +02:00
Carlos Garnacho
44a960199b gesture: Make gtk_gesture_get_last_update_time() private 2014-05-23 19:54:29 +02:00
Carlos Garnacho
83d5795154 gesture: Remove gtk_gesture_get_last_event_type 2014-05-23 19:54:29 +02:00
Carlos Garnacho
8ab35016a6 gesture: make gtk_gesture_cancel_sequence() private 2014-05-23 19:54:29 +02:00
Carlos Garnacho
0288fd0a88 gesture: Make gtk_gesture_check() private 2014-05-23 19:54:29 +02:00
Carlos Garnacho
994c94c25b dnd: Check on the right gesture sequence when starting the drag op 2014-05-23 19:54:29 +02:00
Carlos Garnacho
5369c77029 gesture: Simplify gesture/widget interaction public API
The propagation phase property/methods in GtkEventController are gone,
This is now set directly on the GtkWidget add/remove controller API,
which has been made private.

The only public bit now are the new functions gtk_gesture_attach() and
gtk_gesture_detach() that will use the private API underneath.

All callers have been updated.
2014-05-23 19:54:29 +02:00
Carlos Garnacho
f0940c962f widget: Keep a widget reference around _gtk_widget_run_controllers()
The widget may be destroyed within the loop, in reaction to the signals
sent by the controllers. Protect against that.
2014-05-23 19:54:29 +02:00
Carlos Garnacho
db55f8a4e5 gesture: Add explanatory note in GtkGesture::end
Explain that this signal may be triggered by an extra touch that causes
the gesture to surpass GtkGesture:n-points.
2014-05-23 19:54:29 +02:00
Carlos Garnacho
5c9f4bd078 gesture: Cancel sequences that make a gesture exceed the number of touches as they happen
This makes it possible to track those through gtk_gesture_handles_sequence(),
without guessing from last event type or sequence state.
2014-05-23 19:54:29 +02:00
Carlos Garnacho
134acf3fda widget: Change slightly the gesture cancellation policy in a same widget
Within a widget, if a gesture accepts a sequence, it would previously
cancel every other gesture that not in the same group. Change this to
only cancelling gestures that previously claimed the gesture, and let
gestures with state=NONE for that sequence remain like that.

This enables late recognition of gestures, even on the presence of
another gesture group that was more eager at claiming the gesture.

One usecase is user-defined panning gestures on scrolledwindows,
if ::capture-button-press is TRUE (eg. the default), the gesture is
claimed early in order to consume the button press, but that would
tipically make every other gesture group deny the sequence. With
this change, the pan gesture can keep state=NONE, and later claim
the sequence for itself if the panning gesture is recognized.

Also, do not propagate state=DENIED to every gesture in the widget,
that was unintended.
2014-05-23 19:54:29 +02:00
Carlos Garnacho
4589f0e0c8 rotate: Ensure delta is between [0..2π] 2014-05-23 19:54:29 +02:00
Carlos Garnacho
c34280d97b pan: make the direction factor less narrow in v/h directions 2014-05-23 19:54:29 +02:00