Compare commits

...

135 Commits

Author SHA1 Message Date
Matthias Clasen e2de76d465 More UI refinements 2015-04-10 14:04:40 -04:00
Matthias Clasen 0bb12749d1 UI refinements 2015-04-10 13:12:46 -04:00
Matthias Clasen 24e1ecce23 Trivial formatting fix 2015-04-10 08:02:57 -04:00
Matthias Clasen 86c97fd710 Remove no longer needed in-tree editing 2015-04-09 21:03:13 -04:00
Matthias Clasen 5e35d3c8de Use a popover for creating new folders 2015-04-09 20:56:54 -04:00
Matthias Clasen ac931e9506 popover: Remove signal handlers in dispose
If we don't, they may get triggered at an inopportune
time later, causing us to crash.

See
https://bugzilla.redhat.com/show_bug.cgi?id=1203499

https://bugzilla.gnome.org/show_bug.cgi?id=747539
2015-04-09 06:39:11 -04:00
Matthias Clasen b2e19866ea wayland: Wait for output and seat information
When we open the connection, we get the wl_output object,
but we return before all the information such as monitor
geometry has arrived, which causes us to misinform early
users of this information. Do a roundtrip here that causes
us to wait until the information is complete. Do the same
for seats, just in case.
https://bugzilla.gnome.org/show_bug.cgi?id=747471
2015-04-09 00:14:20 -04:00
Matthias Clasen da16947e21 wayland: Add more debug output 2015-04-09 00:13:37 -04:00
Matthias Clasen 096b49013a Make gtk-update-icon-cache not fall over leftover temp files
This is a followup to 0fd185fa6d. There is no
good reason to only try again if --force is passed. Do it
always.

See
https://bugzilla.redhat.com/show_bug.cgi?id=1194957
2015-04-08 20:34:08 -04:00
Matthias Clasen a89e99b0be tree view: Avoid a crash with rubberbanding
When a treeview is destroyed while rubberbanding is going
on, we crash because the rb tree is nuked before we want
to access it to stop the rubberbanding. To avoid this crash
end the rubberbanding early in destroy().

See
https://bugzilla.redhat.com/show_bug.cgi?id=1173904
2015-04-08 18:54:45 -04:00
Matthias Clasen c0ac3c3386 GtkApplication: avoid a crash
It can apparently happen that we get focus in events
on windows after gtk_application_shutdown() has been
called. Avoid an unnecessary crash in this case.

See
https://bugzilla.redhat.com/show_bug.cgi?id=1176339
2015-04-08 15:44:21 -04:00
Matthias Clasen c6a77d0f68 Revert "image: Optimize non-resize changes"
This reverts commit bae97a4c6b.

We're still seeing regressions from there, see
http://bugzilla.redhat.com/show_bug.cgi?id=1208183
2015-04-08 14:13:20 -04:00
Matthias Clasen 65b7fc91bd testgtk: Respect display cursor size limitations
Instead of hardcoding 64, ask the display about the
maximal supported cursor size.
2015-04-07 18:40:21 -04:00
William Hua 61f3399f98 mir: Fix build failure due to changed API
mir_surface_set_event_handler() now takes three arguments.
2015-04-07 10:38:22 -04:00
Matthias Clasen 4c80ac0733 Fix indicator proximity checks
The coordinate translations here were not working properly
for window widgets inside the scrolled window, as can be
seen e.g. for the horizontal scrollbar of the 'Tree View'
example in gtk3-demo.

https://bugzilla.gnome.org/show_bug.cgi?id=747406
2015-04-06 21:27:17 -04:00
Matthias Clasen cfb5f160f2 Make indicators pop out when needed
When moving over a non-expanded indicator from the outside, we were
not expanding it, due to on_scrollbar being true. This can be seen
e.g. when moving from the content pane over to the sidebar indicator
in gtk3-demo. We must still ensure that the indicator is expanded
when receiving motion events over the indicator.

https://bugzilla.gnome.org/show_bug.cgi?id=747407
2015-04-06 19:37:14 -04:00
Denis Arnaud cd499f0abc Updated breton translation 2015-04-06 15:00:01 +02:00
Emmanuele Bassi 3972520fbb docs: Note the side effects of GtkLabel setters
The gtk_label_set_text() and gtk_label_set_markup() functions have
various side effects that ought to be documented, especially for
non-C developers using properties directly.

https://bugzilla.gnome.org/show_bug.cgi?id=747121
2015-04-05 22:46:29 -04:00
Matthias Clasen e6061caa7b file chooser: Ensure a folder is loaded when browsing
Just showing an empty list when the user hits Ctrl-l in
recent files is not very useful. Load the home directory
instead.
2015-04-05 22:27:23 -04:00
Matthias Clasen e6c1cbc88e file chooser: Open location entry more easily
Show the location entry also when alphanumerics are typed
into the list.
2015-04-05 22:12:46 -04:00
Matthias Clasen cd033e6f07 testfilechooser: Improve filter setup
It is not ideal when the default filter filters away
all files, so change things to select the 'all files'
filter by default.
2015-04-05 22:09:22 -04:00
Matthias Clasen fc8516fe75 Formatting fix 2015-04-05 22:09:04 -04:00
Matthias Clasen 29a2a65756 Formatting fix 2015-04-05 22:07:59 -04:00
Matthias Clasen a6c7889cb6 testgtk: Set initial cursor
Arrange for the entry and the cursor area to both start out
with the arrow cursor.
2015-04-05 19:10:39 -04:00
Matthias Clasen e77b2832aa testgtk: Redo the cursor example
Use cursor names instead of font cursors, so we can also show
cursors that are not represented in the X cursor font and thus
don't have a value in the GdkCursorType enumeration.
2015-04-05 19:00:44 -04:00
Matthias Clasen cb750f60f9 wayland: Don't mix free and g_strdup
While it works most of the time, this is technically
not correct.
2015-04-05 18:59:51 -04:00
Matthias Clasen 386534ef1f testgtk: Update cursor theme on size change
We were connecting to the wrong signal, so we were not picking
up all changes to the spin button value.
2015-04-05 13:28:26 -04:00
Matthias Clasen d94d2efc43 GtkListBox: Make model binding introspectable
Introspection can't deal with bare pointers, so annotate
the callback as taking objects. This is the outcome of
discussion in
https://bugzilla.gnome.org/show_bug.cgi?id=746893
2015-04-05 08:13:24 -04:00
Paolo Borelli 6b977e6870 gtktextbuffer: small cleanup in clipboard handling
Make code shorter and also more efficient since we move the
selection check out of the loop

https://bugzilla.gnome.org/show_bug.cgi?id=747096
2015-04-05 07:54:00 -04:00
Olivier Fourdan 49ec67c7eb x11/gl: Fix use after free
https://bugzilla.gnome.org/show_bug.cgi?id=747305

Signed-off-by: Olivier Fourdan <fourdan@xfce.org>
2015-04-05 07:41:03 -04:00
Lapo Calamandrei 2c61a52ff6 Adwaita: stronger entry focus indication
See https://bugzilla.gnome.org/show_bug.cgi?id=746202 for details.
2015-04-02 18:50:37 +02:00
Dušan Kazik 3b57d197cd Updated Slovak translation 2015-04-02 08:57:09 +00:00
Carlos Garnacho b1696436d1 scrolledwindow: Ignore 0/0 scroll events when possibly cancelling animation
These should be used eventually to start kinetic scrolling, so should definitely
be ignored on cancellation.

https://bugzilla.gnome.org/show_bug.cgi?id=747133
2015-04-01 16:24:36 +02:00
Stas Solovey 361a0574dc Updated Russian translation 2015-04-01 12:15:49 +00:00
Stas Solovey a263018a3e Updated Russian translation 2015-04-01 11:31:10 +00:00
Marek Černocký b3580aa46a Udated Czech translation 2015-04-01 11:55:02 +02:00
Matej Urbančič 313738b3e9 Updated Slovenian translation 2015-03-31 21:09:21 +02:00
Carlos Garnacho 960c229220 scrolledwindow: Remove needless "dragging" field from Indicator struct
The "over" state already stays set while scrollbar dragging happens, there's
no need to double track that.

https://bugzilla.gnome.org/show_bug.cgi?id=746961
2015-03-31 13:18:35 +02:00
Carlos Garnacho eb26208c08 scrolledwindow: Check the event widget on captured motion events
This path is only intended to be triggered on events directed towards the
child of the scrolledwindow, so make it explicitly so. This avoids scrollbar
"over" state flashing when dragging finishes within the slider.

https://bugzilla.gnome.org/show_bug.cgi?id=746961
2015-03-31 13:18:35 +02:00
Jonas Ådahl 71256a0f94 wayland: Set a more correct xdg_surface application id
The "app_id" of a xdg_surface should be the ID that can potentially be
used to get the DBUS name or the .desktop file.

For GtkApplication programs this is often the ID passed when creating the
GtkApplication object, so when available lets use that.

As fallbacks, first try g_get_prgname as it often corresponds to the
basename part of the .dektop file for non-GtkApplication programs.
Otherwise use gdk_get_program_class, even though that string usually
doesn't conform to the expectations of xdg_surface.set_application_id.

https://bugzilla.gnome.org/show_bug.cgi?id=746435
2015-03-31 12:37:50 +08:00
Stas Solovey 5a0d718239 Updated Russian translation 2015-03-30 22:40:20 +00:00
Jakub Steiner 40a83ef5a6 Revert "Adwaita: desaturate selected color for backdrop"
This reverts commit 6f478db2fa.

As per discussion on bug 746202, the real solution to the case
in bug 704352 is what the reporter suggests.
2015-03-30 14:54:25 +02:00
Daniel Korostil 95e2dc32ec Updated Ukrainian translation 2015-03-30 08:56:32 +03:00
Carlos Garnacho cba2ecc0cc gtkdnd: Restore widget opacity after fading out
Otherwise the widget is left fully transparent, and will start as such if
the widget is reused.
2015-03-29 22:57:31 +02:00
Carlos Garnacho a6cafa1edb gtkdnd: Set the icon helper from the drag site onto the context
If the icon happened to come from the drag site icon helper (ie. set through
gtk_drag_source_set_icon*), it would be referenced on the GtkDragInfo,
but not hooked into its context. This results on non visible drag windows,
until set_icon_helper() happened to be called on some path.
2015-03-29 22:21:19 +02:00
Benjamin Otte e2fc198b9e roundedbox: Fix a copy/paste error
This caused shadows to not be drawn in certain situations when overlayed
via a popover animation.

https://bugzilla.gnome.org/show_bug.cgi?id=746862
2015-03-29 22:18:29 +02:00
Marek Černocký 050e139019 Updated Czech translation 2015-03-29 13:49:43 +02:00
Matthias Clasen 0648453339 radio button: Fix directional navigation
GtkRadioButton had a deficient copy of the focus sort code
in GtkContainer, causing focus to jump over the next button
in the list. Just use _gtk_container_focus_sort() here,
which fixes the bug _and_ saves 80 lines of code.

https://bugzilla.gnome.org/show_bug.cgi?id=746817
2015-03-29 00:24:35 -04:00
Matthias Clasen 505fed1383 Fix separator in testsplitheaders 2015-03-28 22:32:12 -04:00
Lars Uebernickel ada97b0928 gtkprogressbar: fix size allocation
As of 74405cc, progress bars use a new design with values drawn on top
(or to the left) of the through instead of inside of it. This change
brought a number of regressions: the min-horizontal-bar-height and
min-vertical-bar-width style properties are not respected anymore. For
vertical progress bars, the value was drawn too close to the bar and not
centered vertically.

Fix this by respecting the style properties and drawing the value label
at the correct position.

Also, the xspacing and yspacing properties didn't server any apparent
purpose. Change their semantics to mean "the spacing between the label
and the bar". Hence, they only need to be added to the size request when
showing the label. Since we are changing semantics anyway, reduce their
default values from 7 to 2, to avoid and excessive gap.

https://bugzilla.gnome.org/show_bug.cgi?id=746688
2015-03-28 19:00:06 -04:00
Antoine Jacoutot ae430b1b80 make libcanberra support optional
Make it possible to control libcanberra support so we don't risk ending up with
a cyclic dependency when using packages: gtk+ -> libcanberra-gtk3 -> gtk+

https://bugzilla.gnome.org/show_bug.cgi?id=746904
2015-03-28 18:38:24 -04:00
Matej Urbančič a55ebcb4b0 Updated Slovenian translation 2015-03-28 22:42:42 +01:00
Jordi Mas 1afc9bc5dc Upload Catalan translation 2015-03-28 13:36:25 +01:00
Ryan Lortie 6e03e7e80a GtkListBox: fix model binding refcount issue
As it is, GtkListBox model binding will work nicely as long as your
create_widget_func returns a floating reference on the newly-created
widget.

If you try to return a full reference (as any higher-level language
would do) then you will leak that reference.

Fix that up by converting any floating references into full references
and then unconditionally releasing the full reference after adding to
the box.

https://bugzilla.gnome.org/show_bug.cgi?id=746893
2015-03-27 12:07:17 -04:00
Hans de Goede 36baf9207e scrolledwindow: Extend trackpoint heuristic to ALPS trackpoints
These have a different characteristic device name, look for it too
in order to enable trackpoint features.
2015-03-26 19:46:56 +01:00
Emmanuele Bassi 86720b014e docs: Add initialization example for GtkGLArea
Show how to safely check for errors when initializing the OpenGL
pipeline.
2015-03-26 17:40:40 +00:00
Emmanuele Bassi d79bc00345 x11/gl: Do not use GLX_EXT_texture_from_pixmap if not available
If the GLX_EXT_texture_from_pixmap extension is not available when we
did the extensions check, then there's no point in using the backend
specific code paths that rely on it.
2015-03-26 17:28:48 +00:00
Руслан Ижбулатов 3c80451b17 W32: Only override window miximized position for CSDed windows
This fixes an issue with non-CSDed windows being improperly positioned
when maximized, which was introduced by the previous commit.

https://bugzilla.gnome.org/show_bug.cgi?id=746821
2015-03-26 17:02:38 +00:00
Руслан Ижбулатов af9f6fca5f W32: Correctly set maximized window position
Use screen workarea to *also* set the position of a maximized window,
not just its size. Without this the window position defaults to 0:0
(the topleft corner), which is wrong when taskbar is position along the
top or left edge of the screen.

https://bugzilla.gnome.org/show_bug.cgi?id=746821
2015-03-26 15:43:17 +00:00
Will Thompson 371a3a7871 bbox: correct documentation typo 2015-03-26 14:01:53 +00:00
Joanmarie Diggs 9749013e5f Fix an AtkStateType emitted for GtkBooleanCellAccessible
An apparent copy-and-paste error is resulting in ATs being notified of
changes in ATK_STATE_CHECKED when the cell's "sensitive" state changes.

https://bugzilla.gnome.org/show_bug.cgi?id=746784
2015-03-26 08:23:37 -04:00
Rico Tzschichholz 9ca8b71e76 textview: Fix "Since" versions after backport
Fix for 28063ee2e4 which got cherry-picked
to 3.16
2015-03-25 20:52:43 +01:00
Emmanuele Bassi 721134b008 demo/glarea: Check errors on GtkGLArea
We should not call OpenGL API if GtkGLArea is in an error state.

https://bugzilla.gnome.org/show_bug.cgi?id=746746
2015-03-25 15:20:36 +00:00
Emmanuele Bassi fae3eaffcd glarea: Check that the context is not NULL
The public API should perform more checks when it comes to an NULL
context.

https://bugzilla.gnome.org/show_bug.cgi?id=746746
2015-03-25 15:19:30 +00:00
Emmanuele Bassi 85141bc503 x11/gl: Do not try to call MakeCurrent with a NULL context
This should not happen, but better safe than sorry.

https://bugzilla.gnome.org/show_bug.cgi?id=746746
2015-03-25 15:18:44 +00:00
Emmanuele Bassi b899a78387 x11/gl: Trap GL context creation
Avoid an X11 error in case the context creation fails, so we can avoid a
crash and pick it up in the upper layers, and display an error.

https://bugzilla.gnome.org/show_bug.cgi?id=746746
2015-03-25 14:34:42 +00:00
Benjamin Otte 1506ba060c filechooser: Use same priority everywhere
I managed to stall recent files today while trying to save a GTK
testcase in glade that contained enough spinning spinners that the CPU
was saturated just redrawing things.

I had to navigate the filesystem!
2015-03-25 04:31:33 +01:00
Marcus Karlsson 38f61dd445 GtkRange: Check "inverted" property when drawing
The direction in which the slider moves can be inverted by setting the
inverted property. But the draw method does not check this, instead it
checks if the direction of the widget is set to be right to left.

Call the should_invert function in order to determine if the direction
of the range should be inverted. It too checks the widget's direction,
but also checks the "inverted" property, and allows the range to be
drawn inverted even if it is vertically oriented.

https://bugzilla.gnome.org/show_bug.cgi?id=746712
2015-03-24 23:19:50 -04:00
Joanmarie Diggs 1ed9d33d24 a11y: Only emit name-changed once
We were emitting it twice, once with deleting the old text, once with
inserting the new text.

https://bugzilla.gnome.org/show_bug.cgi?id=746706
2015-03-25 04:06:23 +01:00
Joanmarie Diggs c66d165676 a11y: Free the cell text after emitting text-changed:delete.
This is needed because AT-SPI2's ATK bridge exposes the deleted string
to ATs.

https://bugzilla.gnome.org/show_bug.cgi?id=746706
2015-03-25 04:06:23 +01:00
Joanmarie Diggs d553c0ae1e a11y: Refactor code
Put the equality check in front. This allows better detection of when an
insert or delete needs to be emitted.

Also, only emit text-changed:delete if the deleted text is not the empty
string. Only emit text-changed:insert if the inserted text is not the
empty string.

https://bugzilla.gnome.org/show_bug.cgi?id=746706
2015-03-25 04:06:23 +01:00
Joanmarie Diggs 4340e977e4 a11y: Refactor textcellaccessible code
Compute the new text and its length in advance. This way those
computations will not confuse us when they happen in the middle of the
actual action.

https://bugzilla.gnome.org/show_bug.cgi?id=746706
2015-03-25 04:06:23 +01:00
Marcus Karlsson abf3d78b57 GtkRange: Fix drawing of fill-level
Compute the proportion of the range that should be filled to match the
fill level, and use it to compute the starting point and length of the
area between the slider and the fill level.

https://bugzilla.gnome.org/show_bug.cgi?id=734741
2015-03-24 22:45:14 -04:00
Ignacio Casal Quinteiro 7719784733 inspector: fix warning about not using the right format for an int64 2015-03-24 13:36:36 +01:00
Benjamin Otte fdc620cd56 cssnode: Clear widget path more aggressively
When recomputing CSS, we need a correct widget path in the fallback mode
where we're still using widget paths.
So we need to invalidate it everytime it actually changes, and not just
when emitting the style-updated signal.

Fixes css-match-regions reftest.
2015-03-24 04:23:07 +01:00
Changwoo Ryu 59579576c6 Updated Korean translation 2015-03-24 09:54:24 +09:00
Niels Nesse 641e280311 x11/gl: Removing some more legacy GL calls
They are not required any more.

http://bugzilla.gnome.org/show_bug.cgi?id=746668
2015-03-23 22:16:34 +00:00
Emmanuele Bassi 6bd7526ee7 x11/gl: Do not call glEnable/glDisable with GL_TEXTURE_2D
These are fixed pipeline functions, and Mesa will warn (if debugging
messages are enabled). At best, they are poinless calls.
2015-03-23 22:03:00 +00:00
Inaki Larranaga Murgoitio aaff396e48 Updated Basque language 2015-03-23 22:23:30 +01:00
Inaki Larranaga Murgoitio d6f6a52c00 Updated Basque language 2015-03-23 22:22:39 +01:00
Inaki Larranaga Murgoitio 84d5f0e64d Updated Basque language 2015-03-23 22:19:10 +01:00
Piotr Drąg c88ec37037 Fix a minor typo in translatable string 2015-03-23 17:35:41 +01:00
Piotr Drąg 68ff82cbf2 Updated Polish translation 2015-03-23 17:33:38 +01:00
Piotr Drąg 81776ea3f1 Updated POTFILES.in and POTFILES.skip 2015-03-23 17:25:55 +01:00
Marek Černocký 6b1ca8b887 Updated Czech translation 2015-03-23 16:15:57 +01:00
Matthias Clasen a08ee01c64 csd: Fix an oversight for popups
After the recent rework of client-side shadow code, menus,
tooltips and similar popups were ending up with solid decorations.
Fix this oversight.
2015-03-23 10:41:10 -04:00
Balázs Úr 83b6423409 Updated Hungarian translation 2015-03-23 14:40:53 +00:00
Yosef Or Boczko 51a434ad4b Update properties Hebrew translation 2015-03-23 14:53:57 +02:00
Yosef Or Boczko 1abb28ec65 Updated Hebrew translation 2015-03-23 14:52:42 +02:00
Tom Tryfonidis 66a7636b63 Updated Greek translations 2015-03-23 11:59:24 +02:00
Milo Casagrande 72afa5c2ee Updated Italian translation 2015-03-23 07:29:55 +00:00
Milo Casagrande 6cadef7ff6 Updated Italian translation 2015-03-23 07:25:57 +00:00
Matthias Clasen eea16f03f5 Stop using GDK_POINTER_MOTION_HINT_MASK in widgets
It is deprecated and no longer needed, and,as observed in
https://bugzilla.gnome.org/show_bug.cgi?id=746253 it
interferes with turning off event compression.
2015-03-22 17:33:38 -04:00
Matthias Clasen 6f829d4450 Silence another compiler warning
Again, our habit of comparing enum values against -1.
2015-03-22 15:20:43 -04:00
Matthias Clasen 70f6faf0f1 Don't return G_TYPE_INVALID as a pointer
Use NULL for g_return_val_if_fail checks if the function returns
a pointer. Pointed out by clang.
2015-03-22 15:19:59 -04:00
Matthias Clasen c723eba135 text view: Avoid clang compiler warnings
Again, our habit to use -1 as an unset value for enum types.
2015-03-22 15:19:17 -04:00
Matthias Clasen f00f2fdf0d Remove a redundant const
const gchar const is still just const gchar, unless there's
indirections in between.
2015-03-22 15:18:35 -04:00
Matthias Clasen a14bb5578f css: Silence a clang warning
Clang complains that this check can never be true. Since this
is a argument range check which we do to catch bad input,
convince clang to not complain instead of taking it out.
2015-03-22 15:17:27 -04:00
Matthias Clasen fb573e58f1 Remove a pointless comparison
Comparing an unsigned value against < 0 is not going to succeed.
Pointed out by clang.
2015-03-22 15:16:14 -04:00
Matthias Clasen 2250cd87eb paper size: Don't use abs() on floats
Use fabs() instead. Pointed out by clang.
2015-03-22 15:15:42 -04:00
Matthias Clasen ddf7501acd More of the same
A similar case in GtkIconHelper. Here we were confusing ourselves,
and compared a icon_size against -1, although the variable is
never set to -1.
2015-03-22 15:14:42 -04:00
Matthias Clasen 543eae0d76 Avoid some clang compiler warnings
Avoid some compiler warnings from clang in deprecated code.
Most of these are around our habit of using -1 as an 'unset'
value for enumerations.
2015-03-22 15:13:32 -04:00
Matthias Clasen fbbb3d1816 Fix some clang warnings
It complains about double const, and it is right.
2015-03-22 14:40:57 -04:00
Matthias Clasen 2a444e30f7 Make the blur code compile with clang
clang complains that the expression involving sqrt() is not
constant, and thus refuses to accept it as a case label. So,
use precomputed values instead.

https://bugzilla.gnome.org/show_bug.cgi?id=746468
2015-03-22 13:49:24 -04:00
Matthias Clasen 4ef0c34b65 Fix the build 2015-03-22 11:55:33 -04:00
Matthias Clasen db28b8c600 tooltip: Minor cleanup
Preserve the symmetry in gtk_tooltip_set_last_window.
2015-03-22 11:47:23 -04:00
Matthias Clasen a17d6290e4 search bar: Clean up weak pointer handling
Break out a setter that manages the weak pointer, and
use it in finalize. This also fixes a bug where we were
forgetting to disconnect the right signal handler in
some cases.
2015-03-22 11:46:16 -04:00
Matthias Clasen b55aa154e6 mount operation: Minor formatting cleanup
The pattern for g_object_add_weak_pointer calls is to
have the same expression in both arguments.
2015-03-22 11:45:19 -04:00
Matthias Clasen 03417cf864 menu button: Minor cleanup
Preserve the symmetry in set_align_widget_pointer.
2015-03-22 11:44:37 -04:00
Matthias Clasen c0c1774b01 Clean up some unfortunate formatting
"if (...) do" just looks wrong.
2015-03-22 11:44:00 -04:00
Matthias Clasen 37774928bd dnd: Introduce a helper to manage the weak pointer
Introduce a setter that takes care of updating the weak ref
whenever we assign info->widget. Just a cleanup of the previous patch.
2015-03-22 11:16:29 -04:00
Tom Hughes e7eaca9534 DND: Clean up weak pointers when they are no longer needed
Failure to do so leads to memory corruption down the road.
This was introduced in commit 650c25e06c.

https://bugzilla.gnome.org/show_bug.cgi?id=746602
2015-03-22 11:16:29 -04:00
Christian Kirbach ec32d8dade Updated German translation 2015-03-22 11:07:20 +00:00
Jordi Mas 1c007e4196 Upload Catalan translation 2015-03-22 04:18:27 -04:00
Matthias Clasen ca41bb440d Add an index for new api to the docs 2015-03-22 02:11:03 -04:00
Matthias Clasen 5c5464a469 radio-menu-item: Add join_group()
The other Radio* widgets have this convenience method that removes the
memory management of the opaque GSList used to handle the group from the
API usable from language bindings (especially the ones not based on
introspection).

This commit adds gtk_radio_menu_item_join_group().

https://bugzilla.gnome.org/show_bug.cgi?id=671362
2015-03-22 02:10:38 -04:00
Matthias Clasen ad05d84897 radio-menu-item: Allow arguments to be NULL
Some arguments, like the group and the label of a RadioMenuItem, can be
NULL: the RadioMenuItem has all the code to deal with them. The argument
validation is too strict, though, for instance doing:

  return_if_fail (IS_RADIO_MENU_ITEM (foo))

  if (foo != NULL)
    set_foo (foo)

Which is obviously incorrect.

This commit also modifies the annotations of the API, to ensure that
language bindings do the right thing.

https://bugzilla.gnome.org/show_bug.cgi?id=671362
2015-03-22 02:10:38 -04:00
Emmanuele Bassi 955aed9227 radio-menu-item: Handle a !NULL group
If we create a RadioMenuItem without a group, and then set a group, the
menu item will still be set as active, which means an inconsistently
drawn radio menu item - as the RadioMenuItem will set the active flag on
itself, but then it won't reset it when it gets a new group.

https://bugzilla.gnome.org/show_bug.cgi?id=671362
2015-03-22 02:10:37 -04:00
Matthias Clasen c16acff3ea Start 3.17 development
Bump the version to 3.17.0 and add version macros.
2015-03-22 02:10:23 -04:00
Olivier Fourdan 03213b9509 Improve CSD decorations without a compositor
It turned out that using mwm hints to instruct wms to
create border-only decorations is not really working
universally. So, instead of doing this, render a solid
frame without shadow on the client-side to handle this
case.

https://bugzilla.gnome.org/show_bug.cgi?id=746222

Signed-off-by: Olivier Fourdan <fourdan@xfce.org>
2015-03-22 01:34:37 -04:00
Matthias Clasen bae97a4c6b image: Optimize non-resize changes
When the image content is changed, only queue a resize
if the size is actually changing, otherwise just a
redraw. Suggested by Owen in

https://bugzilla.gnome.org/show_bug.cgi?id=613833
2015-03-21 22:40:46 -04:00
Christian Hergert 7bb3d9557f a11y: handle atk race condition where widget has been destroyed
If the widget has been destroyed since a DBus message had been sent,
we could be in a condition that the widget pointer exists but it does
not have a window.

This bails as if the widget didn't exist if there is no available
GdkWindow.

We also set the extents to 0 to be defensive since this is a vfunc
implementation.

https://bugzilla.gnome.org/show_bug.cgi?id=746586
2015-03-21 20:05:08 -04:00
Muhammet Kara 9e9c0a133e Updated Turkish translation 2015-03-21 21:25:38 +00:00
Alexander Larsson 8e032622c8 box-shadow: For top/bottom and left/right parts, repeat a single line
Since these part really are the same in all of the x or y direction
and we don't blur in that direction we can just blur one line and
repeat it during drawing.

https://bugzilla.gnome.org/show_bug.cgi?id=746468
2015-03-21 21:39:15 +01:00
Alexander Larsson 967cb56275 shadow-box: Blur only horizontally/vertically for the non-corner parts
There is no need to e.g. blur in the x-direction for the top part
of a box shadow. Also, there is no need to extend the mask in the
non-blurred direction.

https://bugzilla.gnome.org/show_bug.cgi?id=746468
2015-03-21 21:31:49 +01:00
Alexander Larsson 9c2a16fb3b shadow-box: Bail out blur early if radius is 1px
For radius 1px the current implementation rounds down to a 1 px box
filter which is a no-op. Rather than creating useless shadow masks
in this case we bail out blurring early.

Another alternative would be to make radius 1px round up to a 2 px box
filter, but that would change the rendering of Adwaita which is probably
not a great idea this late in the cycle.

https://bugzilla.gnome.org/show_bug.cgi?id=746468
2015-03-21 21:07:26 +01:00
Alexander Larsson d0dc1f52cc gtkcairoblur: Unroll inner loop for common radius values
This unrolls the inner blur loop for radius 1-10, allowing
the compiler to use a divide-by-constant operation instead
of a generic division.

Here is the blur-performance output before:

Radius  1: 124.95 msec, 32.01 kpixels/msec:
Radius  2: 117.27 msec, 34.11 kpixels/msec:
Radius  3: 123.57 msec, 32.37 kpixels/msec:
Radius  4: 118.17 msec, 33.85 kpixels/msec:
Radius  5: 119.32 msec, 33.52 kpixels/msec:
Radius  6: 124.17 msec, 32.21 kpixels/msec:
Radius  7: 121.04 msec, 33.05 kpixels/msec:
Radius  8: 130.64 msec, 30.62 kpixels/msec:
Radius  9: 119.47 msec, 33.48 kpixels/msec:
Radius 10: 117.95 msec, 33.91 kpixels/msec:
Radius 11: 122.38 msec, 32.68 kpixels/msec:
Radius 12: 121.92 msec, 32.81 kpixels/msec:
Radius 13: 125.45 msec, 31.89 kpixels/msec:
Radius 14: 121.63 msec, 32.89 kpixels/msec:
Radius 15: 120.18 msec, 33.28 kpixels/msec:

And after:

Radius  1: 42.26 msec, 94.65 kpixels/msec:
Radius  2: 59.15 msec, 67.62 kpixels/msec:
Radius  3: 60.29 msec, 66.35 kpixels/msec:
Radius  4: 64.53 msec, 61.99 kpixels/msec:
Radius  5: 60.07 msec, 66.59 kpixels/msec:
Radius  6: 62.43 msec, 64.07 kpixels/msec:
Radius  7: 60.36 msec, 66.27 kpixels/msec:
Radius  8: 59.59 msec, 67.13 kpixels/msec:
Radius  9: 76.17 msec, 52.51 kpixels/msec:
Radius 10: 79.41 msec, 50.37 kpixels/msec:
Radius 11: 118.92 msec, 33.64 kpixels/msec:
Radius 12: 121.31 msec, 32.97 kpixels/msec:
Radius 13: 118.30 msec, 33.81 kpixels/msec:
Radius 14: 116.82 msec, 34.24 kpixels/msec:
Radius 15: 116.99 msec, 34.19 kpixels/msec:

I.e. almost double performance for the unrolled radius values.

https://bugzilla.gnome.org/show_bug.cgi?id=746468
2015-03-21 21:07:26 +01:00
Alexander Larsson ae21e08782 gtkcairoblur: Minor restructure
This just moves get_box_filter_size to the top and makes
it a macro (so it can be used as a constant later).

https://bugzilla.gnome.org/show_bug.cgi?id=746468
2015-03-21 20:59:57 +01:00
Alexander Larsson 9ba185b749 Add performance test for gtkcairoblur
This just creates a large cairo surface and times bluring it
at various values of radius.

https://bugzilla.gnome.org/show_bug.cgi?id=746468
2015-03-21 20:59:57 +01:00
hanniedu dd1af9bbdd Updated Dutch translation gtk and gtk-properties master 3.16 2015-03-21 18:25:17 +01:00
Matthias Clasen 8c8e6588dc HighContrast: Fix a typo
Commit 0a39d7d9 introduced a selected_bg_color with a missing $
in front of it.
2015-03-20 20:49:56 -04:00
Gábor Kelemen 4a2b44467b Updated Hungarian translation 2015-03-20 23:23:24 +00:00
Balázs Úr 5f52a2c8c9 Updated Hungarian translation 2015-03-20 22:57:03 +00:00
Matthias Clasen 40bb2a1616 reftests: Add a way to compare different runs
gtk-reftest already had an --output=DIR option to tell it where
to save all the resulting images. Now you can combine this with
the --compare-with=DIR option in a second run to make gtk-reftest
compare the .out.png files from the first run with the .out.png
files of the current run, instead of producing .ref.png files.

The intended use for this is to verify that changes do not affect
the generated output.
2015-03-20 16:42:04 -04:00
Rico Tzschichholz db8e6aa497 mir: Fix version annotation, the mir-backend is available since 3.16 2015-03-20 20:23:01 +01:00
117 changed files with 49277 additions and 45350 deletions
+30 -6
View File
@@ -9,8 +9,8 @@
# set GTK_BINARY_AGE and GTK_INTERFACE_AGE to 0.
m4_define([gtk_major_version], [3])
m4_define([gtk_minor_version], [15])
m4_define([gtk_micro_version], [12])
m4_define([gtk_minor_version], [17])
m4_define([gtk_micro_version], [0])
m4_define([gtk_interface_age], [0])
m4_define([gtk_binary_age],
[m4_eval(100 * gtk_minor_version + gtk_micro_version)])
@@ -1660,12 +1660,35 @@ AM_CONDITIONAL(HAVE_COLORD, test "x$have_colord" = "xyes")
# Check for libcanberra (only used in examples)
##################################################
PKG_CHECK_MODULES(LIBCANBERRA, libcanberra-gtk3,
have_libcanberra=yes, have_libcanberra=no)
if test "$have_libcanberra" = "yes"; then
AC_DEFINE(HAVE_LIBCANBERRA, 1, [define if we have libcanberra])
AC_ARG_ENABLE(libcanberra,
[AS_HELP_STRING([--enable-libcanberra],
[enable libcanberra support in examples [default=auto]])],
[enable_libcanberra="$enableval"],
[enable_libcanberra=auto])
AC_MSG_CHECKING([whether to use libcanberra])
if test "$enable_libcanberra" != "no"; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
have_libcanberra=no
if test "$enable_libcanberra" != "no"; then
PKG_CHECK_MODULES(LIBCANBERRA, libcanberra-gtk3,
have_libcanberra=yes, have_libcanberra=no)
if test "$enable_libcanberra" = "yes"; then
if test "$have_libcanberra" = "no"; then
AC_MSG_ERROR([--enable-libcanberra specified, but not available])
fi
fi
fi
if test "$have_libcanberra" = "yes"; then
AC_DEFINE(HAVE_LIBCANBERRA, 1, [define if we have libcanberra])
fi
AM_CONDITIONAL(HAVE_LIBCANBERRA, test "x$have_libcanberra" = "xyes")
##################################################
# Checks for gtk-doc and docbook-tools
##################################################
@@ -1938,6 +1961,7 @@ echo " Print backends: $PRINT_BACKENDS"
echo " Dynamic modules: $build_dynamic_modules"
echo " Included immodules: $included_immodules"
echo " colord support: $have_colord"
echo " libcanberra support: $have_libcanberra"
echo " Introspection: $found_introspection"
echo " Debugging: $enable_debug"
echo " Documentation: $enable_gtk_doc"
+9
View File
@@ -220,6 +220,9 @@ realize (GtkWidget *widget)
{
gtk_gl_area_make_current (GTK_GL_AREA (widget));
if (gtk_gl_area_get_error (GTK_GL_AREA (widget)) != NULL)
return;
init_buffers (&position_buffer, NULL);
init_shaders (&program, &mvp_location);
}
@@ -230,6 +233,9 @@ unrealize (GtkWidget *widget)
{
gtk_gl_area_make_current (GTK_GL_AREA (widget));
if (gtk_gl_area_get_error (GTK_GL_AREA (widget)) != NULL)
return;
glDeleteBuffers (1, &position_buffer);
glDeleteProgram (program);
}
@@ -271,6 +277,9 @@ static gboolean
render (GtkGLArea *area,
GdkGLContext *context)
{
if (gtk_gl_area_get_error (area) != NULL)
return FALSE;
/* Clear the viewport */
glClearColor (0.5, 0.5, 0.5, 1.0);
glClear (GL_COLOR_BUFFER_BIT);
+12 -9
View File
@@ -33,8 +33,7 @@ static GtkWidget *
create_menu (gint depth)
{
GtkWidget *menu;
GtkWidget *menuitem;
GSList *group;
GtkRadioMenuItem *last_item;
char buf[32];
int i, j;
@@ -42,20 +41,24 @@ create_menu (gint depth)
return NULL;
menu = gtk_menu_new ();
group = NULL;
last_item = NULL;
for (i = 0, j = 1; i < 5; i++, j++)
{
GtkWidget *menu_item;
sprintf (buf, "item %2d - %d", depth, j);
menuitem = gtk_radio_menu_item_new_with_label (group, buf);
group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menuitem));
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
gtk_widget_show (menuitem);
menu_item = gtk_radio_menu_item_new_with_label_from_widget (NULL, buf);
gtk_radio_menu_item_join_group (GTK_RADIO_MENU_ITEM (menu_item), last_item);
last_item = GTK_RADIO_MENU_ITEM (menu_item);
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
gtk_widget_show (menu_item);
if (i == 3)
gtk_widget_set_sensitive (menuitem, FALSE);
gtk_widget_set_sensitive (menu_item, FALSE);
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), create_menu (depth - 1));
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_item), create_menu (depth - 1));
}
return menu;
+4
View File
@@ -467,6 +467,10 @@
<title>Index of new symbols in 3.16</title>
<xi:include href="xml/api-index-3.16.xml"><xi:fallback /></xi:include>
</index>
<index id="api-index-3-18" role="3.18">
<title>Index of new symbols in 3.18</title>
<xi:include href="xml/api-index-3.18.xml"><xi:fallback /></xi:include>
</index>
<xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
+1
View File
@@ -2771,6 +2771,7 @@ gtk_radio_menu_item_new_with_label_from_widget
gtk_radio_menu_item_new_with_mnemonic_from_widget
gtk_radio_menu_item_set_group
gtk_radio_menu_item_get_group
gtk_radio_menu_item_join_group
<SUBSECTION Standard>
GTK_RADIO_MENU_ITEM
GTK_IS_RADIO_MENU_ITEM
+4 -3
View File
@@ -52,7 +52,8 @@ get_vertex_type_name (int type)
}
static guint
create_shader (int type, const char const *code)
create_shader (int type,
const char *code)
{
guint shader;
int status;
@@ -85,8 +86,8 @@ create_shader (int type, const char const *code)
static void
make_program (GdkGLContextProgram *program,
const char const *vertex_shader_code,
const char const *fragment_shader_code)
const char *vertex_shader_code,
const char *fragment_shader_code)
{
guint vertex_shader, fragment_shader;
int status;
+24
View File
@@ -142,6 +142,16 @@
*/
#define GDK_VERSION_3_16 (G_ENCODE_VERSION (3, 16))
/**
* GDK_VERSION_3_18:
*
* A macro that evaluates to the 3.18 version of GDK, in a format
* that can be used by the C pre-processor.
*
* Since: 3.18
*/
#define GDK_VERSION_3_18 (G_ENCODE_VERSION (3, 18))
/* evaluates to the current stable version; for development cycles,
* this means the next stable target
*/
@@ -340,5 +350,19 @@
# define GDK_AVAILABLE_IN_3_16 _GDK_EXTERN
#endif
#if GDK_VERSION_MIN_REQUIRED >= GDK_VERSION_3_18
# define GDK_DEPRECATED_IN_3_18 GDK_DEPRECATED
# define GDK_DEPRECATED_IN_3_18_FOR(f) GDK_DEPRECATED_FOR(f)
#else
# define GDK_DEPRECATED_IN_3_18 _GDK_EXTERN
# define GDK_DEPRECATED_IN_3_18_FOR(f) _GDK_EXTERN
#endif
#if GDK_VERSION_MAX_ALLOWED < GDK_VERSION_3_18
# define GDK_AVAILABLE_IN_3_18 GDK_UNAVAILABLE(3, 18)
#else
# define GDK_AVAILABLE_IN_3_18 _GDK_EXTERN
#endif
#endif /* __GDK_VERSION_MACROS_H__ */
+3 -3
View File
@@ -30,13 +30,13 @@
#define GDK_TYPE_MIR_WINDOW (gdk_mir_window_get_type ())
#define GDK_IS_MIR_WINDOW(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_MIR_WINDOW))
GDK_AVAILABLE_IN_3_10
GDK_AVAILABLE_IN_3_16
GType gdk_mir_display_get_type (void);
GDK_AVAILABLE_IN_3_10
GDK_AVAILABLE_IN_3_16
MirConnection *gdk_mir_display_get_mir_connection (GdkDisplay *display);
GDK_AVAILABLE_IN_3_10
GDK_AVAILABLE_IN_3_16
GType gdk_mir_window_get_type (void);
GDK_AVAILABLE_IN_3_16
+1 -4
View File
@@ -213,7 +213,6 @@ ensure_surface_full (GdkWindow *window,
MirBufferUsage buffer_usage)
{
GdkMirWindowImpl *impl = GDK_MIR_WINDOW_IMPL (window->impl);
MirEventDelegate event_delegate = { event_cb, NULL };
GdkMirWindowReference *window_ref;
if (impl->surface || should_render_in_parent (window))
@@ -224,8 +223,6 @@ ensure_surface_full (GdkWindow *window,
*/
window_ref = _gdk_mir_event_source_get_window_reference (window);
event_delegate.context = window_ref;
impl->surface = create_mir_surface (gdk_window_get_display (window),
window->width, window->height,
buffer_usage);
@@ -240,7 +237,7 @@ ensure_surface_full (GdkWindow *window,
_gdk_mir_event_source_queue (window_ref, &resize_event);
mir_surface_set_event_handler (impl->surface, &event_delegate); // FIXME: Ignore some events until shown
mir_surface_set_event_handler (impl->surface, event_cb, window_ref); // FIXME: Ignore some events until shown
set_surface_type (impl, impl->surface_type);
set_surface_state (impl, impl->surface_state);
}
+3 -1
View File
@@ -193,11 +193,13 @@ gdk_registry_handle_global (void *data,
output =
wl_registry_bind (display_wayland->wl_registry, id, &wl_output_interface, MIN (version, 2));
_gdk_wayland_screen_add_output (display_wayland->screen, id, output, MIN (version, 2));
wl_display_roundtrip (display_wayland->wl_display);
}
else if (strcmp (interface, "wl_seat") == 0)
{
seat = wl_registry_bind (display_wayland->wl_registry, id, &wl_seat_interface, MIN (version, 4));
_gdk_wayland_device_manager_add_seat (gdk_display->device_manager, id, seat);
wl_display_roundtrip (display_wayland->wl_display);
}
else if (strcmp (interface, "wl_data_device_manager") == 0)
{
@@ -605,7 +607,7 @@ gdk_wayland_display_set_cursor_theme (GdkDisplay *display,
}
wayland_display->scaled_cursor_themes[0] = theme;
if (wayland_display->cursor_theme_name != NULL)
free (wayland_display->cursor_theme_name);
g_free (wayland_display->cursor_theme_name);
wayland_display->cursor_theme_name = g_strdup (name);
wayland_display->cursor_theme_size = size;
+19 -3
View File
@@ -1036,6 +1036,10 @@ output_handle_geometry (void *data,
{
GdkWaylandMonitor *monitor = (GdkWaylandMonitor *)data;
GDK_NOTE (MISC,
g_message ("handle geometry output %d, position %d %d, phys. size %d %d, manufacturer %s, model %s",
monitor->id, x, y, physical_width, physical_height, make, model));
monitor->geometry.x = x;
monitor->geometry.y = y;
@@ -1058,6 +1062,9 @@ output_handle_done (void *data,
{
GdkWaylandMonitor *monitor = (GdkWaylandMonitor *)data;
GDK_NOTE (MISC,
g_message ("handle done output %d", monitor->id));
g_signal_emit_by_name (monitor->screen, "monitors-changed");
update_screen_size (monitor->screen);
}
@@ -1065,12 +1072,17 @@ output_handle_done (void *data,
static void
output_handle_scale (void *data,
struct wl_output *wl_output,
int32_t factor)
int32_t scale)
{
GdkWaylandMonitor *monitor = (GdkWaylandMonitor *)data;
monitor->scale = factor;
g_signal_emit_by_name (monitor->screen, "monitors-changed");
GDK_NOTE (MISC,
g_message ("handle scale output %d, scale %d", monitor->id, scale));
monitor->scale = scale;
if (monitor->geometry.width != 0 && monitor->version < OUTPUT_VERSION_WITH_DONE)
g_signal_emit_by_name (monitor->screen, "monitors-changed");
}
static void
@@ -1083,6 +1095,10 @@ output_handle_mode (void *data,
{
GdkWaylandMonitor *monitor = (GdkWaylandMonitor *)data;
GDK_NOTE (MISC,
g_message ("handle mode output %d, size %d %d, rate %d",
monitor->id, width, height, refresh));
if ((flags & WL_OUTPUT_MODE_CURRENT) == 0)
return;
+78 -19
View File
@@ -115,6 +115,17 @@ struct _GdkWindowImplWayland
gchar *title;
struct {
gboolean was_set;
gchar *application_id;
gchar *app_menu_path;
gchar *menubar_path;
gchar *window_object_path;
gchar *application_object_path;
gchar *unique_bus_name;
} application;
GdkGeometry geometry_hints;
GdkWindowHints geometry_mask;
@@ -144,6 +155,9 @@ static void gdk_wayland_window_configure (GdkWindow *window,
int height,
int scale);
static void maybe_set_gtk_surface_dbus_properties (GdkWaylandDisplay *display_wayland,
GdkWindowImplWayland *impl);
GType _gdk_window_impl_wayland_get_type (void);
G_DEFINE_TYPE (GdkWindowImplWayland, _gdk_window_impl_wayland, GDK_TYPE_WINDOW_IMPL)
@@ -645,6 +659,13 @@ gdk_window_impl_wayland_finalize (GObject *object)
g_free (impl->title);
g_free (impl->application.application_id);
g_free (impl->application.app_menu_path);
g_free (impl->application.menubar_path);
g_free (impl->application.window_object_path);
g_free (impl->application.application_object_path);
g_free (impl->application.unique_bus_name);
g_clear_pointer (&impl->opaque_region, cairo_region_destroy);
g_clear_pointer (&impl->input_region, cairo_region_destroy);
@@ -964,6 +985,7 @@ gdk_wayland_window_create_xdg_surface (GdkWindow *window)
{
GdkWaylandDisplay *display_wayland = GDK_WAYLAND_DISPLAY (gdk_window_get_display (window));
GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
const gchar *app_id;
impl->xdg_surface = xdg_shell_get_xdg_surface (display_wayland->xdg_shell, impl->surface);
xdg_surface_add_listener (impl->xdg_surface, &xdg_surface_listener, window);
@@ -977,7 +999,15 @@ gdk_wayland_window_create_xdg_surface (GdkWindow *window)
if (window->state & GDK_WINDOW_STATE_FULLSCREEN)
xdg_surface_set_fullscreen (impl->xdg_surface, NULL);
xdg_surface_set_app_id (impl->xdg_surface, gdk_get_program_class ());
app_id = impl->application.application_id;
if (app_id == NULL)
app_id = g_get_prgname ();
if (app_id == NULL)
app_id = gdk_get_program_class ();
xdg_surface_set_app_id (impl->xdg_surface, app_id);
maybe_set_gtk_surface_dbus_properties (display_wayland, impl);
}
static void
@@ -2408,6 +2438,43 @@ gdk_wayland_window_set_use_custom_surface (GdkWindow *window)
impl->use_custom_surface = TRUE;
}
static void
maybe_set_gtk_surface_dbus_properties (GdkWaylandDisplay *display_wayland,
GdkWindowImplWayland *impl)
{
if (impl->application.was_set)
return;
if (impl->application.application_id == NULL &&
impl->application.app_menu_path == NULL &&
impl->application.menubar_path == NULL &&
impl->application.window_object_path == NULL &&
impl->application.application_object_path == NULL &&
impl->application.unique_bus_name == NULL)
return;
if (impl->gtk_surface == NULL)
{
if (impl->xdg_surface == NULL)
return;
if (display_wayland->gtk_shell == NULL)
return;
impl->gtk_surface = gtk_shell_get_gtk_surface (display_wayland->gtk_shell,
impl->surface);
}
gtk_surface_set_dbus_properties (impl->gtk_surface,
impl->application.application_id,
impl->application.app_menu_path,
impl->application.menubar_path,
impl->application.window_object_path,
impl->application.application_object_path,
impl->application.unique_bus_name);
impl->application.was_set = TRUE;
}
void
gdk_wayland_window_set_dbus_properties_libgtk_only (GdkWindow *window,
const char *application_id,
@@ -2417,29 +2484,21 @@ gdk_wayland_window_set_dbus_properties_libgtk_only (GdkWindow *window,
const char *application_object_path,
const char *unique_bus_name)
{
GdkWaylandDisplay *display = GDK_WAYLAND_DISPLAY (gdk_window_get_display (window));
GdkWaylandDisplay *display_wayland =
GDK_WAYLAND_DISPLAY (gdk_window_get_display (window));
GdkWindowImplWayland *impl;
g_return_if_fail (GDK_IS_WAYLAND_WINDOW (window));
impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
if (impl->gtk_surface == NULL)
{
if (impl->xdg_surface == NULL)
return;
impl->application.application_id = g_strdup (application_id);
impl->application.app_menu_path = g_strdup (app_menu_path);
impl->application.menubar_path = g_strdup (menubar_path);
impl->application.window_object_path = g_strdup (window_object_path);
impl->application.application_object_path =
g_strdup (application_object_path);
impl->application.unique_bus_name = g_strdup (unique_bus_name);
if (display->gtk_shell == NULL)
return;
impl->gtk_surface = gtk_shell_get_gtk_surface (display->gtk_shell, impl->surface);
}
gtk_surface_set_dbus_properties (impl->gtk_surface,
application_id,
app_menu_path,
menubar_path,
window_object_path,
application_object_path,
unique_bus_name);
maybe_set_gtk_surface_dbus_properties (display_wayland, impl);
}
+9 -1
View File
@@ -1837,6 +1837,7 @@ gdk_event_translate (MSG *msg,
RECT rect, *drag, orig_drag;
POINT point;
MINMAXINFO *mmi;
LONG style;
HWND hwnd;
HCURSOR hcursor;
BYTE key_state[256];
@@ -3044,6 +3045,8 @@ gdk_event_translate (MSG *msg,
mmi->ptMaxPosition.x, mmi->ptMaxPosition.y,
mmi->ptMaxSize.x, mmi->ptMaxSize.y));
style = GetWindowLong (GDK_WINDOW_HWND (window), GWL_STYLE);
if (impl->hint_flags & GDK_HINT_MIN_SIZE)
{
rect.left = rect.top = 0;
@@ -3072,7 +3075,10 @@ gdk_event_translate (MSG *msg,
mmi->ptMaxTrackSize.x = maxw > 0 && maxw < G_MAXSHORT ? maxw : G_MAXSHORT;
mmi->ptMaxTrackSize.y = maxh > 0 && maxh < G_MAXSHORT ? maxh : G_MAXSHORT;
}
else
/* Assume that these styles are incompatible with CSD,
* so there's no reason for us to override the defaults.
*/
else if ((style & (WS_BORDER | WS_THICKFRAME)) == 0)
{
HMONITOR winmon;
MONITORINFO moninfo;
@@ -3085,6 +3091,8 @@ gdk_event_translate (MSG *msg,
{
mmi->ptMaxTrackSize.x = moninfo.rcWork.right - moninfo.rcWork.left;
mmi->ptMaxTrackSize.y = moninfo.rcWork.bottom - moninfo.rcWork.top;
mmi->ptMaxPosition.x = moninfo.rcWork.left;
mmi->ptMaxPosition.y = moninfo.rcWork.top;
}
else
{
+28 -10
View File
@@ -309,9 +309,9 @@ glx_pixmap_get (cairo_surface_t *surface, guint texture_target)
{
Display *display = cairo_xlib_surface_get_display (surface);
Screen *screen = cairo_xlib_surface_get_screen (surface);
Visual *visual = cairo_xlib_surface_get_visual (surface);;
Visual *visual = cairo_xlib_surface_get_visual (surface);
GdkGLXPixmap *glx_pixmap;
GLXFBConfig *fbconfigs;
GLXFBConfig *fbconfigs, config;
int nfbconfigs;
XVisualInfo *visinfo;
VisualID visualid;
@@ -393,6 +393,7 @@ glx_pixmap_get (cairo_surface_t *surface, guint texture_target)
if (value == TRUE)
y_inverted = TRUE;
config = fbconfigs[i];
break;
}
@@ -407,7 +408,7 @@ glx_pixmap_get (cairo_surface_t *surface, guint texture_target)
glx_pixmap = g_slice_new0 (GdkGLXPixmap);
glx_pixmap->y_inverted = y_inverted;
glx_pixmap->display = display;
glx_pixmap->drawable = glXCreatePixmap (display, fbconfigs[i],
glx_pixmap->drawable = glXCreatePixmap (display, config,
cairo_xlib_surface_get_drawable (surface),
pixmap_attributes);
@@ -432,6 +433,11 @@ gdk_x11_gl_context_texture_from_surface (GdkGLContext *paint_context,
double sx, sy;
float uscale, vscale;
GdkTexturedQuad *quads;
GdkX11Display *display_x11;
display_x11 = GDK_X11_DISPLAY (gdk_gl_context_get_display (paint_context));
if (!display_x11->has_glx_texture_from_pixmap)
return FALSE;
if (cairo_surface_get_type (surface) != CAIRO_SURFACE_TYPE_XLIB)
return FALSE;
@@ -461,7 +467,6 @@ gdk_x11_gl_context_texture_from_surface (GdkGLContext *paint_context,
glGenTextures (1, &texture_id);
glBindTexture (target, texture_id);
glEnable (target);
glTexParameteri (target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri (target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
@@ -526,7 +531,6 @@ gdk_x11_gl_context_texture_from_surface (GdkGLContext *paint_context,
glXReleaseTexImageEXT (glx_pixmap->display, glx_pixmap->drawable,
GLX_FRONT_LEFT_EXT);
glDisable (target);
glDeleteTextures (1, &texture_id);
glx_pixmap_destroy(glx_pixmap);
@@ -558,17 +562,25 @@ create_gl3_context (GdkDisplay *display,
GLX_CONTEXT_FLAGS_ARB, flags,
None,
};
GLXContext res;
GdkX11GLContext *share_x11 = NULL;
if (share != NULL)
share_x11 = GDK_X11_GL_CONTEXT (share);
return glXCreateContextAttribsARB (gdk_x11_display_get_xdisplay (display),
config,
share_x11 != NULL ? share_x11->glx_context : NULL,
True,
attrib_list);
gdk_x11_display_error_trap_push (display);
res = glXCreateContextAttribsARB (gdk_x11_display_get_xdisplay (display),
config,
share_x11 != NULL ? share_x11->glx_context : NULL,
True,
attrib_list);
if (gdk_x11_display_error_trap_pop (display))
return NULL;
return res;
}
static gboolean
@@ -1206,6 +1218,12 @@ gdk_x11_display_make_gl_context_current (GdkDisplay *display,
}
context_x11 = GDK_X11_GL_CONTEXT (context);
if (context_x11->glx_context == NULL)
{
g_critical ("No GLX context associated to the GdkGLContext; you must "
"call gdk_gl_context_realize() first.");
return FALSE;
}
GDK_NOTE (OPENGL,
g_print ("Making GLX context current to drawable %lu\n",
+1 -1
View File
@@ -138,7 +138,7 @@ gtk_boolean_cell_accessible_update_cache (GtkCellAccessible *cell)
{
boolean_cell->priv->cell_sensitive = !boolean_cell->priv->cell_sensitive;
atk_object_notify_state_change (ATK_OBJECT (cell), ATK_STATE_CHECKED, sensitive);
atk_object_notify_state_change (ATK_OBJECT (cell), ATK_STATE_SENSITIVE, sensitive);
}
}
+18 -34
View File
@@ -136,8 +136,7 @@ gtk_text_cell_accessible_update_cache (GtkCellAccessible *cell)
{
GtkTextCellAccessible *text_cell = GTK_TEXT_CELL_ACCESSIBLE (cell);
AtkObject *obj = ATK_OBJECT (cell);
gboolean rv = FALSE;
gint temp_length;
gint text_length;
gchar *text;
GtkCellRenderer *renderer;
@@ -149,48 +148,33 @@ gtk_text_cell_accessible_update_cache (GtkCellAccessible *cell)
g_object_get (renderer, "text", &text, NULL);
g_object_unref (renderer);
if (text_cell->priv->cell_text)
{
if (text == NULL || g_strcmp0 (text_cell->priv->cell_text, text) != 0)
{
g_free (text_cell->priv->cell_text);
temp_length = text_cell->priv->cell_length;
text_cell->priv->cell_text = NULL;
text_cell->priv->cell_length = 0;
g_signal_emit_by_name (cell, "text-changed::delete", 0, temp_length);
if (obj->name == NULL)
g_object_notify (G_OBJECT (obj), "accessible-name");
if (text)
rv = TRUE;
}
}
else
rv = TRUE;
if (text == NULL)
text = g_strdup ("");
text_length = g_utf8_strlen (text, -1);
if (rv)
if (g_strcmp0 (text_cell->priv->cell_text, text) != 0)
{
if (text == NULL)
if (text_cell->priv->cell_length)
{
text_cell->priv->cell_text = g_strdup ("");
text_cell->priv->cell_length = 0;
g_signal_emit_by_name (cell, "text-changed::delete",
0, text_cell->priv->cell_length);
}
else
g_free (text_cell->priv->cell_text);
text_cell->priv->cell_text = g_strdup (text);
text_cell->priv->cell_length = text_length;
if (text_length)
{
text_cell->priv->cell_text = g_strdup (text);
text_cell->priv->cell_length = g_utf8_strlen (text, -1);
g_signal_emit_by_name (cell, "text-changed::insert",
0, text_cell->priv->cell_length);
}
}
g_free (text);
if (rv)
{
g_signal_emit_by_name (cell, "text-changed::insert",
0, text_cell->priv->cell_length);
if (obj->name == NULL)
g_object_notify (G_OBJECT (obj), "accessible-name");
}
g_free (text);
}
static void
+8
View File
@@ -509,6 +509,11 @@ gtk_text_view_accessible_get_character_extents (AtkText *text,
GdkWindow *window;
gint x_widget, y_widget, x_window, y_window;
*x = 0;
*y = 0;
*width = 0;
*height = 0;
widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text));
if (widget == NULL)
return;
@@ -519,6 +524,9 @@ gtk_text_view_accessible_get_character_extents (AtkText *text,
gtk_text_view_get_iter_location (view, &iter, &rectangle);
window = gtk_text_view_get_window (view, GTK_TEXT_WINDOW_WIDGET);
if (window == NULL)
return;
gdk_window_get_origin (window, &x_widget, &y_widget);
*height = rectangle.height;
+2 -2
View File
@@ -1111,7 +1111,7 @@ gtk_font_selection_size_activate (GtkWidget *w,
const gchar *text;
text = gtk_entry_get_text (GTK_ENTRY (priv->size_entry));
new_size = MAX (0.1, atof (text) * PANGO_SCALE + 0.5);
new_size = (int) MAX (0.1, atof (text) * PANGO_SCALE + 0.5);
if (priv->size != new_size)
gtk_font_selection_set_size (fontsel, new_size);
@@ -1130,7 +1130,7 @@ gtk_font_selection_size_focus_out (GtkWidget *w,
const gchar *text;
text = gtk_entry_get_text (GTK_ENTRY (priv->size_entry));
new_size = MAX (0.1, atof (text) * PANGO_SCALE + 0.5);
new_size = (int) MAX (0.1, atof (text) * PANGO_SCALE + 0.5);
gtk_font_selection_set_size (fontsel, new_size);
+2 -2
View File
@@ -77,7 +77,7 @@ struct _GtkHandleBoxPrivate
{
/* Properties */
GtkPositionType handle_position;
GtkPositionType snap_edge;
gint snap_edge;
GtkShadowType shadow_type;
gboolean child_detached;
/* Properties */
@@ -1051,7 +1051,7 @@ gtk_handle_box_get_snap_edge (GtkHandleBox *handle_box)
{
g_return_val_if_fail (GTK_IS_HANDLE_BOX (handle_box), (GtkPositionType)-1);
return handle_box->priv->snap_edge;
return (GtkPositionType)handle_box->priv->snap_edge;
}
/**
+3 -3
View File
@@ -2945,17 +2945,17 @@ gtk_icon_factory_buildable_custom_tag_end (GtkBuildable *buildable,
}
if (source_data->icon_name)
gtk_icon_source_set_icon_name (icon_source, source_data->icon_name);
if (source_data->size != -1)
if ((gint)source_data->size != -1)
{
gtk_icon_source_set_size (icon_source, source_data->size);
gtk_icon_source_set_size_wildcarded (icon_source, FALSE);
}
if (source_data->direction != -1)
if ((gint)source_data->direction != -1)
{
gtk_icon_source_set_direction (icon_source, source_data->direction);
gtk_icon_source_set_direction_wildcarded (icon_source, FALSE);
}
if (source_data->state != -1)
if ((gint)source_data->state != -1)
{
gtk_icon_source_set_state (icon_source, source_data->state);
gtk_icon_source_set_state_wildcarded (icon_source, FALSE);
+1 -1
View File
@@ -95,7 +95,7 @@ real_add (const GtkStockItem *items,
gpointer old_key, old_value;
const GtkStockItem *item = &items[i];
if (replace_primary && item->modifier == PRIMARY_MODIFIER)
if (replace_primary && (guint)item->modifier == PRIMARY_MODIFIER)
{
item = gtk_stock_item_copy (item);
((GtkStockItem *)item)->modifier = (NON_STATIC_MASK |
+8 -3
View File
@@ -35,9 +35,11 @@ typedef struct
G_DEFINE_TYPE (GtkApplicationImplWayland, gtk_application_impl_wayland, GTK_TYPE_APPLICATION_IMPL_DBUS)
static void
gtk_application_impl_wayland_handle_window_map (GtkApplicationImpl *impl,
GtkWindow *window)
gtk_application_impl_wayland_handle_window_realize (GtkApplicationImpl *impl,
GtkWindow *window)
{
GtkApplicationImplClass *impl_class =
GTK_APPLICATION_IMPL_CLASS (gtk_application_impl_wayland_parent_class);
GtkApplicationImplDBus *dbus = (GtkApplicationImplDBus *) impl;
GdkWindow *gdk_window;
gchar *window_path;
@@ -54,6 +56,8 @@ gtk_application_impl_wayland_handle_window_map (GtkApplicationImpl *impl,
window_path, dbus->object_path, dbus->unique_name);
g_free (window_path);
impl_class->handle_window_realize (impl, window);
}
static void
@@ -66,5 +70,6 @@ gtk_application_impl_wayland_class_init (GtkApplicationImplWaylandClass *class)
{
GtkApplicationImplClass *impl_class = GTK_APPLICATION_IMPL_CLASS (class);
impl_class->handle_window_map = gtk_application_impl_wayland_handle_window_map;
impl_class->handle_window_realize =
gtk_application_impl_wayland_handle_window_realize;
}
+3 -1
View File
@@ -506,7 +506,9 @@ gtk_application_focus_in_event_cb (GtkWindow *window,
priv->windows = g_list_concat (link, priv->windows);
}
gtk_application_impl_active_window_changed (application->priv->impl, window);
if (application->priv->impl)
gtk_application_impl_active_window_changed (application->priv->impl, window);
g_object_notify (G_OBJECT (application), "active-window");
return FALSE;
+1 -1
View File
@@ -1132,7 +1132,7 @@ gtk_button_box_size_allocate (GtkWidget *widget,
/**
* gtk_button_box_new:
* @orientation: the box' orientation.
* @orientation: the box's orientation.
*
* Creates a new #GtkButtonBox.
*
+84 -43
View File
@@ -25,6 +25,32 @@
#include <math.h>
#include <string.h>
/*
* Gets the size for a single box blur.
*
* Much of this, the 3 * sqrt(2 * pi) / 4, is the known value for
* approximating a Gaussian using box blurs. This yields quite a good
* approximation for a Gaussian. For more details, see:
* http://www.w3.org/TR/SVG11/filters.html#feGaussianBlurElement
* https://bugzilla.mozilla.org/show_bug.cgi?id=590039#c19
*/
#define GAUSSIAN_SCALE_FACTOR ((3.0 * sqrt(2 * G_PI) / 4))
#define get_box_filter_size(radius) ((int)(GAUSSIAN_SCALE_FACTOR * (radius)))
/* Sadly, clang is picky about get_box_filter_size(2) not being a
* constant expression, thus we have to use precomputed values.
*/
#define BOX_FILTER_SIZE_2 3
#define BOX_FILTER_SIZE_3 5
#define BOX_FILTER_SIZE_4 7
#define BOX_FILTER_SIZE_5 9
#define BOX_FILTER_SIZE_6 11
#define BOX_FILTER_SIZE_7 13
#define BOX_FILTER_SIZE_8 15
#define BOX_FILTER_SIZE_9 16
#define BOX_FILTER_SIZE_10 18
/* This applies a single box blur pass to a horizontal range of pixels;
* since the box blur has the same weight for all pixels, we can
* implement an efficient sliding window algorithm where we add
@@ -60,18 +86,37 @@ blur_xspan (guchar *row,
* only divide down after all three passes. (SSE parallel implementation
* of the divide step is possible.)
*/
for (i = -d + offset; i < row_width + offset; i++)
#define BLUR_ROW_KERNEL(D) \
for (i = -(D) + offset; i < row_width + offset; i++) \
{ \
if (i >= 0 && i < row_width) \
sum += row[i]; \
\
if (i >= offset) \
{ \
if (i >= (D)) \
sum -= row[i - (D)]; \
\
tmp_buffer[i - offset] = (sum + (D) / 2) / (D); \
} \
} \
break;
/* We unroll the values for d for radius 2-10 to avoid a generic
* divide operation (not radius 1, because its a no-op) */
switch (d)
{
if (i >= 0 && i < row_width)
sum += row[i];
if (i >= offset)
{
if (i >= d)
sum -= row[i - d];
tmp_buffer[i - offset] = (sum + d / 2) / d;
}
case BOX_FILTER_SIZE_2: BLUR_ROW_KERNEL (BOX_FILTER_SIZE_2);
case BOX_FILTER_SIZE_3: BLUR_ROW_KERNEL (BOX_FILTER_SIZE_3);
case BOX_FILTER_SIZE_4: BLUR_ROW_KERNEL (BOX_FILTER_SIZE_4);
case BOX_FILTER_SIZE_5: BLUR_ROW_KERNEL (BOX_FILTER_SIZE_5);
case BOX_FILTER_SIZE_6: BLUR_ROW_KERNEL (BOX_FILTER_SIZE_6);
case BOX_FILTER_SIZE_7: BLUR_ROW_KERNEL (BOX_FILTER_SIZE_7);
case BOX_FILTER_SIZE_8: BLUR_ROW_KERNEL (BOX_FILTER_SIZE_8);
case BOX_FILTER_SIZE_9: BLUR_ROW_KERNEL (BOX_FILTER_SIZE_9);
case BOX_FILTER_SIZE_10: BLUR_ROW_KERNEL (BOX_FILTER_SIZE_10);
default: BLUR_ROW_KERNEL (d);
}
memcpy (row, tmp_buffer, row_width);
@@ -140,45 +185,35 @@ flip_buffer (guchar *dst_buffer,
#undef BLOCK_SIZE
}
/*
* Gets the size for a single box blur.
*
* Much of this, the 3 * sqrt(2 * pi) / 4, is the known value for
* approximating a Gaussian using box blurs. This yields quite a good
* approximation for a Gaussian. For more details, see:
* http://www.w3.org/TR/SVG11/filters.html#feGaussianBlurElement
* https://bugzilla.mozilla.org/show_bug.cgi?id=590039#c19
*/
#define GAUSSIAN_SCALE_FACTOR ((3.0 * sqrt(2 * G_PI) / 4))
static int
get_box_filter_size (double radius)
{
return GAUSSIAN_SCALE_FACTOR * radius;
}
static void
_boxblur (guchar *buffer,
int width,
int height,
int radius)
_boxblur (guchar *buffer,
int width,
int height,
int radius,
GtkBlurFlags flags)
{
guchar *flipped_buffer;
int d = get_box_filter_size (radius);
flipped_buffer = g_malloc (width * height);
/* Step 1: swap rows and columns */
flip_buffer (flipped_buffer, buffer, width, height);
if (flags & GTK_BLUR_Y)
{
/* Step 1: swap rows and columns */
flip_buffer (flipped_buffer, buffer, width, height);
/* Step 2: blur rows (really columns) */
blur_rows (flipped_buffer, buffer, height, width, d);
/* Step 2: blur rows (really columns) */
blur_rows (flipped_buffer, buffer, height, width, d);
/* Step 3: swap rows and columns */
flip_buffer (buffer, flipped_buffer, height, width);
/* Step 3: swap rows and columns */
flip_buffer (buffer, flipped_buffer, height, width);
}
/* Step 4: blur rows */
blur_rows (buffer, flipped_buffer, width, height, d);
if (flags & GTK_BLUR_X)
{
/* Step 4: blur rows */
blur_rows (buffer, flipped_buffer, width, height, d);
}
g_free (flipped_buffer);
}
@@ -192,7 +227,8 @@ _boxblur (guchar *buffer,
*/
void
_gtk_cairo_blur_surface (cairo_surface_t* surface,
double radius_d)
double radius_d,
GtkBlurFlags flags)
{
int radius = radius_d;
@@ -200,7 +236,12 @@ _gtk_cairo_blur_surface (cairo_surface_t* surface,
g_return_if_fail (cairo_surface_get_type (surface) == CAIRO_SURFACE_TYPE_IMAGE);
g_return_if_fail (cairo_image_surface_get_format (surface) == CAIRO_FORMAT_A8);
if (radius == 0)
/* The code doesn't actually do any blurring for radius 1, as it
* ends up with box filter size 1 */
if (radius <= 1)
return;
if ((flags & (GTK_BLUR_X|GTK_BLUR_Y)) == 0)
return;
/* Before we mess with the surface, execute any pending drawing. */
@@ -209,7 +250,7 @@ _gtk_cairo_blur_surface (cairo_surface_t* surface,
_boxblur (cairo_image_surface_get_data (surface),
cairo_image_surface_get_stride (surface),
cairo_image_surface_get_height (surface),
radius);
radius, flags);
/* Inform cairo we altered the surface contents. */
cairo_surface_mark_dirty (surface);
+9 -1
View File
@@ -29,8 +29,16 @@
G_BEGIN_DECLS
typedef enum {
GTK_BLUR_NONE = 0,
GTK_BLUR_X = 1<<0,
GTK_BLUR_Y = 1<<1,
GTK_BLUR_REPEAT = 1<<2
} GtkBlurFlags;
void _gtk_cairo_blur_surface (cairo_surface_t *surface,
double radius);
double radius,
GtkBlurFlags flags);;
int _gtk_cairo_blur_compute_pixels (double radius);
G_END_DECLS
+1 -1
View File
@@ -333,7 +333,7 @@ static GtkCssValue font_variant_values[] = {
GtkCssValue *
_gtk_css_font_variant_value_new (PangoVariant font_variant)
{
g_return_val_if_fail (font_variant < G_N_ELEMENTS (font_variant_values), NULL);
g_return_val_if_fail ((gint)font_variant < G_N_ELEMENTS (font_variant_values), NULL);
return _gtk_css_value_ref (&font_variant_values[font_variant]);
}
+61 -20
View File
@@ -297,7 +297,10 @@ static gboolean
needs_blur (const GtkCssValue *shadow)
{
double radius = _gtk_css_number_value_get (shadow->radius, 0);
if (radius == 0.0)
/* The code doesn't actually do any blurring for radius 1, as it
* ends up with box filter size 1 */
if (radius <= 1.0)
return FALSE;
return TRUE;
@@ -307,12 +310,15 @@ static const cairo_user_data_key_t original_cr_key;
static cairo_t *
gtk_css_shadow_value_start_drawing (const GtkCssValue *shadow,
cairo_t *cr)
cairo_t *cr,
GtkBlurFlags blur_flags)
{
cairo_rectangle_int_t clip_rect;
cairo_surface_t *surface;
cairo_t *blur_cr;
gdouble radius, clip_radius;
gboolean blur_x = (blur_flags & GTK_BLUR_X) != 0;
gboolean blur_y = (blur_flags & GTK_BLUR_Y) != 0;
if (!needs_blur (shadow))
return cr;
@@ -322,12 +328,22 @@ gtk_css_shadow_value_start_drawing (const GtkCssValue *shadow,
radius = _gtk_css_number_value_get (shadow->radius, 0);
clip_radius = _gtk_cairo_blur_compute_pixels (radius);
if (blur_flags & GTK_BLUR_REPEAT)
{
if (!blur_x)
clip_rect.width = 1;
if (!blur_y)
clip_rect.height = 1;
}
/* Create a larger surface to center the blur. */
surface = cairo_surface_create_similar_image (cairo_get_target (cr),
CAIRO_FORMAT_A8,
clip_rect.width + 2 * clip_radius,
clip_rect.height + 2 * clip_radius);
cairo_surface_set_device_offset (surface, clip_radius - clip_rect.x, clip_radius - clip_rect.y);
clip_rect.width + (blur_x ? 2 * clip_radius : 0),
clip_rect.height + (blur_y ? 2 * clip_radius : 0));
cairo_surface_set_device_offset (surface,
(blur_x ? clip_radius : 0) - clip_rect.x,
(blur_y ? clip_radius : 0) - clip_rect.y);
blur_cr = cairo_create (surface);
cairo_set_user_data (blur_cr, &original_cr_key, cairo_reference (cr), (cairo_destroy_func_t) cairo_destroy);
@@ -342,9 +358,24 @@ gtk_css_shadow_value_start_drawing (const GtkCssValue *shadow,
return blur_cr;
}
void
mask_surface_repeat (cairo_t *cr,
cairo_surface_t *surface)
{
cairo_pattern_t *pattern;
pattern = cairo_pattern_create_for_surface (surface);
cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT);
cairo_mask (cr, pattern);
cairo_pattern_destroy (pattern);
}
static cairo_t *
gtk_css_shadow_value_finish_drawing (const GtkCssValue *shadow,
cairo_t *cr)
cairo_t *cr,
GtkBlurFlags blur_flags)
{
gdouble radius;
cairo_t *original_cr;
@@ -358,12 +389,16 @@ gtk_css_shadow_value_finish_drawing (const GtkCssValue *shadow,
/* Blur the surface. */
surface = cairo_get_target (cr);
radius = _gtk_css_number_value_get (shadow->radius, 0);
_gtk_cairo_blur_surface (surface, radius);
_gtk_cairo_blur_surface (surface, radius, blur_flags);
gdk_cairo_set_source_rgba (original_cr, _gtk_css_rgba_value_get_rgba (shadow->color));
cairo_mask_surface (original_cr, surface, 0, 0);
if (blur_flags & GTK_BLUR_REPEAT)
mask_surface_repeat (original_cr, surface);
else
cairo_mask_surface (original_cr, surface, 0, 0);
cairo_destroy (cr);
cairo_surface_destroy (surface);
return original_cr;
@@ -425,7 +460,7 @@ make_blurred_pango_surface (cairo_t *existing_cr,
cr = cairo_create (surface);
cairo_move_to (cr, 0, 0);
_gtk_pango_fill_layout (cr, layout);
_gtk_cairo_blur_surface (surface, radius * x_scale);
_gtk_cairo_blur_surface (surface, radius * x_scale, GTK_BLUR_X | GTK_BLUR_Y);
cairo_destroy (cr);
@@ -512,14 +547,14 @@ _gtk_css_shadow_value_paint_icon (const GtkCssValue *shadow,
pattern = cairo_pattern_reference (cairo_get_source (cr));
gdk_cairo_set_source_rgba (cr, _gtk_css_rgba_value_get_rgba (shadow->color));
cr = gtk_css_shadow_value_start_drawing (shadow, cr);
cr = gtk_css_shadow_value_start_drawing (shadow, cr, GTK_BLUR_X | GTK_BLUR_Y);
cairo_translate (cr,
_gtk_css_number_value_get (shadow->hoffset, 0),
_gtk_css_number_value_get (shadow->voffset, 0));
cairo_mask (cr, pattern);
cr = gtk_css_shadow_value_finish_drawing (shadow, cr);
cr = gtk_css_shadow_value_finish_drawing (shadow, cr, GTK_BLUR_X | GTK_BLUR_Y);
cairo_restore (cr);
cairo_pattern_destroy (pattern);
@@ -567,16 +602,18 @@ draw_shadow (const GtkCssValue *shadow,
cairo_t *cr,
GtkRoundedBox *box,
GtkRoundedBox *clip_box,
gboolean blur)
GtkBlurFlags blur_flags)
{
cairo_t *shadow_cr;
gboolean do_blur;
if (has_empty_clip (cr))
return;
gdk_cairo_set_source_rgba (cr, _gtk_css_rgba_value_get_rgba (shadow->color));
if (blur)
shadow_cr = gtk_css_shadow_value_start_drawing (shadow, cr);
do_blur = (blur_flags & (GTK_BLUR_X | GTK_BLUR_Y)) != 0;
if (do_blur)
shadow_cr = gtk_css_shadow_value_start_drawing (shadow, cr, blur_flags);
else
shadow_cr = cr;
@@ -587,8 +624,8 @@ draw_shadow (const GtkCssValue *shadow,
cairo_fill (shadow_cr);
if (blur)
gtk_css_shadow_value_finish_drawing (shadow, shadow_cr);
if (do_blur)
gtk_css_shadow_value_finish_drawing (shadow, shadow_cr, blur_flags);
}
void
@@ -644,7 +681,7 @@ _gtk_css_shadow_value_paint_box (const GtkCssValue *shadow,
_gtk_rounded_box_shrink (&clip_box, -clip_radius, -clip_radius, -clip_radius, -clip_radius);
if (!needs_blur (shadow))
draw_shadow (shadow, cr, &box, &clip_box, FALSE);
draw_shadow (shadow, cr, &box, &clip_box, GTK_BLUR_NONE);
else
{
int i, x1, x2, y1, y2;
@@ -714,7 +751,7 @@ _gtk_css_shadow_value_paint_box (const GtkCssValue *shadow,
/* Also clip with remaining to ensure we never draw any area twice */
gdk_cairo_region (cr, remaining);
cairo_clip (cr);
draw_shadow (shadow, cr, &box, &clip_box, TRUE);
draw_shadow (shadow, cr, &box, &clip_box, GTK_BLUR_X | GTK_BLUR_Y);
cairo_restore (cr);
/* We drew the region, remove it from remaining */
@@ -728,8 +765,11 @@ _gtk_css_shadow_value_paint_box (const GtkCssValue *shadow,
/* Then the sides */
for (i = 0; i < 4; i++)
{
GtkBlurFlags blur_flags = GTK_BLUR_REPEAT;
if (i == GTK_CSS_TOP || i == GTK_CSS_BOTTOM)
{
blur_flags |= GTK_BLUR_Y;
x1 = floor (box.box.x - clip_radius);
x2 = ceil (box.box.x + box.box.width + clip_radius);
}
@@ -746,6 +786,7 @@ _gtk_css_shadow_value_paint_box (const GtkCssValue *shadow,
if (i == GTK_CSS_LEFT || i == GTK_CSS_RIGHT)
{
blur_flags |= GTK_BLUR_X;
y1 = floor (box.box.y - clip_radius);
y2 = ceil (box.box.y + box.box.height + clip_radius);
}
@@ -766,7 +807,7 @@ _gtk_css_shadow_value_paint_box (const GtkCssValue *shadow,
/* Also clip with remaining to ensure we never draw any area twice */
gdk_cairo_region (cr, remaining);
cairo_clip (cr);
draw_shadow (shadow, cr, &box, &clip_box, TRUE);
draw_shadow (shadow, cr, &box, &clip_box, blur_flags);
cairo_restore (cr);
/* We drew the region, remove it from remaining */
@@ -782,7 +823,7 @@ _gtk_css_shadow_value_paint_box (const GtkCssValue *shadow,
cairo_save (cr);
gdk_cairo_region (cr, remaining);
cairo_clip (cr);
draw_shadow (shadow, cr, &box, &clip_box, FALSE);
draw_shadow (shadow, cr, &box, &clip_box, GTK_BLUR_NONE);
cairo_restore (cr);
cairo_region_destroy (remaining);
+3
View File
@@ -54,6 +54,9 @@ gtk_css_widget_node_style_changed (GtkCssNode *cssnode,
node = GTK_CSS_WIDGET_NODE (cssnode);
if (node->widget)
gtk_widget_clear_path (node->widget);
GTK_CSS_NODE_CLASS (gtk_css_widget_node_parent_class)->style_changed (cssnode, old_style, new_style);
diff = gtk_css_style_get_difference (new_style, old_style);
+32 -11
View File
@@ -228,6 +228,8 @@ static gboolean gtk_drag_dest_drop (GtkWidget *widget,
gint x,
gint y,
guint time);
static void gtk_drag_dest_set_widget (GtkDragDestInfo *info,
GtkWidget *widget);
static GtkDragDestInfo * gtk_drag_get_dest_info (GdkDragContext *context,
gboolean create);
@@ -1638,7 +1640,7 @@ _gtk_drag_dest_handle_event (GtkWidget *toplevel,
if (info->widget)
{
gtk_drag_dest_leave (info->widget, context, event->dnd.time);
info->widget = NULL;
gtk_drag_dest_set_widget (info, NULL);
}
break;
@@ -1658,7 +1660,7 @@ _gtk_drag_dest_handle_event (GtkWidget *toplevel,
if (info->widget)
{
gtk_drag_dest_leave (info->widget, context, event->dnd.time);
info->widget = NULL;
gtk_drag_dest_set_widget (info, NULL);
}
}
@@ -1690,7 +1692,7 @@ _gtk_drag_dest_handle_event (GtkWidget *toplevel,
if (info->widget && !found)
{
gtk_drag_dest_leave (info->widget, context, event->dnd.time);
info->widget = NULL;
gtk_drag_dest_set_widget (info, NULL);
}
/* Send a reply.
@@ -1918,15 +1920,12 @@ gtk_drag_find_widget (GtkWidget *widget,
found = callback (widget, context, x, y, time);
/* If so, send a "drag-leave" to the last widget */
if (found)
if (found && info->widget != widget)
{
if (info->widget && info->widget != widget)
{
gtk_drag_dest_leave (info->widget, context, time);
}
if (info->widget)
gtk_drag_dest_leave (info->widget, context, time);
info->widget = widget;
g_object_add_weak_pointer (G_OBJECT (widget), (gpointer *) &info->widget);
gtk_drag_dest_set_widget (info, widget);
}
}
@@ -2008,9 +2007,26 @@ gtk_drag_proxy_begin (GtkWidget *widget,
dest_info->proxy_source = source_info;
}
static void
gtk_drag_dest_set_widget (GtkDragDestInfo *info,
GtkWidget *widget)
{
if (info->widget)
g_object_remove_weak_pointer (G_OBJECT (info->widget), (gpointer *) &info->widget);
info->widget = widget;
if (info->widget)
g_object_add_weak_pointer (G_OBJECT (info->widget), (gpointer *) &info->widget);
}
static void
gtk_drag_dest_info_destroy (gpointer data)
{
GtkDragDestInfo *info = (GtkDragDestInfo *)data;
gtk_drag_dest_set_widget (info, NULL);
g_slice_free (GtkDragDestInfo, data);
}
@@ -2515,7 +2531,11 @@ gtk_drag_begin_internal (GtkWidget *widget,
* not have set one.
*/
if (!info->icon_window && !info->icon_helper)
info->icon_helper = gtk_drag_source_site_get_icon_helper (site);
{
info->icon_helper = gtk_drag_source_site_get_icon_helper (site);
set_icon_helper (info->context, info->icon_helper,
0, 0, TRUE);
}
/* We need to composite the icon into the cursor, if we are
* not using an icon window.
@@ -3982,6 +4002,7 @@ gtk_drag_remove_icon (GtkDragSourceInfo *info)
if (info->icon_window)
{
gtk_widget_hide (info->icon_window);
gtk_widget_set_opacity (info->icon_window, 1.0);
if (info->destroy_icon)
gtk_widget_destroy (info->icon_window);
-2
View File
@@ -3195,7 +3195,6 @@ realize_icon_info (GtkWidget *widget,
GDK_BUTTON_RELEASE_MASK |
GDK_BUTTON1_MOTION_MASK |
GDK_BUTTON3_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK |
GDK_POINTER_MOTION_MASK |
GDK_ENTER_NOTIFY_MASK |
GDK_LEAVE_NOTIFY_MASK);
@@ -3314,7 +3313,6 @@ gtk_entry_realize (GtkWidget *widget)
GDK_BUTTON_RELEASE_MASK |
GDK_BUTTON1_MOTION_MASK |
GDK_BUTTON3_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK |
GDK_POINTER_MOTION_MASK |
GDK_ENTER_NOTIFY_MASK |
GDK_LEAVE_NOTIFY_MASK);
+4 -4
View File
@@ -2509,10 +2509,10 @@ gtk_entry_completion_changed (GtkWidget *widget,
/* (re)install completion timeout */
if (completion->priv->completion_timeout)
{
g_source_remove (completion->priv->completion_timeout);
completion->priv->completion_timeout = 0;
}
{
g_source_remove (completion->priv->completion_timeout);
completion->priv->completion_timeout = 0;
}
if (!gtk_entry_get_text (entry))
return;
+4 -3
View File
@@ -1033,11 +1033,12 @@ gtk_file_chooser_button_destroy (GtkWidget *widget)
priv->dialog = NULL;
}
if (priv->model && gtk_tree_model_get_iter_first (priv->model, &iter)) do
if (priv->model && gtk_tree_model_get_iter_first (priv->model, &iter))
{
model_free_row_data (button, &iter);
do
model_free_row_data (button, &iter);
while (gtk_tree_model_iter_next (priv->model, &iter));
}
while (gtk_tree_model_iter_next (priv->model, &iter));
if (priv->dnd_select_folder_cancellable)
{
+2 -1
View File
@@ -267,7 +267,8 @@ set_complete_on_load (GtkFileChooserEntry *chooser_entry,
gboolean complete_on_load)
{
/* a completion was triggered, but we couldn't do it.
* So no text was inserted when pressing tab, so we beep */
* So no text was inserted when pressing tab, so we beep
*/
if (chooser_entry->complete_on_load && !complete_on_load)
gtk_widget_error_bell (GTK_WIDGET (chooser_entry));
+138 -94
View File
@@ -229,6 +229,10 @@ struct _GtkFileChooserWidgetPrivate {
GtkWidget *browse_path_bar_hbox;
GtkSizeGroup *browse_path_bar_size_group;
GtkWidget *browse_path_bar;
GtkWidget *new_folder_name_entry;
GtkWidget *new_folder_create_button;
GtkWidget *new_folder_error_label;
GtkWidget *new_folder_popover;
GtkFileSystemModel *browse_files_model;
char *browse_files_last_selected_name;
@@ -301,9 +305,6 @@ struct _GtkFileChooserWidgetPrivate {
guint location_changed_id;
GSource *edited_idle;
char *edited_new_text;
gulong settings_signal_id;
int icon_size;
@@ -655,8 +656,6 @@ gtk_file_chooser_widget_finalize (GObject *object)
g_free (priv->preview_display_name);
g_free (priv->edited_new_text);
impl->priv = NULL;
G_OBJECT_CLASS (gtk_file_chooser_widget_parent_class)->finalize (object);
@@ -937,113 +936,158 @@ new_folder_button_clicked (GtkButton *button,
gtk_tree_path_free (path);
}
static GSource *
add_idle_while_impl_is_alive (GtkFileChooserWidget *impl, GCallback callback)
{
GSource *source;
source = g_idle_source_new ();
g_source_set_closure (source,
g_cclosure_new_object (callback, G_OBJECT (impl)));
g_source_attach (source, NULL);
return source;
}
/* Idle handler for creating a new folder after editing its name cell, or for
* canceling the editing.
*/
static gboolean
edited_idle_cb (GtkFileChooserWidget *impl)
static void
new_folder_popover_active (GtkWidget *button,
GParamSpec *pspec,
GtkFileChooserWidget *impl)
{
GtkFileChooserWidgetPrivate *priv = impl->priv;
gdk_threads_enter ();
g_source_destroy (priv->edited_idle);
priv->edited_idle = NULL;
gtk_entry_set_text (GTK_ENTRY (priv->new_folder_name_entry), "");
gtk_widget_set_sensitive (priv->new_folder_create_button, FALSE);
gtk_label_set_text (GTK_LABEL (priv->new_folder_error_label), "");
}
_gtk_file_system_model_remove_editable (priv->browse_files_model);
g_object_set (priv->list_name_renderer, "editable", FALSE, NULL);
struct FileExistsData
{
GtkFileChooserWidget *impl;
gboolean file_exists_and_is_not_folder;
GFile *parent_file;
GFile *file;
};
gtk_widget_set_sensitive (priv->browse_new_folder_button, TRUE);
static void
name_exists_get_info_cb (GCancellable *cancellable,
GFileInfo *info,
const GError *error,
gpointer user_data)
{
struct FileExistsData *data = user_data;
GtkFileChooserWidget *impl = data->impl;
GtkFileChooserWidgetPrivate *priv = impl->priv;
if (priv->edited_new_text /* not cancelled? */
&& (strlen (priv->edited_new_text) != 0)
&& (strcmp (priv->edited_new_text, DEFAULT_NEW_FOLDER_NAME) != 0)) /* Don't create folder if name is empty or has not been edited */
if (cancellable != priv->file_exists_get_info_cancellable)
goto out;
priv->file_exists_get_info_cancellable = NULL;
if (g_cancellable_is_cancelled (cancellable))
goto out;
if (info != NULL)
{
GError *error = NULL;
GFile *file;
const gchar *msg;
file = g_file_get_child_for_display_name (priv->current_folder,
priv->edited_new_text,
&error);
if (file)
{
GError *error = NULL;
if (g_file_make_directory (file, NULL, &error))
change_folder_and_display_error (impl, file, FALSE);
else
error_creating_folder_dialog (impl, file, error);
g_object_unref (file);
}
if (_gtk_file_info_consider_as_directory (info))
msg = _("A folder with that name already exists");
else
error_creating_folder_dialog (impl, file, error);
msg = _("A file with that name already exists");
g_free (priv->edited_new_text);
priv->edited_new_text = NULL;
gtk_widget_set_sensitive (priv->new_folder_create_button, FALSE);
gtk_label_set_text (GTK_LABEL (priv->new_folder_error_label), msg);
}
else
{
gtk_widget_set_sensitive (priv->new_folder_create_button, TRUE);
gtk_label_set_text (GTK_LABEL (priv->new_folder_error_label), "");
}
gdk_threads_leave ();
return FALSE;
out:
g_object_unref (impl);
g_object_unref (data->file);
g_object_unref (data->parent_file);
g_free (data);
g_object_unref (cancellable);
}
static void
queue_edited_idle (GtkFileChooserWidget *impl,
const gchar *new_text)
check_valid_folder_name (GtkFileChooserWidget *impl,
const gchar *name)
{
GtkFileChooserWidgetPrivate *priv = impl->priv;
/* We create the folder in an idle handler so that we don't modify the tree
* just now.
*/
gtk_widget_set_sensitive (priv->new_folder_create_button, FALSE);
if (!priv->edited_idle)
priv->edited_idle = add_idle_while_impl_is_alive (impl, G_CALLBACK (edited_idle_cb));
if (name[0] == '\0')
gtk_label_set_text (GTK_LABEL (priv->new_folder_error_label), "");
else if (strcmp (name, ".") == 0)
gtk_label_set_text (GTK_LABEL (priv->new_folder_error_label),
_("A folder cannot be called “.”"));
else if (strcmp (name, "..") == 0)
gtk_label_set_text (GTK_LABEL (priv->new_folder_error_label),
_("A folder cannot be called “..”"));
else if (strchr (name, '/') != NULL)
gtk_label_set_text (GTK_LABEL (priv->new_folder_error_label),
_("Folder names cannot contain “/”"));
else
{
GFile *file;
GError *error = NULL;
g_free (priv->edited_new_text);
priv->edited_new_text = g_strdup (new_text);
file = g_file_get_child_for_display_name (priv->current_folder, name, &error);
if (file == NULL)
{
gtk_label_set_text (GTK_LABEL (priv->new_folder_error_label), error->message);
g_error_free (error);
}
else
{
struct FileExistsData *data;
gtk_label_set_text (GTK_LABEL (priv->new_folder_error_label), "");
data = g_new0 (struct FileExistsData, 1);
data->impl = g_object_ref (impl);
data->parent_file = g_object_ref (priv->current_folder);
data->file = g_object_ref (file);
if (priv->file_exists_get_info_cancellable)
g_cancellable_cancel (priv->file_exists_get_info_cancellable);
priv->file_exists_get_info_cancellable =
_gtk_file_system_get_info (priv->file_system,
file,
"standard::type",
name_exists_get_info_cb,
data);
g_object_unref (file);
}
}
}
/* Callback used from the text cell renderer when the new folder is named */
static void
renderer_edited_cb (GtkCellRendererText *cell_renderer_text,
const gchar *path,
const gchar *new_text,
GtkFileChooserWidget *impl)
new_folder_name_changed (GtkEntry *entry,
GtkFileChooserWidget *impl)
{
/* work around bug #154921 */
g_object_set (cell_renderer_text,
"mode", GTK_CELL_RENDERER_MODE_INERT, NULL);
queue_edited_idle (impl, new_text);
check_valid_folder_name (impl, gtk_entry_get_text (entry));
}
/* Callback used from the text cell renderer when the new folder edition gets
* canceled.
*/
static void
renderer_editing_canceled_cb (GtkCellRendererText *cell_renderer_text,
GtkFileChooserWidget *impl)
new_folder_create_clicked (GtkButton *button,
GtkFileChooserWidget *impl)
{
/* work around bug #154921 */
g_object_set (cell_renderer_text,
"mode", GTK_CELL_RENDERER_MODE_INERT, NULL);
queue_edited_idle (impl, NULL);
}
GtkFileChooserWidgetPrivate *priv = impl->priv;
GError *error = NULL;
GFile *file;
const gchar *name;
name = gtk_entry_get_text (GTK_ENTRY (priv->new_folder_name_entry));
file = g_file_get_child_for_display_name (priv->current_folder, name, &error);
gtk_widget_hide (priv->new_folder_popover);
if (file)
{
if (g_file_make_directory (file, NULL, &error))
change_folder_and_display_error (impl, file, FALSE);
else
error_creating_folder_dialog (impl, file, error);
g_object_unref (file);
}
else
error_creating_folder_dialog (impl, file, error);
}
struct selection_check_closure {
GtkFileChooserWidget *impl;
@@ -1198,6 +1242,7 @@ browse_files_key_press_event_cb (GtkWidget *widget,
if ((event->keyval == GDK_KEY_slash
|| event->keyval == GDK_KEY_KP_Divide
|| g_unichar_isalnum (gdk_keyval_to_unicode (event->keyval))
#ifdef G_OS_UNIX
|| event->keyval == GDK_KEY_asciitilde
#endif
@@ -5481,14 +5526,6 @@ should_respond_after_confirm_overwrite (GtkFileChooserWidget *impl,
}
}
struct FileExistsData
{
GtkFileChooserWidget *impl;
gboolean file_exists_and_is_not_folder;
GFile *parent_file;
GFile *file;
};
static void
name_entry_get_parent_info_cb (GCancellable *cancellable,
GFileInfo *info,
@@ -6541,7 +6578,7 @@ recent_start_loading (GtkFileChooserWidget *impl)
load_data->items = NULL;
/* begin lazy loading the recent files into the model */
priv->load_recent_id = gdk_threads_add_idle_full (G_PRIORITY_HIGH_IDLE + 30,
priv->load_recent_id = gdk_threads_add_idle_full (G_PRIORITY_DEFAULT,
recent_idle_load,
load_data,
recent_idle_cleanup);
@@ -6964,6 +7001,8 @@ location_popup_handler (GtkFileChooserWidget *impl,
operation_mode_set (impl, OPERATION_MODE_BROWSE);
if (priv->current_folder)
change_folder_and_display_error (impl, priv->current_folder, FALSE);
else
switch_to_home_dir (impl);
}
if (priv->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
@@ -7488,6 +7527,10 @@ gtk_file_chooser_widget_class_init (GtkFileChooserWidgetClass *class)
gtk_widget_class_bind_template_child_private (widget_class, GtkFileChooserWidget, list_mtime_column);
gtk_widget_class_bind_template_child_private (widget_class, GtkFileChooserWidget, list_size_column);
gtk_widget_class_bind_template_child_private (widget_class, GtkFileChooserWidget, list_location_column);
gtk_widget_class_bind_template_child_private (widget_class, GtkFileChooserWidget, new_folder_name_entry);
gtk_widget_class_bind_template_child_private (widget_class, GtkFileChooserWidget, new_folder_create_button);
gtk_widget_class_bind_template_child_private (widget_class, GtkFileChooserWidget, new_folder_error_label);
gtk_widget_class_bind_template_child_private (widget_class, GtkFileChooserWidget, new_folder_popover);
/* And a *lot* of callbacks to bind ... */
gtk_widget_class_bind_template_callback (widget_class, browse_files_key_press_event_cb);
@@ -7500,8 +7543,6 @@ gtk_file_chooser_widget_class_init (GtkFileChooserWidgetClass *class)
gtk_widget_class_bind_template_callback (widget_class, file_list_drag_motion_cb);
gtk_widget_class_bind_template_callback (widget_class, list_selection_changed);
gtk_widget_class_bind_template_callback (widget_class, list_cursor_changed);
gtk_widget_class_bind_template_callback (widget_class, renderer_editing_canceled_cb);
gtk_widget_class_bind_template_callback (widget_class, renderer_edited_cb);
gtk_widget_class_bind_template_callback (widget_class, filter_combo_changed);
gtk_widget_class_bind_template_callback (widget_class, new_folder_button_clicked);
gtk_widget_class_bind_template_callback (widget_class, path_bar_clicked);
@@ -7510,6 +7551,9 @@ gtk_file_chooser_widget_class_init (GtkFileChooserWidgetClass *class)
gtk_widget_class_bind_template_callback (widget_class, places_sidebar_show_enter_location_cb);
gtk_widget_class_bind_template_callback (widget_class, search_entry_activate_cb);
gtk_widget_class_bind_template_callback (widget_class, search_entry_stop_cb);
gtk_widget_class_bind_template_callback (widget_class, new_folder_popover_active);
gtk_widget_class_bind_template_callback (widget_class, new_folder_name_changed);
gtk_widget_class_bind_template_callback (widget_class, new_folder_create_clicked);
}
static void
+49 -2
View File
@@ -91,7 +91,46 @@
*
* If you need to initialize OpenGL state, e.g. buffer objects or
* shaders, you should use the #GtkWidget::realize signal; you
* can use the #GtkWidget::unrealize signal to clean up.
* can use the #GtkWidget::unrealize signal to clean up. Since the
* #GdkGLContext creation and initialization may fail, you will
* need to check for errors, using gtk_gl_area_get_error(). An example
* of how to safely initialize the GL state is:
*
* |[<!-- language="C" -->
* static void
* on_realize (GtkGLarea *area)
* {
* // We need to make the context current if we want to
* // call GL API
* gtk_gl_area_make_current (area);
*
* // If there were errors during the initialization or
* // when trying to make the context current, this
* // function will return a #GError for you to catch
* if (gtk_gl_area_get_error (area) != NULL)
* return;
*
* // You can also use gtk_gl_area_set_error() in order
* // to show eventual initialization errors on the
* // GtkGLArea widget itself
* GError *internal_error = NULL;
* init_buffer_objects (&error);
* if (error != NULL)
* {
* gtk_gl_area_set_error (area, error);
* g_error_free (error);
* return;
* }
*
* init_shaders (&error);
* if (error != NULL)
* {
* gtk_gl_area_set_error (area, error);
* g_error_free (error);
* return;
* }
* }
* ]|
*
* If you need to change the options for creating the #GdkGLContext
* you should use the #GtkGLArea::create-context signal.
@@ -448,6 +487,11 @@ gtk_gl_area_attach_buffers (GtkGLArea *area)
{
GtkGLAreaPrivate *priv = gtk_gl_area_get_instance_private (area);
g_return_if_fail (GTK_IS_GL_AREA (area));
if (priv->context == NULL)
return;
gtk_gl_area_make_current (area);
if (!priv->have_buffers)
@@ -631,6 +675,9 @@ gtk_gl_area_draw (GtkWidget *widget,
return FALSE;
}
if (priv->context == NULL)
return FALSE;
gtk_gl_area_make_current (area);
gtk_gl_area_attach_buffers (area);
@@ -1301,6 +1348,6 @@ gtk_gl_area_make_current (GtkGLArea *area)
g_return_if_fail (gtk_widget_get_realized (widget));
if (priv->context)
if (priv->context != NULL)
gdk_gl_context_make_current (priv->context);
}
+1 -1
View File
@@ -876,7 +876,7 @@ _gtk_icon_helper_get_size (GtkIconHelper *self,
width = gdk_pixbuf_animation_get_width (self->priv->animation);
height = gdk_pixbuf_animation_get_height (self->priv->animation);
}
else if (self->priv->icon_size != -1)
else if (self->priv->icon_size != GTK_ICON_SIZE_INVALID)
{
ensure_icon_size (self, context, &width, &height);
}
+38 -7
View File
@@ -725,6 +725,21 @@ gtk_label_class_init (GtkLabelClass *class)
_gtk_marshal_BOOLEAN__STRING,
G_TYPE_BOOLEAN, 1, G_TYPE_STRING);
/**
* GtkLabel:label:
*
* The contents of the label.
*
* If the string contains [Pango XML markup][PangoMarkupFormat], you will
* have to set the #GtkLabel:use-markup property to %TRUE in order for the
* label to display the markup attributes. See also gtk_label_set_markup()
* for a convenience function that sets both this property and the
* #GtkLabel:use-markup property at the same time.
*
* If the string contains underlines acting as mnemonics, you will have to
* set the #GtkLabel:use-underline property to %TRUE in order for the label
* to display them.
*/
g_object_class_install_property (gobject_class,
PROP_LABEL,
g_param_spec_string ("label",
@@ -2210,7 +2225,13 @@ gtk_label_recalculate (GtkLabel *label)
* Sets the text within the #GtkLabel widget. It overwrites any text that
* was there before.
*
* This will also clear any previously set mnemonic accelerators.
* This function will clear any previously set mnemonic accelerators, and
* set the #GtkLabel:use-underline property to %FALSE as a side effect.
*
* This function will set the #GtkLabel:use-markup property to %FALSE
* as a side effect.
*
* See also: gtk_label_set_markup()
**/
void
gtk_label_set_text (GtkLabel *label,
@@ -2294,7 +2315,7 @@ gtk_label_get_attributes (GtkLabel *label)
*
* Sets the text of the label. The label is interpreted as
* including embedded underlines and/or Pango markup depending
* on the values of the #GtkLabel:use-underline" and
* on the values of the #GtkLabel:use-underline and
* #GtkLabel:use-markup properties.
**/
void
@@ -2706,9 +2727,11 @@ gtk_label_set_markup_internal (GtkLabel *label,
*
* Parses @str which is marked up with the
* [Pango text markup language][PangoMarkupFormat], setting the
* labels text and attribute list based on the parse results. If the @str is
* external data, you may need to escape it with g_markup_escape_text() or
* g_markup_printf_escaped():
* labels text and attribute list based on the parse results.
*
* If the @str is external data, you may need to escape it with
* g_markup_escape_text() or g_markup_printf_escaped():
*
* |[<!-- language="C" -->
* const char *format = "<span style=\"italic\">\%s</span>";
* char *markup;
@@ -2717,6 +2740,15 @@ gtk_label_set_markup_internal (GtkLabel *label,
* gtk_label_set_markup (GTK_LABEL (label), markup);
* g_free (markup);
* ]|
*
* This function will set the #GtkLabel:use-markup property to %TRUE as
* a side effect.
*
* If you set the label contents using the #GtkLabel:label property you
* should also ensure that you set the #GtkLabel:use-markup property
* accordingly.
*
* See also: gtk_label_set_text()
**/
void
gtk_label_set_markup (GtkLabel *label,
@@ -5357,8 +5389,7 @@ gtk_label_create_window (GtkLabel *label)
GDK_BUTTON_RELEASE_MASK |
GDK_LEAVE_NOTIFY_MASK |
GDK_BUTTON_MOTION_MASK |
GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK;
GDK_POINTER_MOTION_MASK;
attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_NOREDIR;
if (gtk_widget_is_sensitive (widget) && priv->select_info && priv->select_info->selectable)
{
+12
View File
@@ -3610,9 +3610,21 @@ gtk_list_box_bound_model_changed (GListModel *list,
item = g_list_model_get_item (list, position + i);
widget = priv->create_widget_func (item, priv->create_widget_func_data);
/* We allow the create_widget_func to either return a full
* reference or a floating reference. If we got the floating
* reference, then turn it into a full reference now. That means
* that gtk_list_box_insert() will take another full reference.
* Finally, we'll release this full reference below, leaving only
* the one held by the box.
*/
if (g_object_is_floating (widget))
g_object_ref_sink (widget);
gtk_widget_show_all (widget);
gtk_list_box_insert (box, widget, position + i);
g_object_unref (widget);
g_object_unref (item);
}
}
+2 -2
View File
@@ -171,13 +171,13 @@ typedef void (*GtkListBoxUpdateHeaderFunc) (GtkListBoxRow *row,
/**
* GtkListBoxCreateWidgetFunc:
* @item: the item from the model for which to create a widget for
* @item: (type GObject): the item from the model for which to create a widget for
* @user_data: (closure): user data
*
* Called for list boxes that are bound to a #GListModel with
* gtk_list_box_bind_model() for each item that gets added to the model.
*
* Returns: a #GtkWidget that represents @item
* Returns: (transfer full): a #GtkWidget that represents @item
*
* Since: 3.16
*/
+1 -1
View File
@@ -890,7 +890,7 @@ set_align_widget_pointer (GtkMenuButton *menu_button,
priv->align_widget = align_widget;
if (align_widget)
if (priv->align_widget)
g_object_add_weak_pointer (G_OBJECT (priv->align_widget), (gpointer *) &priv->align_widget);
}
+5 -8
View File
@@ -1436,13 +1436,10 @@ create_show_processes_dialog (GtkMountOperation *op,
gtk_box_pack_start (GTK_BOX (content_area), vbox, TRUE, TRUE, 0);
if (secondary != NULL)
{
s = g_strdup_printf ("<big><b>%s</b></big>\n\n%s", primary, secondary);
}
s = g_strdup_printf ("<big><b>%s</b></big>\n\n%s", primary, secondary);
else
{
s = g_strdup_printf ("%s", primary);
}
s = g_strdup_printf ("%s", primary);
g_free (primary);
label = gtk_label_new (NULL);
gtk_label_set_markup (GTK_LABEL (label), s);
@@ -1518,8 +1515,8 @@ create_show_processes_dialog (GtkMountOperation *op,
priv->process_list_store = list_store;
priv->process_tree_view = tree_view;
/* set pointers to NULL when dialog goes away */
g_object_add_weak_pointer (G_OBJECT (list_store), (gpointer *) &priv->process_list_store);
g_object_add_weak_pointer (G_OBJECT (tree_view), (gpointer *) &priv->process_tree_view);
g_object_add_weak_pointer (G_OBJECT (priv->process_list_store), (gpointer *) &priv->process_list_store);
g_object_add_weak_pointer (G_OBJECT (priv->process_tree_view), (gpointer *) &priv->process_tree_view);
g_object_unref (list_store);
g_object_ref (op);
+3 -2
View File
@@ -24,6 +24,7 @@
#if defined(HAVE__NL_PAPER_HEIGHT) && defined(HAVE__NL_PAPER_WIDTH)
#include <langinfo.h>
#endif
#include <math.h>
#include "gtkpapersize.h"
#include "gtkprintutils.h"
@@ -442,8 +443,8 @@ gtk_paper_size_new_from_ipp (const gchar *ipp_name,
x_dimension = _gtk_print_convert_from_mm (standard_names_offsets[i].width, GTK_UNIT_POINTS);
y_dimension = _gtk_print_convert_from_mm (standard_names_offsets[i].height, GTK_UNIT_POINTS);
if (abs (x_dimension - width) <= PAPER_SIZE_TOLERANCE &&
abs (y_dimension - height) <= PAPER_SIZE_TOLERANCE)
if (fabs (x_dimension - width) <= PAPER_SIZE_TOLERANCE &&
fabs (y_dimension - height) <= PAPER_SIZE_TOLERANCE)
{
display_name = g_strdup (g_dpgettext2 (GETTEXT_PACKAGE,
"paper size",
+4 -1
View File
@@ -304,7 +304,10 @@ gtk_popover_dispose (GObject *object)
GtkPopoverPrivate *priv = popover->priv;
if (priv->window)
_gtk_window_remove_popover (priv->window, GTK_WIDGET (object));
{
g_signal_handlers_disconnect_by_data (priv->window, popover);
_gtk_window_remove_popover (priv->window, GTK_WIDGET (object));
}
priv->window = NULL;
+1 -1
View File
@@ -1785,7 +1785,7 @@ _gtk_print_operation_set_status (GtkPrintOperation *op,
NC_("print operation status", "Finished with error")
};
if (status < 0 || status > GTK_PRINT_STATUS_FINISHED_ABORTED)
if (status > GTK_PRINT_STATUS_FINISHED_ABORTED)
status = GTK_PRINT_STATUS_FINISHED_ABORTED;
if (string == NULL)
+1 -1
View File
@@ -207,7 +207,7 @@ static GObject *gtk_print_unix_dialog_buildable_get_internal_child (GtkBuildabl
GtkBuilder *builder,
const gchar *childname);
static const gchar const common_paper_sizes[][16] = {
static const gchar common_paper_sizes[][16] = {
"na_letter",
"na_legal",
"iso_a4",
+34 -29
View File
@@ -235,14 +235,14 @@ gtk_progress_bar_class_init (GtkProgressBarClass *class)
g_param_spec_int ("xspacing",
P_("X spacing"),
P_("Extra spacing applied to the width of a progress bar."),
0, G_MAXINT, 7,
0, G_MAXINT, 2,
G_PARAM_READWRITE));
gtk_widget_class_install_style_property (widget_class,
g_param_spec_int ("yspacing",
P_("Y spacing"),
P_("Extra spacing applied to the height of a progress bar."),
0, G_MAXINT, 7,
0, G_MAXINT, 2,
G_PARAM_READWRITE));
/**
@@ -471,7 +471,7 @@ gtk_progress_bar_get_preferred_width (GtkWidget *widget,
PangoLayout *layout;
gint width;
gint xspacing;
gint min_width;
gint bar_width;
g_return_if_fail (GTK_IS_PROGRESS_BAR (widget));
@@ -479,17 +479,18 @@ gtk_progress_bar_get_preferred_width (GtkWidget *widget,
state = gtk_widget_get_state_flags (widget);
gtk_style_context_get_padding (style_context, state, &padding);
gtk_widget_style_get (widget,
"xspacing", &xspacing,
NULL);
pbar = GTK_PROGRESS_BAR (widget);
priv = pbar->priv;
width = padding.left + padding.right + xspacing;
width = padding.left + padding.right;
if (priv->show_text)
{
gtk_widget_style_get (widget,
"xspacing", &xspacing,
NULL);
width += xspacing;
buf = get_current_text (pbar);
layout = gtk_widget_create_pango_layout (widget, buf);
@@ -521,14 +522,14 @@ gtk_progress_bar_get_preferred_width (GtkWidget *widget,
if (priv->orientation == GTK_ORIENTATION_HORIZONTAL)
gtk_widget_style_get (widget,
"min-horizontal-bar-width", &min_width,
"min-horizontal-bar-width", &bar_width,
NULL);
else
gtk_widget_style_get (widget,
"min-vertical-bar-width", &min_width,
"min-vertical-bar-width", &bar_width,
NULL);
*minimum = *natural = MAX (min_width, width);
*minimum = *natural = width + bar_width;
}
static void
@@ -546,7 +547,7 @@ gtk_progress_bar_get_preferred_height (GtkWidget *widget,
PangoLayout *layout;
gint height;
gint yspacing;
gint min_height;
gint bar_height;
g_return_if_fail (GTK_IS_PROGRESS_BAR (widget));
@@ -554,17 +555,18 @@ gtk_progress_bar_get_preferred_height (GtkWidget *widget,
state = gtk_widget_get_state_flags (widget);
gtk_style_context_get_padding (context, state, &padding);
gtk_widget_style_get (widget,
"yspacing", &yspacing,
NULL);
pbar = GTK_PROGRESS_BAR (widget);
priv = pbar->priv;
height = padding.top + padding.bottom + yspacing;
height = padding.top + padding.bottom;
if (priv->show_text)
{
gtk_widget_style_get (widget,
"yspacing", &yspacing,
NULL);
height += yspacing;
buf = get_current_text (pbar);
layout = gtk_widget_create_pango_layout (widget, buf);
@@ -578,14 +580,14 @@ gtk_progress_bar_get_preferred_height (GtkWidget *widget,
if (priv->orientation == GTK_ORIENTATION_HORIZONTAL)
gtk_widget_style_get (widget,
"min-horizontal-bar-height", &min_height,
"min-horizontal-bar-height", &bar_height,
NULL);
else
gtk_widget_style_get (widget,
"min-vertical-bar-height", &min_height,
"min-vertical-bar-height", &bar_height,
NULL);
*minimum = *natural = MAX (min_height, height);
*minimum = *natural = height + bar_height;
}
static gboolean
@@ -883,16 +885,11 @@ gtk_progress_bar_paint_text (GtkProgressBar *pbar,
PangoLayout *layout;
PangoRectangle logical_rect;
GdkRectangle prelight_clip, start_clip, end_clip;
gfloat text_xalign = 0.5;
gfloat text_yalign = 0.0;
context = gtk_widget_get_style_context (widget);
state = gtk_widget_get_state_flags (widget);
gtk_style_context_get_padding (context, state, &padding);
if (gtk_widget_get_direction (widget) != GTK_TEXT_DIR_LTR)
text_xalign = 1.0 - text_xalign;
buf = get_current_text (pbar);
layout = gtk_widget_create_pango_layout (widget, buf);
@@ -902,8 +899,16 @@ gtk_progress_bar_paint_text (GtkProgressBar *pbar,
pango_layout_get_pixel_extents (layout, NULL, &logical_rect);
x = padding.left + 1 + text_xalign * (width - padding.left - padding.right - 2 - logical_rect.width);
y = padding.top + 1 + text_yalign * (height - padding.top - padding.bottom - 2 - logical_rect.height);
if (orientation == GTK_ORIENTATION_HORIZONTAL)
{
x = padding.left + (width - padding.left - padding.right - 2 - logical_rect.width) / 2;
y = padding.top + 1;
}
else
{
x = padding.left + 1;
y = padding.top + 1 + (height - padding.top - padding.bottom - 2 - logical_rect.height) / 2;
}
rect.x = padding.left;
rect.y = padding.top;
@@ -1026,12 +1031,12 @@ gtk_progress_bar_draw (GtkWidget *widget,
if (priv->orientation == GTK_ORIENTATION_HORIZONTAL)
{
bar_height = MIN_HORIZONTAL_BAR_HEIGHT;
gtk_widget_style_get (widget, "min-horizontal-bar-height", &bar_height, NULL);
bar_width = width;
}
else
{
bar_width = MIN_VERTICAL_BAR_WIDTH;
gtk_widget_style_get (widget, "min-vertical-bar-width", &bar_width, NULL);
bar_height = height;
}
+23 -80
View File
@@ -26,6 +26,7 @@
#include "gtkradiobutton.h"
#include "gtkcontainerprivate.h"
#include "gtkbuttonprivate.h"
#include "gtktogglebuttonprivate.h"
#include "gtklabel.h"
@@ -593,53 +594,6 @@ gtk_radio_button_destroy (GtkWidget *widget)
GTK_WIDGET_CLASS (gtk_radio_button_parent_class)->destroy (widget);
}
static void
get_coordinates (GtkWidget *widget,
GtkWidget *reference,
gint *x,
gint *y)
{
GtkAllocation allocation;
gtk_widget_get_allocation (widget, &allocation);
*x = allocation.x + allocation.width / 2;
*y = allocation.y + allocation.height / 2;
gtk_widget_translate_coordinates (widget, reference, *x, *y, x, y);
}
static gint
left_right_compare (gconstpointer a,
gconstpointer b,
gpointer data)
{
gint x1, y1, x2, y2;
get_coordinates ((GtkWidget *)a, data, &x1, &y1);
get_coordinates ((GtkWidget *)b, data, &x2, &y2);
if (y1 == y2)
return (x1 < x2) ? -1 : ((x1 == x2) ? 0 : 1);
else
return (y1 < y2) ? -1 : 1;
}
static gint
up_down_compare (gconstpointer a,
gconstpointer b,
gpointer data)
{
gint x1, y1, x2, y2;
get_coordinates ((GtkWidget *)a, data, &x1, &y1);
get_coordinates ((GtkWidget *)b, data, &x2, &y2);
if (x1 == x2)
return (y1 < y2) ? -1 : ((y1 == y2) ? 0 : 1);
else
return (x1 < x2) ? -1 : 1;
}
static gboolean
gtk_radio_button_focus (GtkWidget *widget,
GtkDirectionType direction)
@@ -653,45 +607,34 @@ gtk_radio_button_focus (GtkWidget *widget,
*/
if (!gtk_toggle_button_get_mode (GTK_TOGGLE_BUTTON (widget)))
return GTK_WIDGET_CLASS (gtk_radio_button_parent_class)->focus (widget, direction);
if (gtk_widget_is_focus (widget))
{
GSList *focus_list, *tmp_list;
GtkWidget *toplevel = gtk_widget_get_toplevel (widget);
GList *children, *focus_list, *tmp_list;
GtkWidget *toplevel;
GtkWidget *new_focus = NULL;
GSList *l;
switch (direction)
{
case GTK_DIR_LEFT:
case GTK_DIR_RIGHT:
focus_list = g_slist_copy (priv->group);
focus_list = g_slist_sort_with_data (focus_list, left_right_compare, toplevel);
break;
case GTK_DIR_UP:
case GTK_DIR_DOWN:
focus_list = g_slist_copy (priv->group);
focus_list = g_slist_sort_with_data (focus_list, up_down_compare, toplevel);
break;
case GTK_DIR_TAB_FORWARD:
case GTK_DIR_TAB_BACKWARD:
/* fall through */
default:
return FALSE;
}
if (direction == GTK_DIR_TAB_FORWARD ||
direction == GTK_DIR_TAB_BACKWARD)
return FALSE;
if (direction == GTK_DIR_LEFT || direction == GTK_DIR_UP)
focus_list = g_slist_reverse (focus_list);
toplevel = gtk_widget_get_toplevel (widget);
children = NULL;
for (l = priv->group; l; l = l->next)
children = g_list_prepend (children, l->data);
tmp_list = g_slist_find (focus_list, widget);
focus_list = _gtk_container_focus_sort (GTK_CONTAINER (toplevel), children, direction, widget);
tmp_list = g_list_find (focus_list, widget);
if (tmp_list)
{
tmp_list = tmp_list->next;
while (tmp_list)
{
GtkWidget *child = tmp_list->data;
if (gtk_widget_get_mapped (child) && gtk_widget_is_sensitive (child))
{
new_focus = child;
@@ -709,18 +652,19 @@ gtk_radio_button_focus (GtkWidget *widget,
while (tmp_list)
{
GtkWidget *child = tmp_list->data;
if (gtk_widget_get_mapped (child) && gtk_widget_is_sensitive (child))
{
new_focus = child;
break;
}
tmp_list = tmp_list->next;
}
}
g_slist_free (focus_list);
g_list_free (focus_list);
g_list_free (children);
if (new_focus)
{
@@ -734,12 +678,11 @@ gtk_radio_button_focus (GtkWidget *widget,
else
{
GtkRadioButton *selected_button = NULL;
/* We accept the focus if, we don't have the focus and
* - we are the currently active button in the group
* - there is no currently active radio button.
*/
tmp_slist = priv->group;
while (tmp_slist)
{
@@ -748,7 +691,7 @@ gtk_radio_button_focus (GtkWidget *widget,
selected_button = tmp_slist->data;
tmp_slist = tmp_slist->next;
}
if (selected_button && selected_button != radio_button)
return FALSE;
+66 -8
View File
@@ -208,6 +208,8 @@ gtk_radio_menu_item_set_group (GtkRadioMenuItem *radio_menu_item,
tmp_item->priv->group = priv->group;
}
_gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (radio_menu_item), FALSE);
}
else
{
@@ -282,7 +284,7 @@ gtk_radio_menu_item_new_with_mnemonic (GSList *group,
/**
* gtk_radio_menu_item_new_from_widget: (constructor)
* @group: An existing #GtkRadioMenuItem
* @group: (allow-none): An existing #GtkRadioMenuItem
*
* Creates a new #GtkRadioMenuItem adding it to the same group as @group.
*
@@ -295,7 +297,7 @@ gtk_radio_menu_item_new_from_widget (GtkRadioMenuItem *group)
{
GSList *list = NULL;
g_return_val_if_fail (GTK_IS_RADIO_MENU_ITEM (group), NULL);
g_return_val_if_fail (group == NULL || GTK_IS_RADIO_MENU_ITEM (group), NULL);
if (group)
list = gtk_radio_menu_item_get_group (group);
@@ -305,8 +307,8 @@ gtk_radio_menu_item_new_from_widget (GtkRadioMenuItem *group)
/**
* gtk_radio_menu_item_new_with_mnemonic_from_widget: (constructor)
* @group: An existing #GtkRadioMenuItem
* @label: the text of the button, with an underscore in front of the
* @group: (allow-none): An existing #GtkRadioMenuItem
* @label: (allow-none): the text of the button, with an underscore in front of the
* mnemonic character
*
* Creates a new GtkRadioMenuItem containing a label. The label will be
@@ -325,7 +327,7 @@ gtk_radio_menu_item_new_with_mnemonic_from_widget (GtkRadioMenuItem *group,
{
GSList *list = NULL;
g_return_val_if_fail (GTK_IS_RADIO_MENU_ITEM (group), NULL);
g_return_val_if_fail (group == NULL || GTK_IS_RADIO_MENU_ITEM (group), NULL);
if (group)
list = gtk_radio_menu_item_get_group (group);
@@ -335,8 +337,8 @@ gtk_radio_menu_item_new_with_mnemonic_from_widget (GtkRadioMenuItem *group,
/**
* gtk_radio_menu_item_new_with_label_from_widget: (constructor)
* @group: an existing #GtkRadioMenuItem
* @label: the text for the label
* @group: (allow-none): an existing #GtkRadioMenuItem
* @label: (allow-none): the text for the label
*
* Creates a new GtkRadioMenuItem whose child is a simple GtkLabel.
* The new #GtkRadioMenuItem is added to the same group as @group.
@@ -351,7 +353,7 @@ gtk_radio_menu_item_new_with_label_from_widget (GtkRadioMenuItem *group,
{
GSList *list = NULL;
g_return_val_if_fail (GTK_IS_RADIO_MENU_ITEM (group), NULL);
g_return_val_if_fail (group == NULL || GTK_IS_RADIO_MENU_ITEM (group), NULL);
if (group)
list = gtk_radio_menu_item_get_group (group);
@@ -556,3 +558,59 @@ gtk_radio_menu_item_activate (GtkMenuItem *menu_item)
gtk_widget_queue_draw (GTK_WIDGET (radio_menu_item));
}
/**
* gtk_radio_menu_item_join_group:
* @radio_menu_item: a #GtkRadioMenuItem
* @group_source: (allow-none): a #GtkRadioMenuItem whose group we are
* joining, or %NULL to remove the @radio_menu_item from its current
* group
*
* Joins a #GtkRadioMenuItem object to the group of another #GtkRadioMenuItem
* object.
*
* This function should be used by language bindings to avoid the memory
* manangement of the opaque #GSList of gtk_radio_menu_item_get_group()
* and gtk_radio_menu_item_set_group().
*
* A common way to set up a group of #GtkRadioMenuItem instances is:
*
* |[
* GtkRadioMenuItem *last_item = NULL;
*
* while ( ...more items to add... )
* {
* GtkRadioMenuItem *radio_item;
*
* radio_item = gtk_radio_menu_item_new (...);
*
* gtk_radio_menu_item_join_group (radio_item, last_item);
* last_item = radio_item;
* }
* ]|
*
* Since: 3.18
*/
void
gtk_radio_menu_item_join_group (GtkRadioMenuItem *radio_menu_item,
GtkRadioMenuItem *group_source)
{
g_return_if_fail (GTK_IS_RADIO_MENU_ITEM (radio_menu_item));
g_return_if_fail (group_source == NULL || GTK_IS_RADIO_MENU_ITEM (group_source));
if (group_source != NULL)
{
GSList *group = gtk_radio_menu_item_get_group (group_source);
if (group == NULL)
{
/* if the group source does not have a group, we force one */
gtk_radio_menu_item_set_group (group_source, NULL);
group = gtk_radio_menu_item_get_group (group_source);
}
gtk_radio_menu_item_set_group (radio_menu_item, group);
}
else
gtk_radio_menu_item_set_group (radio_menu_item, NULL);
}
+4
View File
@@ -95,6 +95,10 @@ GDK_AVAILABLE_IN_ALL
void gtk_radio_menu_item_set_group (GtkRadioMenuItem *radio_menu_item,
GSList *group);
GDK_AVAILABLE_IN_3_18
void gtk_radio_menu_item_join_group (GtkRadioMenuItem *radio_menu_item,
GtkRadioMenuItem *group_source);
G_END_DECLS
#endif /* __GTK_RADIO_MENU_ITEM_H__ */
+46 -52
View File
@@ -1650,14 +1650,13 @@ gtk_range_realize (GtkWidget *widget)
attributes.height = allocation.height;
attributes.wclass = GDK_INPUT_ONLY;
attributes.event_mask = gtk_widget_get_events (widget);
attributes.event_mask |= (GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK |
GDK_SCROLL_MASK |
GDK_SMOOTH_SCROLL_MASK |
GDK_ENTER_NOTIFY_MASK |
GDK_LEAVE_NOTIFY_MASK |
GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK);
attributes.event_mask |= GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK |
GDK_SCROLL_MASK |
GDK_SMOOTH_SCROLL_MASK |
GDK_ENTER_NOTIFY_MASK |
GDK_LEAVE_NOTIFY_MASK |
GDK_POINTER_MOTION_MASK;
attributes_mask = GDK_WA_X | GDK_WA_Y;
@@ -2038,8 +2037,6 @@ gtk_range_draw (GtkWidget *widget,
}
else
{
gboolean is_rtl = gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL;
gint trough_change_pos_x = width;
gint trough_change_pos_y = height;
@@ -2054,15 +2051,13 @@ gtk_range_draw (GtkWidget *widget,
gtk_style_context_save (context);
if (priv->orientation == GTK_ORIENTATION_HORIZONTAL)
{
gtk_style_context_add_class (context, GTK_STYLE_CLASS_LEFT);
if (!is_rtl)
gtk_style_context_add_class (context, GTK_STYLE_CLASS_HIGHLIGHT);
}
gtk_style_context_add_class (context, GTK_STYLE_CLASS_LEFT);
else
gtk_style_context_add_class (context, GTK_STYLE_CLASS_TOP);
if (!should_invert (range))
gtk_style_context_add_class (context, GTK_STYLE_CLASS_HIGHLIGHT);
gtk_render_background (context, cr, x, y,
trough_change_pos_x,
trough_change_pos_y);
@@ -2080,17 +2075,12 @@ gtk_range_draw (GtkWidget *widget,
gtk_style_context_save (context);
if (priv->orientation == GTK_ORIENTATION_HORIZONTAL)
{
gtk_style_context_add_class (context, GTK_STYLE_CLASS_RIGHT);
if (is_rtl)
gtk_style_context_add_class (context, GTK_STYLE_CLASS_HIGHLIGHT);
}
gtk_style_context_add_class (context, GTK_STYLE_CLASS_RIGHT);
else
{
gtk_style_context_add_class (context, GTK_STYLE_CLASS_BOTTOM);
gtk_style_context_add_class (context, GTK_STYLE_CLASS_HIGHLIGHT);
}
gtk_style_context_add_class (context, GTK_STYLE_CLASS_BOTTOM);
if (should_invert (range))
gtk_style_context_add_class (context, GTK_STYLE_CLASS_HIGHLIGHT);
gtk_render_background (context, cr,
x + trough_change_pos_x, y + trough_change_pos_y,
@@ -2112,11 +2102,12 @@ gtk_range_draw (GtkWidget *widget,
gtk_adjustment_get_upper (priv->adjustment) - gtk_adjustment_get_page_size (priv->adjustment) -
gtk_adjustment_get_lower (priv->adjustment) != 0)
{
gdouble fill_level = priv->fill_level;
gint fill_x = x;
gint fill_y = y;
gint fill_width = width;
gint fill_height = height;
gdouble fill_level = priv->fill_level;
gint fill_x = x;
gint fill_y = y;
gint fill_width = width;
gint fill_height = height;
gdouble fill_proportion = 0.0;
gtk_style_context_save (context);
gtk_style_context_add_class (context, GTK_STYLE_CLASS_PROGRESSBAR);
@@ -2125,33 +2116,36 @@ gtk_range_draw (GtkWidget *widget,
gtk_adjustment_get_upper (priv->adjustment) -
gtk_adjustment_get_page_size (priv->adjustment));
if (priv->orientation == GTK_ORIENTATION_HORIZONTAL)
{
fill_x = priv->trough.x;
fill_width = (priv->slider.width +
(fill_level - gtk_adjustment_get_lower (priv->adjustment)) /
fill_proportion = (fill_level - gtk_adjustment_get_lower (priv->adjustment)) /
(gtk_adjustment_get_upper (priv->adjustment) -
gtk_adjustment_get_lower (priv->adjustment) -
gtk_adjustment_get_page_size (priv->adjustment)) *
(priv->trough.width -
priv->slider.width));
gtk_adjustment_get_page_size (priv->adjustment));
if (should_invert (range))
fill_x += priv->trough.width - fill_width;
if (priv->orientation == GTK_ORIENTATION_HORIZONTAL)
{
if (!should_invert (range))
{
fill_x = priv->slider.x + (priv->slider.width / 2);
fill_width = (width * fill_proportion) - fill_x + x;
}
else
{
fill_x = x + width * (1.0 - fill_proportion);
fill_width = priv->slider.x + (priv->slider.width / 2) - fill_x;
}
}
else
{
fill_y = priv->trough.y;
fill_height = (priv->slider.height +
(fill_level - gtk_adjustment_get_lower (priv->adjustment)) /
(gtk_adjustment_get_upper (priv->adjustment) -
gtk_adjustment_get_lower (priv->adjustment) -
gtk_adjustment_get_page_size (priv->adjustment)) *
(priv->trough.height -
priv->slider.height));
if (should_invert (range))
fill_y += priv->trough.height - fill_height;
if (!should_invert (range))
{
fill_y = priv->slider.y + (priv->slider.height / 2);
fill_height = (height * fill_proportion) - fill_y + y;
}
else
{
fill_y = y + height * (1.0 - fill_proportion);
fill_height = priv->slider.y + (priv->slider.height / 2) - fill_y;
}
}
gtk_render_background (context, cr, fill_x, fill_y, fill_width, fill_height);
+1 -1
View File
@@ -1189,7 +1189,7 @@ gtk_render_icon_pixbuf (GtkStyleContext *context,
GtkIconSize size)
{
g_return_val_if_fail (GTK_IS_STYLE_CONTEXT (context), NULL);
g_return_val_if_fail (size > GTK_ICON_SIZE_INVALID || size == -1, NULL);
g_return_val_if_fail (size > GTK_ICON_SIZE_INVALID || size == (GtkIconSize)-1, NULL);
g_return_val_if_fail (source != NULL, NULL);
return gtk_do_render_icon_pixbuf (context, source, size);
+1 -1
View File
@@ -626,7 +626,7 @@ _gtk_rounded_box_contains_rectangle (const GtkRoundedBox *box,
if (x1 < box->box.x ||
y1 < box->box.y ||
x2 >= box->box.x + box->box.width ||
y2 >= box->box.y + box->box.width)
y2 >= box->box.y + box->box.height)
return FALSE;
if (x1 < box->box.x + box->corner[GTK_CSS_TOP_LEFT].horizontal &&
+81 -55
View File
@@ -167,8 +167,7 @@ typedef struct
{
GtkWidget *scrollbar;
GdkWindow *window;
gboolean dragging;
gboolean over;
gboolean over; /* either mouse over, or while dragging */
gint64 last_scroll_time;
guint conceil_timer;
@@ -978,51 +977,77 @@ indicator_set_over (Indicator *indicator,
gtk_widget_queue_resize (indicator->scrollbar);
}
static void
translate_to_widget (GtkWidget *widget,
GdkEvent *event,
gint *x,
gint *y)
{
GtkWidget *event_widget;
GdkWindow *event_widget_window;
GdkWindow *window;
gdouble event_x, event_y;
gint wx, wy;
GtkAllocation allocation;
event_widget = gtk_get_event_widget (event);
event_widget_window = gtk_widget_get_window (event_widget);
gdk_event_get_coords (event, &event_x, &event_y);
window = event->any.window;
while (window && window != event_widget_window)
{
gdk_window_get_position (window, &wx, &wy);
event_x += wx;
event_y += wy;
window = gdk_window_get_effective_parent (window);
}
if (!gtk_widget_get_has_window (event_widget))
{
gtk_widget_get_allocation (event_widget, &allocation);
event_x -= allocation.x;
event_y -= allocation.y;
}
gtk_widget_translate_coordinates (event_widget, widget,
(gint)event_x, (gint)event_y,
x, y);
}
static gboolean
event_close_to_indicator (GtkScrolledWindow *sw,
Indicator *indicator,
GdkEvent *event)
{
GtkAllocation alloc, indicator_alloc;
GtkScrolledWindowPrivate *priv;
GtkWidget *event_widget;
gint win_x, win_y;
gdouble x, y;
GtkAllocation indicator_alloc;
gint x, y;
gint distance;
gint win_x, win_y;
priv = sw->priv;
event_widget = gtk_get_event_widget (event);
gdk_event_get_coords (event, &x, &y);
gtk_widget_get_allocation (GTK_WIDGET (sw), &alloc);
gtk_widget_get_allocation (indicator->scrollbar, &indicator_alloc);
gdk_window_get_position (indicator->window, &win_x, &win_y);
if (event->any.window == indicator->window ||
event_widget == indicator->scrollbar)
{
gint xcoord = x, ycoord = y;
gtk_widget_translate_coordinates (indicator->scrollbar,
GTK_WIDGET (sw),
xcoord, ycoord,
&xcoord, &ycoord);
x = xcoord;
y = ycoord;
}
translate_to_widget (GTK_WIDGET (sw), event, &x, &y);
if (indicator->over)
distance = INDICATOR_FAR_DISTANCE;
else
distance = INDICATOR_CLOSE_DISTANCE;
if ((indicator == &priv->hindicator &&
y >= win_y - distance &&
y < win_y + indicator_alloc.height + distance) ||
(indicator == &priv->vindicator &&
x >= win_x - distance &&
x < win_x + indicator_alloc.width + distance))
return TRUE;
if (indicator == &priv->hindicator)
{
if (y >= win_y - distance &&
y < win_y + indicator_alloc.height + distance)
return TRUE;
}
else if (indicator == &priv->vindicator)
{
if (x >= win_x - distance &&
x < win_x + indicator_alloc.width + distance)
return TRUE;
}
return FALSE;
}
@@ -1067,13 +1092,26 @@ captured_event_cb (GtkWidget *widget,
GtkScrolledWindow *sw;
GdkInputSource input_source;
GdkDevice *source_device;
GtkWidget *event_widget;
gboolean on_scrollbar;
sw = GTK_SCROLLED_WINDOW (widget);
priv = sw->priv;
if (event->type == GDK_SCROLL)
{
gtk_scrolled_window_cancel_deceleration (sw);
gdouble dx, dy;
/* The libinput driver may generate a final event with dx=dy=0
* after scrolling finished, this is usually an indication that
* the deceleration animation just started, so we definitely
* shouldn't cancel it.
*/
if (event->scroll.direction != GDK_SCROLL_SMOOTH ||
(gdk_event_get_scroll_deltas (event, &dx, &dy) &&
((int) dx != 0 || (int) dy != 0)))
gtk_scrolled_window_cancel_deceleration (sw);
return GDK_EVENT_PROPAGATE;
}
@@ -1091,6 +1129,10 @@ captured_event_cb (GtkWidget *widget,
input_source != GDK_SOURCE_TOUCHPAD)
return GDK_EVENT_PROPAGATE;
event_widget = gtk_get_event_widget (event);
on_scrollbar = (event_widget == priv->hindicator.scrollbar ||
event_widget == priv->vindicator.scrollbar);
if (event->type == GDK_MOTION_NOTIFY)
{
if (priv->hscrollbar_visible)
@@ -1098,13 +1140,15 @@ captured_event_cb (GtkWidget *widget,
if (priv->vscrollbar_visible)
indicator_start_fade (&priv->vindicator, 1.0);
if ((event->motion.state &
(GDK_BUTTON1_MASK | GDK_BUTTON2_MASK | GDK_BUTTON3_MASK)) != 0)
if (!on_scrollbar &&
(event->motion.state &
(GDK_BUTTON1_MASK | GDK_BUTTON2_MASK | GDK_BUTTON3_MASK)) != 0)
{
indicator_set_over (&priv->hindicator, FALSE);
indicator_set_over (&priv->vindicator, FALSE);
}
else if (strstr (gdk_device_get_name (source_device), "TrackPoint"))
else if (strstr (gdk_device_get_name (source_device), "TrackPoint") ||
strstr (gdk_device_get_name (source_device), "DualPoint Stick"))
{
indicator_set_over (&priv->hindicator, TRUE);
indicator_set_over (&priv->vindicator, TRUE);
@@ -1117,16 +1161,12 @@ captured_event_cb (GtkWidget *widget,
indicator_set_over (&priv->hindicator, FALSE);
}
}
else if (event->type == GDK_LEAVE_NOTIFY &&
else if (event->type == GDK_LEAVE_NOTIFY && on_scrollbar &&
event->crossing.mode == GDK_CROSSING_UNGRAB)
{
GtkWidget *scrollbar;
scrollbar = gtk_get_event_widget (event);
if (scrollbar == priv->hindicator.scrollbar)
if (event_widget == priv->hindicator.scrollbar)
check_update_scrollbar_proximity (sw, &priv->hindicator, event);
else if (scrollbar == priv->vindicator.scrollbar)
else if (event_widget == priv->vindicator.scrollbar)
check_update_scrollbar_proximity (sw, &priv->vindicator, event);
}
@@ -3897,7 +3937,7 @@ maybe_hide_indicator (gpointer data)
Indicator *indicator = data;
if (g_get_monotonic_time () - indicator->last_scroll_time >= INDICATOR_FADE_OUT_DELAY * 1000 &&
!indicator->over && !indicator->dragging)
!indicator->over)
indicator_start_fade (indicator, 0.0);
return G_SOURCE_CONTINUE;
@@ -3911,16 +3951,6 @@ indicator_value_changed (GtkAdjustment *adjustment,
indicator_start_fade (indicator, 1.0);
}
static void
indicator_style_changed (GtkStyleContext *context,
Indicator *indicator)
{
if (gtk_style_context_has_class (context, "dragging"))
indicator->dragging = TRUE;
else
indicator->dragging = FALSE;
}
static void
setup_indicator (GtkScrolledWindow *scrolled_window,
Indicator *indicator,
@@ -3944,8 +3974,6 @@ setup_indicator (GtkScrolledWindow *scrolled_window,
g_object_unref (scrollbar);
gtk_style_context_add_class (context, "overlay-indicator");
g_signal_connect (context, "changed",
G_CALLBACK (indicator_style_changed), indicator);
g_signal_connect (adjustment, "value-changed",
G_CALLBACK (indicator_value_changed), indicator);
@@ -3972,7 +4000,6 @@ remove_indicator (GtkScrolledWindow *scrolled_window,
adjustment = gtk_range_get_adjustment (GTK_RANGE (scrollbar));
gtk_style_context_remove_class (context, "overlay-indicator");
g_signal_handlers_disconnect_by_func (context, indicator_style_changed, indicator);
g_signal_handlers_disconnect_by_func (adjustment, indicator_value_changed, indicator);
if (indicator->conceil_timer)
{
@@ -4103,7 +4130,6 @@ indicator_reset (Indicator *indicator)
}
indicator->scrollbar = NULL;
indicator->dragging = FALSE;
indicator->over = FALSE;
indicator->current_pos = indicator->source_pos = indicator->target_pos = 0;
indicator->start_time = indicator->end_time = indicator->last_scroll_time = 0;
+34 -30
View File
@@ -344,18 +344,15 @@ gtk_search_bar_get_property (GObject *object,
}
}
static void gtk_search_bar_set_entry (GtkSearchBar *bar,
GtkEntry *entry);
static void
gtk_search_bar_dispose (GObject *object)
{
GtkSearchBar *bar = GTK_SEARCH_BAR (object);
GtkSearchBarPrivate *priv = gtk_search_bar_get_instance_private (bar);
if (priv->entry)
{
g_signal_handlers_disconnect_by_func (priv->entry, entry_key_pressed_event_cb, bar);
g_object_remove_weak_pointer (G_OBJECT (priv->entry), (gpointer *) &priv->entry);
priv->entry = NULL;
}
gtk_search_bar_set_entry (bar, NULL);
G_OBJECT_CLASS (gtk_search_bar_parent_class)->dispose (object);
}
@@ -471,6 +468,35 @@ gtk_search_bar_new (void)
return g_object_new (GTK_TYPE_SEARCH_BAR, NULL);
}
static void
gtk_search_bar_set_entry (GtkSearchBar *bar,
GtkEntry *entry)
{
GtkSearchBarPrivate *priv = gtk_search_bar_get_instance_private (bar);
if (priv->entry != NULL)
{
if (GTK_IS_SEARCH_ENTRY (priv->entry))
g_signal_handlers_disconnect_by_func (priv->entry, stop_search_cb, bar);
else
g_signal_handlers_disconnect_by_func (priv->entry, entry_key_pressed_event_cb, bar);
g_object_remove_weak_pointer (G_OBJECT (priv->entry), (gpointer *) &priv->entry);
}
priv->entry = GTK_WIDGET (entry);
if (priv->entry != NULL)
{
g_object_add_weak_pointer (G_OBJECT (priv->entry), (gpointer *) &priv->entry);
if (GTK_IS_SEARCH_ENTRY (priv->entry))
g_signal_connect (priv->entry, "stop-search",
G_CALLBACK (stop_search_cb), bar);
else
g_signal_connect (priv->entry, "key-press-event",
G_CALLBACK (entry_key_pressed_event_cb), bar);
}
}
/**
* gtk_search_bar_connect_entry:
* @bar: a #GtkSearchBar
@@ -487,32 +513,10 @@ void
gtk_search_bar_connect_entry (GtkSearchBar *bar,
GtkEntry *entry)
{
GtkSearchBarPrivate *priv = gtk_search_bar_get_instance_private (bar);
g_return_if_fail (GTK_IS_SEARCH_BAR (bar));
g_return_if_fail (entry == NULL || GTK_IS_ENTRY (entry));
if (priv->entry != NULL)
{
if (GTK_IS_SEARCH_ENTRY (priv->entry))
g_signal_handlers_disconnect_by_func (priv->entry, stop_search_cb, bar);
else
g_signal_handlers_disconnect_by_func (priv->entry, entry_key_pressed_event_cb, bar);
g_object_remove_weak_pointer (G_OBJECT (priv->entry), (gpointer *) &priv->entry);
priv->entry = NULL;
}
if (entry != NULL)
{
priv->entry = GTK_WIDGET (entry);
g_object_add_weak_pointer (G_OBJECT (priv->entry), (gpointer *) &priv->entry);
if (GTK_IS_SEARCH_ENTRY (priv->entry))
g_signal_connect (priv->entry, "stop-search",
G_CALLBACK (stop_search_cb), bar);
else
g_signal_connect (priv->entry, "key-press-event",
G_CALLBACK (entry_key_pressed_event_cb), bar);
}
gtk_search_bar_set_entry (bar, entry);
}
/**
+1 -1
View File
@@ -1093,7 +1093,7 @@ gtk_spin_button_realize (GtkWidget *widget)
attributes.event_mask = gtk_widget_get_events (widget);
attributes.event_mask |= GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK
| GDK_BUTTON_RELEASE_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_ENTER_NOTIFY_MASK
| GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK;
| GDK_POINTER_MOTION_MASK;
attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL;
-1
View File
@@ -487,7 +487,6 @@ gtk_switch_realize (GtkWidget *widget)
attributes.event_mask |= (GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK |
GDK_BUTTON1_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK |
GDK_POINTER_MOTION_MASK |
GDK_ENTER_NOTIFY_MASK |
GDK_LEAVE_NOTIFY_MASK);
+14 -18
View File
@@ -3626,40 +3626,36 @@ static void
update_selection_clipboards (GtkTextBuffer *buffer)
{
GtkTextBufferPrivate *priv;
GSList *tmp_list = buffer->priv->selection_clipboards;
gboolean has_selection;
GtkTextIter start;
GtkTextIter end;
GSList *tmp_list;
priv = buffer->priv;
gtk_text_buffer_get_copy_target_list (buffer);
has_selection = gtk_text_buffer_get_selection_bounds (buffer, &start, &end);
tmp_list = buffer->priv->selection_clipboards;
while (tmp_list)
{
GtkTextIter start;
GtkTextIter end;
SelectionClipboard *selection_clipboard = tmp_list->data;
GtkClipboard *clipboard = selection_clipboard->clipboard;
/* Determine whether we have a selection and adjust X selection
* accordingly.
*/
if (!gtk_text_buffer_get_selection_bounds (buffer, &start, &end))
{
if (gtk_clipboard_get_owner (clipboard) == G_OBJECT (buffer))
gtk_clipboard_clear (clipboard);
}
else
{
/* Even if we already have the selection, we need to update our
* timestamp.
*/
if (has_selection)
{
/* Even if we already have the selection, we need to update our
* timestamp.
*/
gtk_clipboard_set_with_owner (clipboard,
priv->copy_target_entries,
priv->n_copy_target_entries,
clipboard_get_selection_cb,
clipboard_clear_selection_cb,
G_OBJECT (buffer));
}
}
else if (gtk_clipboard_get_owner (clipboard) == G_OBJECT (buffer))
gtk_clipboard_clear (clipboard);
tmp_list = tmp_list->next;
}
+6 -6
View File
@@ -534,7 +534,7 @@ gtk_text_tag_class_init (GtkTextTagClass *klass)
* color may be applied instead of the foreground. Setting this property
* will always override those defaults.
*
* Since: 3.18
* Since: 3.16
*/
g_object_class_install_property (object_class,
PROP_UNDERLINE_RGBA,
@@ -550,13 +550,13 @@ gtk_text_tag_class_init (GtkTextTagClass *klass)
* This property modifies the color of strikeouts. If not set, strikeouts
* will use the forground color.
*
* Since: 3.18
* Since: 3.16
*/
g_object_class_install_property (object_class,
PROP_STRIKETHROUGH_RGBA,
g_param_spec_boxed ("strikethrough-rgba",
P_("Strike-through RGBA"),
P_("Color of strike-through for this text"),
P_("Strikethrough RGBA"),
P_("Color of strikethrough for this text"),
GDK_TYPE_RGBA,
GTK_PARAM_READWRITE));
@@ -792,7 +792,7 @@ gtk_text_tag_class_init (GtkTextTagClass *klass)
*
* If the #GtkTextTag:underline-rgba property has been set.
*
* Since: 3.18
* Since: 3.16
*/
ADD_SET_PROP ("underline-rgba-set", PROP_UNDERLINE_RGBA_SET,
P_("Underline RGBA set"),
@@ -803,7 +803,7 @@ gtk_text_tag_class_init (GtkTextTagClass *klass)
*
* If the #GtkTextTag:strikethrough-rgba property has been set.
*
* Since: 3.18
* Since: 3.16
*/
ADD_SET_PROP ("strikethrough-rgba-set", PROP_STRIKETHROUGH_RGBA_SET,
P_("Strikethrough RGBA set"),
+10 -11
View File
@@ -5992,7 +5992,7 @@ gtk_text_view_move_cursor (GtkTextView *text_view,
gtk_text_view_move_viewport (text_view, scroll_step, count);
if ((old_xpos == gtk_adjustment_get_target_value (priv->hadjustment) &&
old_ypos == gtk_adjustment_get_target_value (priv->vadjustment)) &&
leave_direction != -1 &&
leave_direction != (GtkDirectionType)-1 &&
!gtk_widget_keynav_failed (GTK_WIDGET (text_view),
leave_direction))
{
@@ -6165,7 +6165,7 @@ gtk_text_view_move_cursor (GtkTextView *text_view,
if (step == GTK_MOVEMENT_DISPLAY_LINES)
gtk_text_view_set_virtual_cursor_pos (text_view, cursor_x_pos, -1);
}
else if (leave_direction != -1)
else if (leave_direction != (GtkDirectionType)-1)
{
if (!gtk_widget_keynav_failed (GTK_WIDGET (text_view),
leave_direction))
@@ -9421,15 +9421,14 @@ text_window_realize (GtkTextWindow *win,
attributes.y = 0;
attributes.width = win->allocation.width;
attributes.height = win->allocation.height;
attributes.event_mask = (GDK_EXPOSURE_MASK |
GDK_SCROLL_MASK |
GDK_SMOOTH_SCROLL_MASK |
GDK_KEY_PRESS_MASK |
GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK |
GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK |
gtk_widget_get_events (win->widget));
attributes.event_mask = gtk_widget_get_events (win->widget)
| GDK_EXPOSURE_MASK
| GDK_SCROLL_MASK
| GDK_SMOOTH_SCROLL_MASK
| GDK_KEY_PRESS_MASK
| GDK_BUTTON_PRESS_MASK
| GDK_BUTTON_RELEASE_MASK
| GDK_POINTER_MOTION_MASK;
win->bin_window = gdk_window_new (win->window,
&attributes,
+1 -1
View File
@@ -904,7 +904,7 @@ gtk_tooltip_set_last_window (GtkTooltip *tooltip,
tooltip->last_window = window;
if (window)
if (tooltip->last_window)
g_object_add_weak_pointer (G_OBJECT (tooltip->last_window),
(gpointer *) &tooltip->last_window);
+1
View File
@@ -2124,6 +2124,7 @@ gtk_tree_view_destroy (GtkWidget *widget)
GList *list;
gtk_tree_view_stop_editing (tree_view, TRUE);
gtk_tree_view_stop_rubber_band (tree_view);
if (tree_view->priv->columns != NULL)
{
-1
View File
@@ -1360,7 +1360,6 @@ _gtk_tree_view_column_realize_button (GtkTreeViewColumn *column)
(GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK |
GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK |
GDK_KEY_PRESS_MASK);
attributes_mask = GDK_WA_CURSOR | GDK_WA_X | GDK_WA_Y;
attr.cursor = gdk_cursor_new_for_display
+7 -5
View File
@@ -15260,14 +15260,12 @@ gtk_widget_real_set_has_tooltip (GtkWidget *widget,
gdk_window_set_events (priv->window,
gdk_window_get_events (priv->window) |
GDK_LEAVE_NOTIFY_MASK |
GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK);
GDK_POINTER_MOTION_MASK);
if (gtk_widget_get_has_window (widget))
gtk_widget_add_events (widget,
GDK_LEAVE_NOTIFY_MASK |
GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK);
GDK_POINTER_MOTION_MASK);
}
g_object_set_qdata (G_OBJECT (widget), quark_has_tooltip,
@@ -16402,14 +16400,18 @@ gtk_widget_get_path (GtkWidget *widget)
}
void
_gtk_widget_style_context_invalidated (GtkWidget *widget)
gtk_widget_clear_path (GtkWidget *widget)
{
if (widget->priv->path)
{
gtk_widget_path_free (widget->priv->path);
widget->priv->path = NULL;
}
}
void
_gtk_widget_style_context_invalidated (GtkWidget *widget)
{
if (gtk_widget_get_realized (widget))
g_signal_emit (widget, widget_signals[STYLE_UPDATED], 0);
else
+2 -2
View File
@@ -497,8 +497,8 @@ gtk_widget_path_iter_get_siblings (const GtkWidgetPath *path,
{
GtkPathElement *elem;
g_return_val_if_fail (path != NULL, G_TYPE_INVALID);
g_return_val_if_fail (path->elems->len != 0, G_TYPE_INVALID);
g_return_val_if_fail (path != NULL, NULL);
g_return_val_if_fail (path->elems->len != 0, NULL);
if (pos < 0 || pos >= path->elems->len)
pos = path->elems->len - 1;
+1
View File
@@ -148,6 +148,7 @@ gboolean _gtk_widget_captured_event (GtkWidget *widget,
GdkEvent *event);
GtkWidgetPath * _gtk_widget_create_path (GtkWidget *widget);
void gtk_widget_clear_path (GtkWidget *widget);
void _gtk_widget_invalidate_style_context (GtkWidget *widget,
GtkCssChange change);
void _gtk_widget_style_context_invalidated (GtkWidget *widget);
+48 -40
View File
@@ -227,8 +227,7 @@ struct _GtkWindowPrivate
guint gravity : 5; /* GdkGravity */
guint csd_requested : 1;
guint client_decorated : 1; /* Decorations drawn client-side */
guint custom_title : 1; /* app-provided titlebar if CSD can't
* be enabled */
guint use_client_shadow : 1; /* Decorations use client-side shadows */
guint maximized : 1;
guint fullscreen : 1;
guint tiled : 1;
@@ -3947,7 +3946,7 @@ unset_titlebar (GtkWindow *window)
}
static gboolean
gtk_window_supports_csd (GtkWindow *window)
gtk_window_supports_client_shadow (GtkWindow *window)
{
GtkWidget *widget = GTK_WIDGET (window);
@@ -3997,13 +3996,21 @@ gtk_window_enable_csd (GtkWindow *window)
GtkWidget *widget = GTK_WIDGET (window);
GdkVisual *visual;
/* We need a visual with alpha */
visual = gdk_screen_get_rgba_visual (gtk_widget_get_screen (widget));
g_assert (visual != NULL);
gtk_widget_set_visual (widget, visual);
/* We need a visual with alpha for client shadows */
if (priv->use_client_shadow)
{
visual = gdk_screen_get_rgba_visual (gtk_widget_get_screen (widget));
if (visual != NULL)
gtk_widget_set_visual (widget, visual);
gtk_style_context_add_class (gtk_widget_get_style_context (widget), GTK_STYLE_CLASS_CSD);
}
else
{
gtk_style_context_add_class (gtk_widget_get_style_context (widget), "solid-csd");
}
priv->client_decorated = TRUE;
gtk_style_context_add_class (gtk_widget_get_style_context (widget), GTK_STYLE_CLASS_CSD);
}
static void
@@ -4038,7 +4045,6 @@ gtk_window_set_titlebar (GtkWindow *window,
{
GtkWidget *widget = GTK_WIDGET (window);
GtkWindowPrivate *priv = window->priv;
GdkVisual *visual;
gboolean was_mapped;
g_return_if_fail (GTK_IS_WINDOW (window));
@@ -4059,18 +4065,15 @@ gtk_window_set_titlebar (GtkWindow *window,
if (titlebar == NULL)
{
priv->custom_title = FALSE;
priv->client_decorated = FALSE;
gtk_style_context_remove_class (gtk_widget_get_style_context (widget), GTK_STYLE_CLASS_CSD);
goto out;
}
if (gtk_window_supports_csd (window))
gtk_window_enable_csd (window);
else
priv->custom_title = TRUE;
priv->use_client_shadow = gtk_window_supports_client_shadow (window);
gtk_window_enable_csd (window);
priv->title_box = titlebar;
gtk_widget_set_parent (priv->title_box, widget);
if (GTK_IS_HEADER_BAR (titlebar))
@@ -4080,10 +4083,6 @@ gtk_window_set_titlebar (GtkWindow *window,
on_titlebar_title_notify (GTK_HEADER_BAR (titlebar), NULL, window);
}
visual = gdk_screen_get_rgba_visual (gtk_widget_get_screen (widget));
if (visual)
gtk_widget_set_visual (widget, visual);
gtk_style_context_add_class (gtk_widget_get_style_context (titlebar),
GTK_STYLE_CLASS_TITLEBAR);
@@ -4171,8 +4170,6 @@ gtk_window_set_decorated (GtkWindow *window,
{
if (priv->client_decorated)
gdk_window_set_decorations (gdk_window, 0);
else if (priv->custom_title)
gdk_window_set_decorations (gdk_window, GDK_DECOR_BORDER);
else
gdk_window_set_decorations (gdk_window, GDK_DECOR_ALL);
}
@@ -5809,7 +5806,8 @@ create_decoration (GtkWidget *widget)
GtkWindow *window = GTK_WINDOW (widget);
GtkWindowPrivate *priv = window->priv;
if (!gtk_window_supports_csd (window))
priv->use_client_shadow = gtk_window_supports_client_shadow (window);
if (!priv->use_client_shadow)
return;
gtk_window_enable_csd (window);
@@ -6626,7 +6624,7 @@ update_border_windows (GtkWindow *window)
border.right + handle, border.top + handle);
gdk_window_move_resize (priv->border_window[GDK_WINDOW_EDGE_SOUTH_WEST],
window_border.left - border.left, window_border.top + height - handle,
window_border.left + handle, border.bottom + handle);
border.left + handle, border.bottom + handle);
gdk_window_move_resize (priv->border_window[GDK_WINDOW_EDGE_SOUTH_EAST],
window_border.left + width - handle, window_border.top + height - handle,
border.right + handle, border.bottom + handle);
@@ -6892,7 +6890,7 @@ update_realized_window_properties (GtkWindow *window,
{
GtkWindowPrivate *priv = window->priv;
if (priv->client_decorated)
if (priv->client_decorated && priv->use_client_shadow)
update_shadow_width (window, window_border);
update_opaque_region (window, window_border, child_allocation);
@@ -7035,8 +7033,7 @@ gtk_window_realize (GtkWidget *widget)
GDK_FOCUS_CHANGE_MASK |
GDK_STRUCTURE_MASK);
if (priv->decorated &&
(priv->client_decorated || priv->custom_title))
if (priv->decorated && priv->client_decorated)
attributes.event_mask |= GDK_POINTER_MOTION_MASK;
attributes.type_hint = priv->type_hint;
@@ -7111,8 +7108,6 @@ gtk_window_realize (GtkWidget *widget)
if (!priv->decorated || priv->client_decorated)
gdk_window_set_decorations (gdk_window, 0);
else if (priv->custom_title)
gdk_window_set_decorations (gdk_window, GDK_DECOR_BORDER);
if (!priv->deletable)
gdk_window_set_functions (gdk_window, GDK_FUNC_ALL | GDK_FUNC_CLOSE);
@@ -9689,18 +9684,31 @@ gtk_window_draw (GtkWidget *widget,
add_window_frame_style_class (context);
gtk_render_background (context, cr,
window_border.left, window_border.top,
allocation.width -
(window_border.left + window_border.right),
allocation.height -
(window_border.top + window_border.bottom));
gtk_render_frame (context, cr,
window_border.left, window_border.top,
allocation.width -
(window_border.left + window_border.right),
allocation.height -
(window_border.top + window_border.bottom));
if (priv->use_client_shadow)
{
gtk_render_background (context, cr,
window_border.left, window_border.top,
allocation.width -
(window_border.left + window_border.right),
allocation.height -
(window_border.top + window_border.bottom));
gtk_render_frame (context, cr,
window_border.left, window_border.top,
allocation.width -
(window_border.left + window_border.right),
allocation.height -
(window_border.top + window_border.bottom));
}
else
{
gtk_render_background (context, cr, 0, 0,
allocation.width,
allocation.height);
gtk_render_frame (context, cr, 0, 0,
allocation.width,
allocation.height);
}
gtk_style_context_restore (context);
}
@@ -10466,7 +10474,7 @@ gtk_window_set_screen (GtkWindow *window,
}
g_object_notify (G_OBJECT (window), "screen");
if (was_rgba)
if (was_rgba && priv->use_client_shadow)
{
GdkVisual *visual;
+1 -1
View File
@@ -354,7 +354,7 @@ update_info (gpointer data)
frame = gdk_frame_clock_get_frame_counter (clock);
frame_time = gdk_frame_clock_get_frame_time (clock);
tmp = g_strdup_printf ("%ld", frame);
tmp = g_strdup_printf ("%"G_GINT64_FORMAT, frame);
gtk_label_set_label (GTK_LABEL (sl->priv->framecount), tmp);
g_free (tmp);
-1
View File
@@ -46,7 +46,6 @@ $backdrop_bg_color: $bg_color;
$backdrop_fg_color: mix($fg_color, $backdrop_bg_color, 50%);
$backdrop_insensitive_color: if($variant == 'light', darken($backdrop_bg_color, 15%), lighten($backdrop_bg_color, 15%));
$backdrop_selected_fg_color: $selected_fg_color;
$backdrop_selected_bg_color: desaturate($selected_bg_color,100%);
$backdrop_borders_color: mix($borders_color, $bg_color, 90%);
$backdrop_dark_fill: mix($backdrop_borders_color, $backdrop_bg_color, 35%);
$backdrop_sidebar_bg_color: lighten($backdrop_bg_color,5%);
+10 -6
View File
@@ -308,7 +308,7 @@ GtkTextView { // This will get overridden by .view, needed by gedit line numbers
@extend %linked_vertical;
&:focus {
border-color: entry_focus_border($selected_bg_color);
box-shadow: entry_focus_glow($selected_bg_color),
box-shadow: entry_focus_shadow($selected_bg_color),
0 -1px 0 0 entry_focus_border($selected_bg_color);
@extend %linked_vertical;
}
@@ -353,7 +353,7 @@ GtkTextView { // This will get overridden by .view, needed by gedit line numbers
box-shadow: _widget_edge();
&:focus {
border-color: entry_focus_border($selected_bg_color);
box-shadow: entry_focus_glow($selected_bg_color),
box-shadow: entry_focus_shadow($selected_bg_color),
0 -1px 0 0 entry_focus_border($selected_bg_color),
_widget_edge();
@extend %linked_vertical:last-child;
@@ -3227,6 +3227,13 @@ GtkVolumeButton.button { padding: 8px; }
0 0 0 1px transparentize($_wm_border,0.1);
}
}
&.solid-csd {
border-radius: 0;
margin: 4px;
background-color: $backdrop_bg_color;
border: solid 1px $backdrop_borders_color;
box-shadow: none;
}
}
// Window Close button
@@ -3254,10 +3261,7 @@ GtkVolumeButton.button { padding: 8px; }
@if $variant == 'light' {
outline-color: transparentize($selected_fg_color, 0.7);
}
&:backdrop {
color: $backdrop_selected_fg_color;
background-color: $backdrop_selected_bg_color;
}
&:backdrop { color: $backdrop_selected_fg_color; }
}
/* Decouple the font of context menus from their entry/textview */
+5 -7
View File
@@ -24,10 +24,8 @@
@else { @return if($fc==$selected_bg_color, $selected_borders_color, darken($fc,35%)); }
}
@function entry_focus_glow($fc) {
$_focus_glow_color: if($variant=='light', transparentize($fc,0.85),
transparentize($fc,0.3));
@return inset 0 0 0 1px $_focus_glow_color;
@function entry_focus_shadow($fc) {
@return inset 0 0 0 1px $fc;
}
@function entry_gradient($c) {
@@ -63,13 +61,13 @@
color: $text_color;
border-color: $borders_color;
@include _shadows($_inner_shadows,
entry_focus_glow(transparentize($fc,1)),
entry_focus_shadow(transparentize($fc,1)),
$_entry_edge);
// the second transparent shadow is needed for the transition to work
}
@if $t==focus {
@include _shadows($_inner_shadows,
entry_focus_glow($fc),
entry_focus_shadow($fc),
$_entry_edge);
border-color: entry_focus_border($fc);
}
@@ -106,7 +104,7 @@
border-color: $selected_bg_color;
background-image: linear-gradient(to bottom, transparentize(opacify($osd_borders_color, 1), 0.5));
background-clip: padding-box;
box-shadow: entry_focus_glow($selected_bg_color);
box-shadow: entry_focus_shadow($selected_bg_color);
text-shadow: 0 1px black;
icon-shadow: 0 1px black;
}
+157 -69
View File
@@ -178,7 +178,7 @@ GtkTextView {
.entry:focus {
background-color: transparent;
background-image: linear-gradient(to bottom, #212121, #292929 90%);
box-shadow: inset 0 3px rgba(0, 0, 0, 0.02), inset 0 2px rgba(0, 0, 0, 0.03), inset 0 1px rgba(0, 0, 0, 0.08), inset 0 0 0 1px rgba(33, 93, 156, 0.7), 0 1px rgba(238, 238, 236, 0.1);
box-shadow: inset 0 3px rgba(0, 0, 0, 0.02), inset 0 2px rgba(0, 0, 0, 0.03), inset 0 1px rgba(0, 0, 0, 0.08), inset 0 0 0 1px #215d9c, 0 1px rgba(238, 238, 236, 0.1);
border-color: #0f2b48; }
.entry:insensitive {
background-color: transparent;
@@ -231,7 +231,7 @@ GtkTextView {
.entry.error:focus {
background-color: transparent;
background-image: linear-gradient(to bottom, #212121, #292929 90%);
box-shadow: inset 0 3px rgba(0, 0, 0, 0.02), inset 0 2px rgba(0, 0, 0, 0.03), inset 0 1px rgba(0, 0, 0, 0.08), inset 0 0 0 1px rgba(204, 0, 0, 0.7), 0 1px rgba(238, 238, 236, 0.1);
box-shadow: inset 0 3px rgba(0, 0, 0, 0.02), inset 0 2px rgba(0, 0, 0, 0.03), inset 0 1px rgba(0, 0, 0, 0.08), inset 0 0 0 1px #cc0000, 0 1px rgba(238, 238, 236, 0.1);
border-color: #1a0000; }
.entry.error:selected, .entry.error:selected:focus {
background-color: #cc0000; }
@@ -241,7 +241,7 @@ GtkTextView {
.entry.warning:focus {
background-color: transparent;
background-image: linear-gradient(to bottom, #212121, #292929 90%);
box-shadow: inset 0 3px rgba(0, 0, 0, 0.02), inset 0 2px rgba(0, 0, 0, 0.03), inset 0 1px rgba(0, 0, 0, 0.08), inset 0 0 0 1px rgba(245, 121, 0, 0.7), 0 1px rgba(238, 238, 236, 0.1);
box-shadow: inset 0 3px rgba(0, 0, 0, 0.02), inset 0 2px rgba(0, 0, 0, 0.03), inset 0 1px rgba(0, 0, 0, 0.08), inset 0 0 0 1px #f57900, 0 1px rgba(238, 238, 236, 0.1);
border-color: #432100; }
.entry.warning:selected, .entry.warning:selected:focus {
background-color: #f57900; }
@@ -264,7 +264,7 @@ GtkTextView {
box-shadow: none; }
.linked.vertical > .entry:focus {
border-color: #0f2b48;
box-shadow: inset 0 0 0 1px rgba(33, 93, 156, 0.7), 0 -1px 0 0 #0f2b48; }
box-shadow: inset 0 0 0 1px #215d9c, 0 -1px 0 0 #0f2b48; }
.linked.vertical > .entry:insensitive {
background-color: transparent;
background-image: linear-gradient(to bottom, #212121, #292929 90%);
@@ -299,7 +299,7 @@ GtkTextView {
.linked.vertical > .entry:first-child:focus {
background-color: transparent;
background-image: linear-gradient(to bottom, #212121, #292929 90%);
box-shadow: inset 0 3px rgba(0, 0, 0, 0.02), inset 0 2px rgba(0, 0, 0, 0.03), inset 0 1px rgba(0, 0, 0, 0.08), inset 0 0 0 1px rgba(33, 93, 156, 0.7);
box-shadow: inset 0 3px rgba(0, 0, 0, 0.02), inset 0 2px rgba(0, 0, 0, 0.03), inset 0 1px rgba(0, 0, 0, 0.08), inset 0 0 0 1px #215d9c;
border-color: #0f2b48; }
.linked.vertical > .entry:first-child:insensitive {
background-color: transparent;
@@ -336,7 +336,7 @@ GtkTextView {
box-shadow: 0 1px rgba(238, 238, 236, 0.1); }
.linked.vertical > .entry:last-child:focus {
border-color: #0f2b48;
box-shadow: inset 0 0 0 1px rgba(33, 93, 156, 0.7), 0 -1px 0 0 #0f2b48, 0 1px rgba(238, 238, 236, 0.1); }
box-shadow: inset 0 0 0 1px #215d9c, 0 -1px 0 0 #0f2b48, 0 1px rgba(238, 238, 236, 0.1); }
.linked.vertical > .entry:last-child:insensitive {
background-color: transparent;
background-image: linear-gradient(to bottom, #212121, #292929 90%);
@@ -375,7 +375,7 @@ GtkTextView {
border-color: #215d9c;
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5));
background-clip: padding-box;
box-shadow: inset 0 0 0 1px rgba(33, 93, 156, 0.7);
box-shadow: inset 0 0 0 1px #215d9c;
text-shadow: 0 1px black;
icon-shadow: 0 1px black; }
.osd .entry:backdrop {
@@ -482,7 +482,8 @@ GtkTextView {
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(238, 238, 236, 0); }
.button:backdrop:insensitive > .label, .button.flat:backdrop:insensitive > .label, .header-bar .titlebutton.button:backdrop:insensitive > .label,
.button:backdrop:insensitive > .label, .header-bar .button.titlebutton:backdrop:insensitive > .label,
.titlebar .button.titlebutton:backdrop:insensitive > .label, .button.flat:backdrop:insensitive > .label, .header-bar .titlebutton.button:backdrop:insensitive > .label,
.titlebar .titlebutton.button:backdrop:insensitive > .label {
color: inherit; }
.button:backdrop:insensitive:active, .button:backdrop:insensitive:checked, .button.flat:backdrop:insensitive:active, .header-bar .titlebutton.button:backdrop:insensitive:active,
@@ -492,7 +493,9 @@ GtkTextView {
border-color: #1e2222;
background-image: linear-gradient(to bottom, #262929);
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(238, 238, 236, 0); }
.button:backdrop:insensitive:active > .label, .button:backdrop:insensitive:checked > .label, .button.flat:backdrop:insensitive:active > .label, .header-bar .titlebutton.button:backdrop:insensitive:active > .label,
.button:backdrop:insensitive:active > .label, .header-bar .button.titlebutton:backdrop:insensitive:active > .label,
.titlebar .button.titlebutton:backdrop:insensitive:active > .label, .button:backdrop:insensitive:checked > .label, .header-bar .button.titlebutton:backdrop:insensitive:checked > .label,
.titlebar .button.titlebutton:backdrop:insensitive:checked > .label, .button.flat:backdrop:insensitive:active > .label, .header-bar .titlebutton.button:backdrop:insensitive:active > .label,
.titlebar .titlebutton.button:backdrop:insensitive:active > .label, .button.flat:backdrop:insensitive:checked > .label, .header-bar .titlebutton.button:backdrop:insensitive:checked > .label,
.titlebar .titlebutton.button:backdrop:insensitive:checked > .label {
color: inherit; }
@@ -514,14 +517,17 @@ GtkTextView {
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(238, 238, 236, 0.1); }
.button:insensitive > .label {
.button:insensitive > .label, .header-bar .button.titlebutton:insensitive > .label,
.titlebar .button.titlebutton:insensitive > .label {
color: inherit; }
.button:insensitive:active, .button:insensitive:checked {
color: #939695;
border-color: #1c1f1f;
background-image: linear-gradient(to bottom, #2f3333, #323636);
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(238, 238, 236, 0.1); }
.button:insensitive:active > .label, .button:insensitive:checked > .label {
.button:insensitive:active > .label, .header-bar .button.titlebutton:insensitive:active > .label,
.titlebar .button.titlebutton:insensitive:active > .label, .button:insensitive:checked > .label, .header-bar .button.titlebutton:insensitive:checked > .label,
.titlebar .button.titlebutton:insensitive:checked > .label {
color: inherit; }
.button.osd, .header-bar .osd.button.titlebutton,
.titlebar .osd.button.titlebutton {
@@ -763,7 +769,8 @@ GtkTextView {
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(238, 238, 236, 0); }
.button.suggested-action:backdrop:insensitive > .label, .button.suggested-action.flat:backdrop:insensitive > .label, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive > .label,
.button.suggested-action:backdrop:insensitive > .label, .header-bar .suggested-action.button.titlebutton:backdrop:insensitive > .label,
.titlebar .suggested-action.button.titlebutton:backdrop:insensitive > .label, .button.suggested-action.flat:backdrop:insensitive > .label, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive > .label,
.titlebar .suggested-action.titlebutton.button:backdrop:insensitive > .label {
color: inherit; }
.button.suggested-action:backdrop:insensitive:active, .button.suggested-action:backdrop:insensitive:checked, .button.suggested-action.flat:backdrop:insensitive:active, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive:active,
@@ -773,7 +780,9 @@ GtkTextView {
border-color: #0b1e33;
background-image: linear-gradient(to bottom, #1d4876);
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(238, 238, 236, 0); }
.button.suggested-action:backdrop:insensitive:active > .label, .button.suggested-action:backdrop:insensitive:checked > .label, .button.suggested-action.flat:backdrop:insensitive:active > .label, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive:active > .label,
.button.suggested-action:backdrop:insensitive:active > .label, .header-bar .suggested-action.button.titlebutton:backdrop:insensitive:active > .label,
.titlebar .suggested-action.button.titlebutton:backdrop:insensitive:active > .label, .button.suggested-action:backdrop:insensitive:checked > .label, .header-bar .suggested-action.button.titlebutton:backdrop:insensitive:checked > .label,
.titlebar .suggested-action.button.titlebutton:backdrop:insensitive:checked > .label, .button.suggested-action.flat:backdrop:insensitive:active > .label, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive:active > .label,
.titlebar .suggested-action.titlebutton.button:backdrop:insensitive:active > .label, .button.suggested-action.flat:backdrop:insensitive:checked > .label, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive:checked > .label,
.titlebar .suggested-action.titlebutton.button:backdrop:insensitive:checked > .label {
color: inherit; }
@@ -795,14 +804,17 @@ GtkTextView {
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(238, 238, 236, 0.1); }
.button.suggested-action:insensitive > .label {
.button.suggested-action:insensitive > .label, .header-bar .suggested-action.button.titlebutton:insensitive > .label,
.titlebar .suggested-action.button.titlebutton:insensitive > .label {
color: inherit; }
.button.suggested-action:insensitive:active, .button.suggested-action:insensitive:checked {
color: #a4b5c8;
border-color: #0b1e33;
background-image: linear-gradient(to bottom, #1b436f, #1d4876);
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(238, 238, 236, 0.1); }
.button.suggested-action:insensitive:active > .label, .button.suggested-action:insensitive:checked > .label {
.button.suggested-action:insensitive:active > .label, .header-bar .suggested-action.button.titlebutton:insensitive:active > .label,
.titlebar .suggested-action.button.titlebutton:insensitive:active > .label, .button.suggested-action:insensitive:checked > .label, .header-bar .suggested-action.button.titlebutton:insensitive:checked > .label,
.titlebar .suggested-action.button.titlebutton:insensitive:checked > .label {
color: inherit; }
.osd .button.suggested-action {
color: #eeeeec;
@@ -904,7 +916,8 @@ GtkTextView {
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(238, 238, 236, 0); }
.button.destructive-action:backdrop:insensitive > .label, .button.destructive-action.flat:backdrop:insensitive > .label, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive > .label,
.button.destructive-action:backdrop:insensitive > .label, .header-bar .destructive-action.button.titlebutton:backdrop:insensitive > .label,
.titlebar .destructive-action.button.titlebutton:backdrop:insensitive > .label, .button.destructive-action.flat:backdrop:insensitive > .label, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive > .label,
.titlebar .destructive-action.titlebutton.button:backdrop:insensitive > .label {
color: inherit; }
.button.destructive-action:backdrop:insensitive:active, .button.destructive-action:backdrop:insensitive:checked, .button.destructive-action.flat:backdrop:insensitive:active, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive:active,
@@ -914,7 +927,9 @@ GtkTextView {
border-color: #5e0707;
background-image: linear-gradient(to bottom, #a41111);
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(238, 238, 236, 0); }
.button.destructive-action:backdrop:insensitive:active > .label, .button.destructive-action:backdrop:insensitive:checked > .label, .button.destructive-action.flat:backdrop:insensitive:active > .label, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive:active > .label,
.button.destructive-action:backdrop:insensitive:active > .label, .header-bar .destructive-action.button.titlebutton:backdrop:insensitive:active > .label,
.titlebar .destructive-action.button.titlebutton:backdrop:insensitive:active > .label, .button.destructive-action:backdrop:insensitive:checked > .label, .header-bar .destructive-action.button.titlebutton:backdrop:insensitive:checked > .label,
.titlebar .destructive-action.button.titlebutton:backdrop:insensitive:checked > .label, .button.destructive-action.flat:backdrop:insensitive:active > .label, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive:active > .label,
.titlebar .destructive-action.titlebutton.button:backdrop:insensitive:active > .label, .button.destructive-action.flat:backdrop:insensitive:checked > .label, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive:checked > .label,
.titlebar .destructive-action.titlebutton.button:backdrop:insensitive:checked > .label {
color: inherit; }
@@ -936,14 +951,17 @@ GtkTextView {
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(238, 238, 236, 0.1); }
.button.destructive-action:insensitive > .label {
.button.destructive-action:insensitive > .label, .header-bar .destructive-action.button.titlebutton:insensitive > .label,
.titlebar .destructive-action.button.titlebutton:insensitive > .label {
color: inherit; }
.button.destructive-action:insensitive:active, .button.destructive-action:insensitive:checked {
color: #da9f9f;
border-color: #5e0707;
background-image: linear-gradient(to bottom, #9d1010, #a41111);
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(238, 238, 236, 0.1); }
.button.destructive-action:insensitive:active > .label, .button.destructive-action:insensitive:checked > .label {
.button.destructive-action:insensitive:active > .label, .header-bar .destructive-action.button.titlebutton:insensitive:active > .label,
.titlebar .destructive-action.button.titlebutton:insensitive:active > .label, .button.destructive-action:insensitive:checked > .label, .header-bar .destructive-action.button.titlebutton:insensitive:checked > .label,
.titlebar .destructive-action.button.titlebutton:insensitive:checked > .label {
color: inherit; }
.osd .button.destructive-action {
color: #eeeeec;
@@ -1016,7 +1034,8 @@ GtkTextView {
padding-right: 6px;
padding-top: 3px;
padding-bottom: 3px; }
.stack-switcher > .button.text-button {
.stack-switcher > .button.text-button, .header-bar .stack-switcher > .text-button.button.titlebutton,
.titlebar .stack-switcher > .text-button.button.titlebutton {
padding: 5px 10px 6px; }
.stack-switcher > .button.image-button, .header-bar .stack-switcher > .titlebutton.button,
.titlebar .stack-switcher > .titlebutton.button {
@@ -1055,7 +1074,8 @@ GtkTextView {
text-shadow: 0 -1px rgba(0, 0, 0, 0.81176);
icon-shadow: 0 -1px rgba(0, 0, 0, 0.81176);
box-shadow: inset 0 1px rgba(255, 255, 255, 0.1), 0 1px rgba(238, 238, 236, 0.1); }
.inline-toolbar GtkToolButton > .button:hover {
.inline-toolbar GtkToolButton > .button:hover, .inline-toolbar .header-bar GtkToolButton > .button.titlebutton:hover,
.inline-toolbar .titlebar GtkToolButton > .button.titlebutton:hover {
color: #eeeeec;
outline-color: rgba(238, 238, 236, 0.3);
border-color: #1c1f1f;
@@ -1063,7 +1083,9 @@ GtkTextView {
text-shadow: 0 -1px rgba(0, 0, 0, 0.77976);
icon-shadow: 0 -1px rgba(0, 0, 0, 0.77976);
box-shadow: inset 0 1px rgba(255, 255, 255, 0.1), 0 1px rgba(238, 238, 236, 0.1); }
.inline-toolbar GtkToolButton > .button:active, .inline-toolbar GtkToolButton > .button:checked {
.inline-toolbar GtkToolButton > .button:active, .inline-toolbar .header-bar GtkToolButton > .button.titlebutton:active,
.inline-toolbar .titlebar GtkToolButton > .button.titlebutton:active, .inline-toolbar GtkToolButton > .button:checked, .inline-toolbar .header-bar GtkToolButton > .button.titlebutton:checked,
.inline-toolbar .titlebar GtkToolButton > .button.titlebutton:checked {
color: #eeeeec;
outline-color: rgba(238, 238, 236, 0.3);
border-color: #1c1f1f;
@@ -1071,7 +1093,8 @@ GtkTextView {
text-shadow: 0 -1px rgba(0, 0, 0, 0.89176);
icon-shadow: 0 -1px rgba(0, 0, 0, 0.89176);
box-shadow: inset 0 1px rgba(0, 0, 0, 0.07), inset 0 2px 1px -2px rgba(0, 0, 0, 0.6), 0 1px rgba(238, 238, 236, 0.1); }
.inline-toolbar GtkToolButton > .button:insensitive {
.inline-toolbar GtkToolButton > .button:insensitive, .inline-toolbar .header-bar GtkToolButton > .button.titlebutton:insensitive,
.inline-toolbar .titlebar GtkToolButton > .button.titlebutton:insensitive {
color: #939695;
border-color: #1c1f1f;
background-image: linear-gradient(to bottom, #323636);
@@ -1080,26 +1103,32 @@ GtkTextView {
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(238, 238, 236, 0.1); }
.inline-toolbar GtkToolButton > .button:insensitive > .label {
color: inherit; }
.inline-toolbar GtkToolButton > .button:insensitive:active, .inline-toolbar GtkToolButton > .button:insensitive:checked {
.inline-toolbar GtkToolButton > .button:insensitive:active, .inline-toolbar .header-bar GtkToolButton > .button.titlebutton:insensitive:active,
.inline-toolbar .titlebar GtkToolButton > .button.titlebutton:insensitive:active, .inline-toolbar GtkToolButton > .button:insensitive:checked, .inline-toolbar .header-bar GtkToolButton > .button.titlebutton:insensitive:checked,
.inline-toolbar .titlebar GtkToolButton > .button.titlebutton:insensitive:checked {
color: #939695;
border-color: #1c1f1f;
background-image: linear-gradient(to bottom, #2f3333, #323636);
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(238, 238, 236, 0.1); }
.inline-toolbar GtkToolButton > .button:insensitive:active > .label, .inline-toolbar GtkToolButton > .button:insensitive:checked > .label {
color: inherit; }
.inline-toolbar GtkToolButton > .button:backdrop {
.inline-toolbar GtkToolButton > .button:backdrop, .inline-toolbar .header-bar GtkToolButton > .button.titlebutton:backdrop,
.inline-toolbar .titlebar GtkToolButton > .button.titlebutton:backdrop {
color: #939695;
border-color: #1e2222;
background-image: linear-gradient(to bottom, #393f3f);
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(238, 238, 236, 0); }
.inline-toolbar GtkToolButton > .button:backdrop:active, .inline-toolbar GtkToolButton > .button:backdrop:checked {
.inline-toolbar GtkToolButton > .button:backdrop:active, .inline-toolbar .header-bar GtkToolButton > .button.titlebutton:backdrop:active,
.inline-toolbar .titlebar GtkToolButton > .button.titlebutton:backdrop:active, .inline-toolbar GtkToolButton > .button:backdrop:checked, .inline-toolbar .header-bar GtkToolButton > .button.titlebutton:backdrop:checked,
.inline-toolbar .titlebar GtkToolButton > .button.titlebutton:backdrop:checked {
color: #939695;
border-color: #1e2222;
background-image: linear-gradient(to bottom, #2f3434);
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(238, 238, 236, 0); }
.inline-toolbar GtkToolButton > .button:backdrop:insensitive {
.inline-toolbar GtkToolButton > .button:backdrop:insensitive, .inline-toolbar .header-bar GtkToolButton > .button.titlebutton:backdrop:insensitive,
.inline-toolbar .titlebar GtkToolButton > .button.titlebutton:backdrop:insensitive {
color: #5d6767;
border-color: #1e2222;
background-image: linear-gradient(to bottom, #323636);
@@ -1108,7 +1137,9 @@ GtkTextView {
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(238, 238, 236, 0); }
.inline-toolbar GtkToolButton > .button:backdrop:insensitive > .label {
color: inherit; }
.inline-toolbar GtkToolButton > .button:backdrop:insensitive:active, .inline-toolbar GtkToolButton > .button:backdrop:insensitive:checked {
.inline-toolbar GtkToolButton > .button:backdrop:insensitive:active, .inline-toolbar .header-bar GtkToolButton > .button.titlebutton:backdrop:insensitive:active,
.inline-toolbar .titlebar GtkToolButton > .button.titlebutton:backdrop:insensitive:active, .inline-toolbar GtkToolButton > .button:backdrop:insensitive:checked, .inline-toolbar .header-bar GtkToolButton > .button.titlebutton:backdrop:insensitive:checked,
.inline-toolbar .titlebar GtkToolButton > .button.titlebutton:backdrop:insensitive:checked {
color: #5d6767;
border-color: #1e2222;
background-image: linear-gradient(to bottom, #262929);
@@ -1147,12 +1178,14 @@ GtkComboBox.combobox-entry .titlebar .button.titlebutton,
.inline-toolbar .header-bar GtkToolButton:backdrop:dir(rtl) > .button.titlebutton,
.header-bar .inline-toolbar GtkToolButton:backdrop:dir(rtl) > .button.titlebutton,
.inline-toolbar .titlebar GtkToolButton:backdrop:dir(rtl) > .button.titlebutton,
.titlebar .inline-toolbar GtkToolButton:backdrop:dir(rtl) > .button.titlebutton, .osd .button:dir(rtl):hover, .osd .button:dir(rtl):active, .osd .button:dir(rtl):checked, .osd .button:dir(rtl):insensitive, .osd .button:dir(rtl):backdrop, .osd .button.suggested-action:dir(rtl), .osd .button.destructive-action:dir(rtl), .inline-toolbar .button:dir(rtl), .linked > .button:dir(rtl), GtkComboBox.combobox-entry .entry:dir(rtl), GtkComboBox.combobox-entry .button:dir(rtl), .linked > GtkComboBox > .button:dir(rtl) {
.titlebar .inline-toolbar GtkToolButton:backdrop:dir(rtl) > .button.titlebutton, .osd .button:dir(rtl):hover, .osd .button:dir(rtl):active, .osd .button:dir(rtl):checked, .osd .button:dir(rtl):insensitive, .osd .button:dir(rtl):backdrop, .osd .button.suggested-action:dir(rtl), .osd .button.destructive-action:dir(rtl), .inline-toolbar .button:dir(rtl), .linked > .button:dir(rtl), .header-bar .linked > .button.titlebutton:dir(rtl),
.titlebar .linked > .button.titlebutton:dir(rtl), GtkComboBox.combobox-entry .entry:dir(rtl), GtkComboBox.combobox-entry .button:dir(rtl), .linked > GtkComboBox > .button:dir(rtl) {
border-radius: 0;
border-right-style: none;
border-left-style: solid; }
.osd .button:first-child:hover, .osd .button:first-child:active, .osd .button:first-child:checked, .osd .button:first-child:insensitive, .osd .button:first-child:backdrop, .osd .button.suggested-action:first-child, .osd .button.destructive-action:first-child, .inline-toolbar .button:first-child, .linked > .button:first-child, .inline-toolbar.toolbar GtkToolButton:first-child > .button.flat, .inline-toolbar GtkToolButton:first-child > .button.flat, .inline-toolbar.search-bar GtkToolButton:first-child > .button.flat, .inline-toolbar.location-bar GtkToolButton:first-child > .button.flat, .inline-toolbar .header-bar GtkToolButton:first-child > .button.titlebutton, .header-bar .inline-toolbar GtkToolButton:first-child > .button.titlebutton,
.osd .button:first-child:hover, .osd .button:first-child:active, .osd .button:first-child:checked, .osd .button:first-child:insensitive, .osd .button:first-child:backdrop, .osd .button.suggested-action:first-child, .osd .button.destructive-action:first-child, .inline-toolbar .button:first-child, .linked > .button:first-child, .header-bar .linked > .button.titlebutton:first-child,
.titlebar .linked > .button.titlebutton:first-child, .inline-toolbar.toolbar GtkToolButton:first-child > .button.flat, .inline-toolbar GtkToolButton:first-child > .button.flat, .inline-toolbar.search-bar GtkToolButton:first-child > .button.flat, .inline-toolbar.location-bar GtkToolButton:first-child > .button.flat, .inline-toolbar .header-bar GtkToolButton:first-child > .button.titlebutton, .header-bar .inline-toolbar GtkToolButton:first-child > .button.titlebutton,
.inline-toolbar .titlebar GtkToolButton:first-child > .button.titlebutton,
.titlebar .inline-toolbar GtkToolButton:first-child > .button.titlebutton,
.inline-toolbar.toolbar GtkToolButton:backdrop:first-child > .button.flat,
@@ -1165,7 +1198,8 @@ GtkComboBox.combobox-entry .titlebar .button.titlebutton,
.titlebar .inline-toolbar GtkToolButton:backdrop:first-child > .button.titlebutton, GtkComboBox.combobox-entry .entry:first-child, GtkComboBox.combobox-entry .button:first-child, .linked > GtkComboBox:first-child > .button {
border-radius: 3px 0 0 3px;
border-left-style: solid; }
.osd .button:last-child:hover, .osd .button:last-child:active, .osd .button:last-child:checked, .osd .button:last-child:insensitive, .osd .button:last-child:backdrop, .osd .button.suggested-action:last-child, .osd .button.destructive-action:last-child, .inline-toolbar .button:last-child, .linked > .button:last-child, .inline-toolbar.toolbar GtkToolButton:last-child > .button.flat, .inline-toolbar GtkToolButton:last-child > .button.flat, .inline-toolbar.search-bar GtkToolButton:last-child > .button.flat, .inline-toolbar.location-bar GtkToolButton:last-child > .button.flat, .inline-toolbar .header-bar GtkToolButton:last-child > .button.titlebutton, .header-bar .inline-toolbar GtkToolButton:last-child > .button.titlebutton,
.osd .button:last-child:hover, .osd .button:last-child:active, .osd .button:last-child:checked, .osd .button:last-child:insensitive, .osd .button:last-child:backdrop, .osd .button.suggested-action:last-child, .osd .button.destructive-action:last-child, .inline-toolbar .button:last-child, .linked > .button:last-child, .header-bar .linked > .button.titlebutton:last-child,
.titlebar .linked > .button.titlebutton:last-child, .inline-toolbar.toolbar GtkToolButton:last-child > .button.flat, .inline-toolbar GtkToolButton:last-child > .button.flat, .inline-toolbar.search-bar GtkToolButton:last-child > .button.flat, .inline-toolbar.location-bar GtkToolButton:last-child > .button.flat, .inline-toolbar .header-bar GtkToolButton:last-child > .button.titlebutton, .header-bar .inline-toolbar GtkToolButton:last-child > .button.titlebutton,
.inline-toolbar .titlebar GtkToolButton:last-child > .button.titlebutton,
.titlebar .inline-toolbar GtkToolButton:last-child > .button.titlebutton,
.inline-toolbar.toolbar GtkToolButton:backdrop:last-child > .button.flat,
@@ -1177,7 +1211,8 @@ GtkComboBox.combobox-entry .titlebar .button.titlebutton,
.inline-toolbar .titlebar GtkToolButton:backdrop:last-child > .button.titlebutton,
.titlebar .inline-toolbar GtkToolButton:backdrop:last-child > .button.titlebutton, GtkComboBox.combobox-entry .entry:last-child, GtkComboBox.combobox-entry .button:last-child, .linked > GtkComboBox:last-child > .button {
border-radius: 0 3px 3px 0; }
.osd .button:last-child:dir(rtl):hover, .osd .button:last-child:dir(rtl):active, .osd .button:last-child:dir(rtl):checked, .osd .button:last-child:dir(rtl):insensitive, .osd .button:last-child:dir(rtl):backdrop, .osd .button.suggested-action:last-child:dir(rtl), .osd .button.destructive-action:last-child:dir(rtl), .inline-toolbar .button:last-child:dir(rtl), .linked > .button:last-child:dir(rtl), .inline-toolbar GtkToolButton:last-child > .button.flat:dir(rtl), .inline-toolbar .header-bar GtkToolButton:last-child > .button.titlebutton:dir(rtl), .header-bar .inline-toolbar GtkToolButton:last-child > .button.titlebutton:dir(rtl),
.osd .button:last-child:dir(rtl):hover, .osd .button:last-child:dir(rtl):active, .osd .button:last-child:dir(rtl):checked, .osd .button:last-child:dir(rtl):insensitive, .osd .button:last-child:dir(rtl):backdrop, .osd .button.suggested-action:last-child:dir(rtl), .osd .button.destructive-action:last-child:dir(rtl), .inline-toolbar .button:last-child:dir(rtl), .linked > .button:last-child:dir(rtl), .header-bar .linked > .button.titlebutton:last-child:dir(rtl),
.titlebar .linked > .button.titlebutton:last-child:dir(rtl), .inline-toolbar GtkToolButton:last-child > .button.flat:dir(rtl), .inline-toolbar .header-bar GtkToolButton:last-child > .button.titlebutton:dir(rtl), .header-bar .inline-toolbar GtkToolButton:last-child > .button.titlebutton:dir(rtl),
.inline-toolbar .titlebar GtkToolButton:last-child > .button.titlebutton:dir(rtl),
.titlebar .inline-toolbar GtkToolButton:last-child > .button.titlebutton:dir(rtl),
.inline-toolbar GtkToolButton:backdrop:last-child > .button.flat:dir(rtl), .inline-toolbar.toolbar GtkToolButton:last-child:dir(rtl) > .button.flat, .inline-toolbar GtkToolButton:last-child:dir(rtl) > .button.flat, .inline-toolbar.search-bar GtkToolButton:last-child:dir(rtl) > .button.flat, .inline-toolbar.location-bar GtkToolButton:last-child:dir(rtl) > .button.flat, .inline-toolbar .header-bar GtkToolButton:last-child:dir(rtl) > .button.titlebutton, .header-bar .inline-toolbar GtkToolButton:last-child:dir(rtl) > .button.titlebutton,
@@ -1192,7 +1227,8 @@ GtkComboBox.combobox-entry .titlebar .button.titlebutton,
.inline-toolbar .titlebar GtkToolButton:backdrop:last-child:dir(rtl) > .button.titlebutton,
.titlebar .inline-toolbar GtkToolButton:backdrop:last-child:dir(rtl) > .button.titlebutton, GtkComboBox.combobox-entry .entry:last-child:dir(rtl), GtkComboBox.combobox-entry .button:last-child:dir(rtl), .linked > GtkComboBox:last-child > .button:dir(rtl) {
border-right-style: solid; }
.osd .button:only-child:hover, .osd .button:only-child:active, .osd .button:only-child:checked, .osd .button:only-child:insensitive, .osd .button:only-child:backdrop, .osd .button.suggested-action:only-child, .osd .button.destructive-action:only-child, .inline-toolbar .button:only-child, .linked > .button:only-child, .inline-toolbar.toolbar GtkToolButton:only-child > .button.flat, .inline-toolbar GtkToolButton:only-child > .button.flat, .inline-toolbar.search-bar GtkToolButton:only-child > .button.flat, .inline-toolbar.location-bar GtkToolButton:only-child > .button.flat, .inline-toolbar .header-bar GtkToolButton:only-child > .button.titlebutton, .header-bar .inline-toolbar GtkToolButton:only-child > .button.titlebutton,
.osd .button:only-child:hover, .osd .button:only-child:active, .osd .button:only-child:checked, .osd .button:only-child:insensitive, .osd .button:only-child:backdrop, .osd .button.suggested-action:only-child, .osd .button.destructive-action:only-child, .inline-toolbar .button:only-child, .linked > .button:only-child, .header-bar .linked > .button.titlebutton:only-child,
.titlebar .linked > .button.titlebutton:only-child, .inline-toolbar.toolbar GtkToolButton:only-child > .button.flat, .inline-toolbar GtkToolButton:only-child > .button.flat, .inline-toolbar.search-bar GtkToolButton:only-child > .button.flat, .inline-toolbar.location-bar GtkToolButton:only-child > .button.flat, .inline-toolbar .header-bar GtkToolButton:only-child > .button.titlebutton, .header-bar .inline-toolbar GtkToolButton:only-child > .button.titlebutton,
.inline-toolbar .titlebar GtkToolButton:only-child > .button.titlebutton,
.titlebar .inline-toolbar GtkToolButton:only-child > .button.titlebutton,
.inline-toolbar.toolbar GtkToolButton:backdrop:only-child > .button.flat,
@@ -1206,20 +1242,24 @@ GtkComboBox.combobox-entry .titlebar .button.titlebutton,
border-radius: 3px;
border-style: solid; }
.linked.vertical > .entry, .linked.vertical > .entry:focus, .linked.vertical > .entry:insensitive, .linked.vertical > .entry:insensitive:backdrop, .linked.vertical > .entry:backdrop, .linked.vertical > .button, .linked.vertical > .button:hover, .linked.vertical > .button:active, .linked.vertical > .button:checked, .linked.vertical > .button:backdrop, .linked.vertical > GtkComboBoxText > .button,
.linked.vertical > .entry, .linked.vertical > .entry:focus, .linked.vertical > .entry:insensitive, .linked.vertical > .entry:insensitive:backdrop, .linked.vertical > .entry:backdrop, .linked.vertical > .button, .header-bar .linked.vertical > .button.titlebutton,
.titlebar .linked.vertical > .button.titlebutton, .linked.vertical > .button:hover, .linked.vertical > .button:active, .linked.vertical > .button:checked, .linked.vertical > .button:backdrop, .linked.vertical > GtkComboBoxText > .button,
.linked.vertical > GtkComboBox > .button {
border-left-style: solid;
border-top-style: none;
border-radius: 0; }
.linked.vertical > .entry:first-child, .linked.vertical > .button:first-child, .linked.vertical > GtkComboBoxText:first-child > .button,
.linked.vertical > .entry:first-child, .linked.vertical > .button:first-child, .header-bar .linked.vertical > .button.titlebutton:first-child,
.titlebar .linked.vertical > .button.titlebutton:first-child, .linked.vertical > GtkComboBoxText:first-child > .button,
.linked.vertical > GtkComboBox:first-child > .button {
border-style: solid;
border-radius: 3px 3px 0 0; }
.linked.vertical > .entry:last-child, .linked.vertical > .button:last-child, .linked.vertical > GtkComboBoxText:last-child > .button,
.linked.vertical > .entry:last-child, .linked.vertical > .button:last-child, .header-bar .linked.vertical > .button.titlebutton:last-child,
.titlebar .linked.vertical > .button.titlebutton:last-child, .linked.vertical > GtkComboBoxText:last-child > .button,
.linked.vertical > GtkComboBox:last-child > .button {
border-radius: 0 0 3px 3px; }
.linked.vertical > .entry:only-child, .linked.vertical > .button:only-child, .linked.vertical > GtkComboBoxText:only-child > .button,
.linked.vertical > .entry:only-child, .linked.vertical > .button:only-child, .header-bar .linked.vertical > .button.titlebutton:only-child,
.titlebar .linked.vertical > .button.titlebutton:only-child, .linked.vertical > GtkComboBoxText:only-child > .button,
.linked.vertical > GtkComboBox:only-child > .button {
border-radius: 3px;
border-style: solid; }
@@ -1430,7 +1470,9 @@ GtkColorButton.button, .header-bar GtkColorButton.button.titlebutton,
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0); }
.spinbutton.vertical .button:first-child:insensitive > .label, .spinbutton.vertical:dir(rtl) .button:first-child:insensitive > .label {
.spinbutton.vertical .button:first-child:insensitive > .label, .spinbutton.vertical .header-bar .button.titlebutton:first-child:insensitive > .label,
.spinbutton.vertical .titlebar .button.titlebutton:first-child:insensitive > .label, .spinbutton.vertical:dir(rtl) .button:first-child:insensitive > .label, .spinbutton.vertical:dir(rtl) .header-bar .button.titlebutton:first-child:insensitive > .label,
.spinbutton.vertical:dir(rtl) .titlebar .button.titlebutton:first-child:insensitive > .label {
color: inherit; }
.spinbutton.vertical .button:first-child:backdrop, .spinbutton.vertical:dir(rtl) .button:first-child:backdrop {
color: #939695;
@@ -1470,7 +1512,9 @@ GtkColorButton.button, .header-bar GtkColorButton.button.titlebutton,
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(238, 238, 236, 0.1); }
.spinbutton.vertical .button:last-child:insensitive > .label, .spinbutton.vertical:dir(rtl) .button:last-child:insensitive > .label {
.spinbutton.vertical .button:last-child:insensitive > .label, .spinbutton.vertical .header-bar .button.titlebutton:last-child:insensitive > .label,
.spinbutton.vertical .titlebar .button.titlebutton:last-child:insensitive > .label, .spinbutton.vertical:dir(rtl) .button:last-child:insensitive > .label, .spinbutton.vertical:dir(rtl) .header-bar .button.titlebutton:last-child:insensitive > .label,
.spinbutton.vertical:dir(rtl) .titlebar .button.titlebutton:last-child:insensitive > .label {
color: inherit; }
.spinbutton.vertical .button:last-child:backdrop, .spinbutton.vertical:dir(rtl) .button:last-child:backdrop {
color: #939695;
@@ -1486,7 +1530,9 @@ GtkColorButton.button, .header-bar GtkColorButton.button.titlebutton,
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(238, 238, 236, 0); }
.spinbutton.vertical .button:backdrop:insensitive > .label, .spinbutton.vertical:dir(rtl) .button:backdrop:insensitive > .label {
.spinbutton.vertical .button:backdrop:insensitive > .label, .spinbutton.vertical .header-bar .button.titlebutton:backdrop:insensitive > .label,
.spinbutton.vertical .titlebar .button.titlebutton:backdrop:insensitive > .label, .spinbutton.vertical:dir(rtl) .button:backdrop:insensitive > .label, .spinbutton.vertical:dir(rtl) .header-bar .button.titlebutton:backdrop:insensitive > .label,
.spinbutton.vertical:dir(rtl) .titlebar .button.titlebutton:backdrop:insensitive > .label {
color: inherit; }
.spinbutton.vertical.entry, .spinbutton.vertical:dir(rtl).entry {
border-radius: 0;
@@ -1693,11 +1739,13 @@ GtkComboBox {
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(43, 100, 160, 0);
border-color: #0f2b48; }
.titlebar.selection-mode .button:backdrop:insensitive > .label, .titlebar.selection-mode .button.flat:backdrop:insensitive > .label,
.titlebar.selection-mode .button:backdrop:insensitive > .label, .titlebar.selection-mode .header-bar .button.titlebutton:backdrop:insensitive > .label, .titlebar.selection-mode .button.flat:backdrop:insensitive > .label, .titlebar.selection-mode .header-bar .titlebutton.button:backdrop:insensitive > .label,
.titlebar.selection-mode .titlebutton.button:backdrop:insensitive > .label,
.header-bar.selection-mode .button:backdrop:insensitive > .label,
.header-bar.selection-mode .titlebar .button.titlebutton:backdrop:insensitive > .label,
.header-bar.selection-mode .button.flat:backdrop:insensitive > .label,
.header-bar.selection-mode .titlebutton.button:backdrop:insensitive > .label {
.header-bar.selection-mode .titlebutton.button:backdrop:insensitive > .label,
.header-bar.selection-mode .titlebar .titlebutton.button:backdrop:insensitive > .label {
color: inherit; }
.titlebar.selection-mode .button:backdrop:insensitive:active, .titlebar.selection-mode .button:backdrop:insensitive:checked, .titlebar.selection-mode .button.flat:backdrop:insensitive:active,
.titlebar.selection-mode .titlebutton.button:backdrop:insensitive:active, .titlebar.selection-mode .button.flat:backdrop:insensitive:checked,
@@ -1713,15 +1761,19 @@ GtkComboBox {
background-image: linear-gradient(to bottom, #1d4876);
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(43, 100, 160, 0);
border-color: #0f2b48; }
.titlebar.selection-mode .button:backdrop:insensitive:active > .label, .titlebar.selection-mode .button:backdrop:insensitive:checked > .label, .titlebar.selection-mode .button.flat:backdrop:insensitive:active > .label,
.titlebar.selection-mode .titlebutton.button:backdrop:insensitive:active > .label, .titlebar.selection-mode .button.flat:backdrop:insensitive:checked > .label,
.titlebar.selection-mode .button:backdrop:insensitive:active > .label, .titlebar.selection-mode .header-bar .button.titlebutton:backdrop:insensitive:active > .label, .titlebar.selection-mode .button:backdrop:insensitive:checked > .label, .titlebar.selection-mode .header-bar .button.titlebutton:backdrop:insensitive:checked > .label, .titlebar.selection-mode .button.flat:backdrop:insensitive:active > .label, .titlebar.selection-mode .header-bar .titlebutton.button:backdrop:insensitive:active > .label,
.titlebar.selection-mode .titlebutton.button:backdrop:insensitive:active > .label, .titlebar.selection-mode .button.flat:backdrop:insensitive:checked > .label, .titlebar.selection-mode .header-bar .titlebutton.button:backdrop:insensitive:checked > .label,
.titlebar.selection-mode .titlebutton.button:backdrop:insensitive:checked > .label,
.header-bar.selection-mode .button:backdrop:insensitive:active > .label,
.header-bar.selection-mode .titlebar .button.titlebutton:backdrop:insensitive:active > .label,
.header-bar.selection-mode .button:backdrop:insensitive:checked > .label,
.header-bar.selection-mode .titlebar .button.titlebutton:backdrop:insensitive:checked > .label,
.header-bar.selection-mode .button.flat:backdrop:insensitive:active > .label,
.header-bar.selection-mode .titlebutton.button:backdrop:insensitive:active > .label,
.header-bar.selection-mode .titlebar .titlebutton.button:backdrop:insensitive:active > .label,
.header-bar.selection-mode .button.flat:backdrop:insensitive:checked > .label,
.header-bar.selection-mode .titlebutton.button:backdrop:insensitive:checked > .label {
.header-bar.selection-mode .titlebutton.button:backdrop:insensitive:checked > .label,
.header-bar.selection-mode .titlebar .titlebutton.button:backdrop:insensitive:checked > .label {
color: inherit; }
.titlebar.selection-mode .button.flat:backdrop,
.titlebar.selection-mode .titlebutton.button:backdrop, .titlebar.selection-mode .button.flat:insensitive,
@@ -1747,8 +1799,9 @@ GtkComboBox {
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(43, 100, 160, 0.55); }
.titlebar.selection-mode .button:insensitive > .label,
.header-bar.selection-mode .button:insensitive > .label {
.titlebar.selection-mode .button:insensitive > .label, .titlebar.selection-mode .header-bar .button.titlebutton:insensitive > .label,
.header-bar.selection-mode .button:insensitive > .label,
.header-bar.selection-mode .titlebar .button.titlebutton:insensitive > .label {
color: inherit; }
.titlebar.selection-mode .button:insensitive:active, .titlebar.selection-mode .button:insensitive:checked,
.header-bar.selection-mode .button:insensitive:active,
@@ -1757,9 +1810,11 @@ GtkComboBox {
border-color: #0b1e33;
background-image: linear-gradient(to bottom, #1b436f, #1d4876);
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(43, 100, 160, 0.55); }
.titlebar.selection-mode .button:insensitive:active > .label, .titlebar.selection-mode .button:insensitive:checked > .label,
.titlebar.selection-mode .button:insensitive:active > .label, .titlebar.selection-mode .header-bar .button.titlebutton:insensitive:active > .label, .titlebar.selection-mode .button:insensitive:checked > .label, .titlebar.selection-mode .header-bar .button.titlebutton:insensitive:checked > .label,
.header-bar.selection-mode .button:insensitive:active > .label,
.header-bar.selection-mode .button:insensitive:checked > .label {
.header-bar.selection-mode .titlebar .button.titlebutton:insensitive:active > .label,
.header-bar.selection-mode .button:insensitive:checked > .label,
.header-bar.selection-mode .titlebar .button.titlebutton:insensitive:checked > .label {
color: inherit; }
.titlebar.selection-mode .button.suggested-action,
.header-bar.selection-mode .button.suggested-action {
@@ -1800,8 +1855,9 @@ GtkComboBox {
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(43, 100, 160, 0.55);
border-color: #0f2b48; }
.titlebar.selection-mode .button.suggested-action:insensitive > .label,
.header-bar.selection-mode .button.suggested-action:insensitive > .label {
.titlebar.selection-mode .button.suggested-action:insensitive > .label, .titlebar.selection-mode .header-bar .suggested-action.button.titlebutton:insensitive > .label,
.header-bar.selection-mode .button.suggested-action:insensitive > .label,
.header-bar.selection-mode .titlebar .suggested-action.button.titlebutton:insensitive > .label {
color: inherit; }
.titlebar.selection-mode .button.suggested-action:backdrop,
.header-bar.selection-mode .button.suggested-action:backdrop {
@@ -1821,8 +1877,9 @@ GtkComboBox {
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(43, 100, 160, 0);
border-color: #0f2b48; }
.titlebar.selection-mode .button.suggested-action:backdrop:insensitive > .label,
.header-bar.selection-mode .button.suggested-action:backdrop:insensitive > .label {
.titlebar.selection-mode .button.suggested-action:backdrop:insensitive > .label, .titlebar.selection-mode .header-bar .suggested-action.button.titlebutton:backdrop:insensitive > .label,
.header-bar.selection-mode .button.suggested-action:backdrop:insensitive > .label,
.header-bar.selection-mode .titlebar .suggested-action.button.titlebutton:backdrop:insensitive > .label {
color: inherit; }
.titlebar.selection-mode .selection-menu, .titlebar.selection-mode .selection-menu:backdrop,
.header-bar.selection-mode .selection-menu,
@@ -3566,7 +3623,8 @@ GtkPlacesSidebar.sidebar .view .separator:backdrop {
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0); }
.list-row:selected .button:backdrop:insensitive > .label, .list-row:selected .button.flat:backdrop:insensitive > .label, .list-row:selected .header-bar .titlebutton.button:backdrop:insensitive > .label, .header-bar .list-row:selected .titlebutton.button:backdrop:insensitive > .label,
.list-row:selected .button:backdrop:insensitive > .label, .list-row:selected .header-bar .button.titlebutton:backdrop:insensitive > .label,
.list-row:selected .titlebar .button.titlebutton:backdrop:insensitive > .label, .list-row:selected .button.flat:backdrop:insensitive > .label, .list-row:selected .header-bar .titlebutton.button:backdrop:insensitive > .label, .header-bar .list-row:selected .titlebutton.button:backdrop:insensitive > .label,
.list-row:selected .titlebar .titlebutton.button:backdrop:insensitive > .label,
.titlebar .list-row:selected .titlebutton.button:backdrop:insensitive > .label {
color: inherit; }
@@ -3579,7 +3637,9 @@ GtkPlacesSidebar.sidebar .view .separator:backdrop {
border-color: #1e2222;
background-image: linear-gradient(to bottom, #262929);
box-shadow: inset 0 1px rgba(255, 255, 255, 0); }
.list-row:selected .button:backdrop:insensitive:active > .label, .list-row:selected .button:backdrop:insensitive:checked > .label, .list-row:selected .button.flat:backdrop:insensitive:active > .label, .list-row:selected .header-bar .titlebutton.button:backdrop:insensitive:active > .label, .header-bar .list-row:selected .titlebutton.button:backdrop:insensitive:active > .label,
.list-row:selected .button:backdrop:insensitive:active > .label, .list-row:selected .header-bar .button.titlebutton:backdrop:insensitive:active > .label,
.list-row:selected .titlebar .button.titlebutton:backdrop:insensitive:active > .label, .list-row:selected .button:backdrop:insensitive:checked > .label, .list-row:selected .header-bar .button.titlebutton:backdrop:insensitive:checked > .label,
.list-row:selected .titlebar .button.titlebutton:backdrop:insensitive:checked > .label, .list-row:selected .button.flat:backdrop:insensitive:active > .label, .list-row:selected .header-bar .titlebutton.button:backdrop:insensitive:active > .label, .header-bar .list-row:selected .titlebutton.button:backdrop:insensitive:active > .label,
.list-row:selected .titlebar .titlebutton.button:backdrop:insensitive:active > .label,
.titlebar .list-row:selected .titlebutton.button:backdrop:insensitive:active > .label, .list-row:selected .button.flat:backdrop:insensitive:checked > .label, .list-row:selected .header-bar .titlebutton.button:backdrop:insensitive:checked > .label, .header-bar .list-row:selected .titlebutton.button:backdrop:insensitive:checked > .label,
.list-row:selected .titlebar .titlebutton.button:backdrop:insensitive:checked > .label,
@@ -3602,14 +3662,17 @@ GtkPlacesSidebar.sidebar .view .separator:backdrop {
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0); }
.list-row:selected .button:insensitive > .label {
.list-row:selected .button:insensitive > .label, .list-row:selected .header-bar .button.titlebutton:insensitive > .label,
.list-row:selected .titlebar .button.titlebutton:insensitive > .label {
color: inherit; }
.list-row:selected .button:insensitive:active, .list-row:selected .button:insensitive:checked {
color: #939695;
border-color: #1c1f1f;
background-image: linear-gradient(to bottom, #2f3333, #323636);
box-shadow: inset 0 1px rgba(255, 255, 255, 0); }
.list-row:selected .button:insensitive:active > .label, .list-row:selected .button:insensitive:checked > .label {
.list-row:selected .button:insensitive:active > .label, .list-row:selected .header-bar .button.titlebutton:insensitive:active > .label,
.list-row:selected .titlebar .button.titlebutton:insensitive:active > .label, .list-row:selected .button:insensitive:checked > .label, .list-row:selected .header-bar .button.titlebutton:insensitive:checked > .label,
.list-row:selected .titlebar .button.titlebutton:insensitive:checked > .label {
color: inherit; }
.list-row, list-row.button, .header-bar list-row.button.titlebutton,
@@ -3783,7 +3846,8 @@ GtkCalendar {
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0); }
.message-dialog.csd .dialog-action-area .button:insensitive > .label {
.message-dialog.csd .dialog-action-area .button:insensitive > .label, .message-dialog.csd .dialog-action-area .header-bar .button.titlebutton:insensitive > .label,
.message-dialog.csd .dialog-action-area .titlebar .button.titlebutton:insensitive > .label {
color: inherit; }
.message-dialog.csd .dialog-action-area .button:backdrop {
color: #939695;
@@ -3799,7 +3863,8 @@ GtkCalendar {
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0); }
.message-dialog.csd .dialog-action-area .button:backdrop:insensitive > .label {
.message-dialog.csd .dialog-action-area .button:backdrop:insensitive > .label, .message-dialog.csd .dialog-action-area .header-bar .button.titlebutton:backdrop:insensitive > .label,
.message-dialog.csd .dialog-action-area .titlebar .button.titlebutton:backdrop:insensitive > .label {
color: inherit; }
.message-dialog.csd .dialog-action-area .button.suggested-action {
color: white;
@@ -3839,7 +3904,8 @@ GtkCalendar {
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0); }
.message-dialog.csd .dialog-action-area .button.suggested-action:backdrop:insensitive > .label {
.message-dialog.csd .dialog-action-area .button.suggested-action:backdrop:insensitive > .label, .message-dialog.csd .dialog-action-area .header-bar .suggested-action.button.titlebutton:backdrop:insensitive > .label,
.message-dialog.csd .dialog-action-area .titlebar .suggested-action.button.titlebutton:backdrop:insensitive > .label {
color: inherit; }
.message-dialog.csd .dialog-action-area .button.suggested-action:insensitive {
color: #939695;
@@ -3848,7 +3914,8 @@ GtkCalendar {
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0); }
.message-dialog.csd .dialog-action-area .button.suggested-action:insensitive > .label {
.message-dialog.csd .dialog-action-area .button.suggested-action:insensitive > .label, .message-dialog.csd .dialog-action-area .header-bar .suggested-action.button.titlebutton:insensitive > .label,
.message-dialog.csd .dialog-action-area .titlebar .suggested-action.button.titlebutton:insensitive > .label {
color: inherit; }
.message-dialog.csd .dialog-action-area .button.destructive-action {
color: white;
@@ -3888,7 +3955,8 @@ GtkCalendar {
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0); }
.message-dialog.csd .dialog-action-area .button.destructive-action:backdrop:insensitive > .label {
.message-dialog.csd .dialog-action-area .button.destructive-action:backdrop:insensitive > .label, .message-dialog.csd .dialog-action-area .header-bar .destructive-action.button.titlebutton:backdrop:insensitive > .label,
.message-dialog.csd .dialog-action-area .titlebar .destructive-action.button.titlebutton:backdrop:insensitive > .label {
color: inherit; }
.message-dialog.csd .dialog-action-area .button.destructive-action:insensitive {
color: #939695;
@@ -3897,7 +3965,8 @@ GtkCalendar {
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0); }
.message-dialog.csd .dialog-action-area .button.destructive-action:insensitive > .label {
.message-dialog.csd .dialog-action-area .button.destructive-action:insensitive > .label, .message-dialog.csd .dialog-action-area .header-bar .destructive-action.button.titlebutton:insensitive > .label,
.message-dialog.csd .dialog-action-area .titlebar .destructive-action.button.titlebutton:insensitive > .label {
color: inherit; }
.message-dialog.csd .dialog-action-area .button, .message-dialog.csd .dialog-action-area .button:hover, .message-dialog.csd .dialog-action-area .button:active, .message-dialog.csd .dialog-action-area .button:insensitive, .message-dialog.csd .dialog-action-area .button:backdrop, .message-dialog.csd .dialog-action-area .button:backdrop:insensitive, .message-dialog.csd .dialog-action-area .button.suggested-action, .message-dialog.csd .dialog-action-area .button.suggested-action:hover, .message-dialog.csd .dialog-action-area .button.suggested-action:active, .message-dialog.csd .dialog-action-area .button.suggested-action:backdrop, .message-dialog.csd .dialog-action-area .button.suggested-action:backdrop:insensitive, .message-dialog.csd .dialog-action-area .button.suggested-action:insensitive, .message-dialog.csd .dialog-action-area .button.destructive-action, .message-dialog.csd .dialog-action-area .button.destructive-action:hover, .message-dialog.csd .dialog-action-area .button.destructive-action:active, .message-dialog.csd .dialog-action-area .button.destructive-action:backdrop, .message-dialog.csd .dialog-action-area .button.destructive-action:backdrop:insensitive, .message-dialog.csd .dialog-action-area .button.destructive-action:insensitive {
border-left-style: solid;
@@ -4051,10 +4120,17 @@ GtkInfoBar {
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0); }
.info .button:insensitive > .label,
.info .button:insensitive > .label, .info .header-bar .button.titlebutton:insensitive > .label,
.info .titlebar .button.titlebutton:insensitive > .label,
.question .button:insensitive > .label,
.question .header-bar .button.titlebutton:insensitive > .label,
.question .titlebar .button.titlebutton:insensitive > .label,
.warning .button:insensitive > .label,
.error .button:insensitive > .label {
.warning .header-bar .button.titlebutton:insensitive > .label,
.warning .titlebar .button.titlebutton:insensitive > .label,
.error .button:insensitive > .label,
.error .header-bar .button.titlebutton:insensitive > .label,
.error .titlebar .button.titlebutton:insensitive > .label {
color: inherit; }
.info .button:backdrop,
.question .button:backdrop,
@@ -4078,10 +4154,17 @@ GtkInfoBar {
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0);
border-color: #0b1e33; }
.info .button:backdrop:insensitive > .label,
.info .button:backdrop:insensitive > .label, .info .header-bar .button.titlebutton:backdrop:insensitive > .label,
.info .titlebar .button.titlebutton:backdrop:insensitive > .label,
.question .button:backdrop:insensitive > .label,
.question .header-bar .button.titlebutton:backdrop:insensitive > .label,
.question .titlebar .button.titlebutton:backdrop:insensitive > .label,
.warning .button:backdrop:insensitive > .label,
.error .button:backdrop:insensitive > .label {
.warning .header-bar .button.titlebutton:backdrop:insensitive > .label,
.warning .titlebar .button.titlebutton:backdrop:insensitive > .label,
.error .button:backdrop:insensitive > .label,
.error .header-bar .button.titlebutton:backdrop:insensitive > .label,
.error .titlebar .button.titlebutton:backdrop:insensitive > .label {
color: inherit; }
.info .label:selected,
.info .label:selected:focus,
@@ -4245,6 +4328,12 @@ GtkVolumeButton.button, .header-bar GtkVolumeButton.button.titlebutton,
.window-frame.csd.message-dialog {
border-radius: 7px;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(28, 31, 31, 0.8); }
.window-frame.solid-csd {
border-radius: 0;
margin: 4px;
background-color: #393f3f;
border: solid 1px #1e2222;
box-shadow: none; }
.header-bar .titlebutton.button,
.titlebar .titlebutton.button {
@@ -4268,8 +4357,7 @@ GtkVolumeButton.button, .header-bar GtkVolumeButton.button.titlebutton,
color: #ffffff; }
.view:backdrop:selected, GtkCalendar:backdrop:selected, .label:backdrop:selected, .grid-child:backdrop:selected, .entry:backdrop:selected, .menuitem.button.flat:backdrop:selected, .header-bar .menuitem.titlebutton.button:backdrop:selected,
.titlebar .menuitem.titlebutton.button:backdrop:selected, .list-row:backdrop:selected, .sidebar:backdrop:selected, GtkPlacesSidebar.sidebar .view:backdrop:selected, GtkPlacesSidebar.sidebar GtkCalendar:backdrop:selected {
color: #ffffff;
background-color: #5e5e5e; }
color: #ffffff; }
/* Decouple the font of context menus from their entry/textview */
.touch-selection,
+157 -69
View File
@@ -178,7 +178,7 @@ GtkTextView {
.entry:focus {
background-color: transparent;
background-image: linear-gradient(to bottom, #f7f7f7, #ffffff 90%);
box-shadow: inset 0 3px rgba(0, 0, 0, 0.02), inset 0 2px rgba(0, 0, 0, 0.03), inset 0 1px rgba(0, 0, 0, 0.08), inset 0 0 0 1px rgba(74, 144, 217, 0.15), 0 1px white;
box-shadow: inset 0 3px rgba(0, 0, 0, 0.02), inset 0 2px rgba(0, 0, 0, 0.03), inset 0 1px rgba(0, 0, 0, 0.08), inset 0 0 0 1px #4a90d9, 0 1px white;
border-color: #4a90d9; }
.entry:insensitive {
background-color: transparent;
@@ -231,7 +231,7 @@ GtkTextView {
.entry.error:focus {
background-color: transparent;
background-image: linear-gradient(to bottom, #f7f7f7, #ffffff 90%);
box-shadow: inset 0 3px rgba(0, 0, 0, 0.02), inset 0 2px rgba(0, 0, 0, 0.03), inset 0 1px rgba(0, 0, 0, 0.08), inset 0 0 0 1px rgba(204, 0, 0, 0.15), 0 1px white;
box-shadow: inset 0 3px rgba(0, 0, 0, 0.02), inset 0 2px rgba(0, 0, 0, 0.03), inset 0 1px rgba(0, 0, 0, 0.08), inset 0 0 0 1px #cc0000, 0 1px white;
border-color: #cc0000; }
.entry.error:selected, .entry.error:selected:focus {
background-color: #cc0000; }
@@ -241,7 +241,7 @@ GtkTextView {
.entry.warning:focus {
background-color: transparent;
background-image: linear-gradient(to bottom, #f7f7f7, #ffffff 90%);
box-shadow: inset 0 3px rgba(0, 0, 0, 0.02), inset 0 2px rgba(0, 0, 0, 0.03), inset 0 1px rgba(0, 0, 0, 0.08), inset 0 0 0 1px rgba(245, 121, 0, 0.15), 0 1px white;
box-shadow: inset 0 3px rgba(0, 0, 0, 0.02), inset 0 2px rgba(0, 0, 0, 0.03), inset 0 1px rgba(0, 0, 0, 0.08), inset 0 0 0 1px #f57900, 0 1px white;
border-color: #f57900; }
.entry.warning:selected, .entry.warning:selected:focus {
background-color: #f57900; }
@@ -264,7 +264,7 @@ GtkTextView {
box-shadow: none; }
.linked.vertical > .entry:focus {
border-color: #4a90d9;
box-shadow: inset 0 0 0 1px rgba(74, 144, 217, 0.15), 0 -1px 0 0 #4a90d9; }
box-shadow: inset 0 0 0 1px #4a90d9, 0 -1px 0 0 #4a90d9; }
.linked.vertical > .entry:insensitive {
background-color: transparent;
background-image: linear-gradient(to bottom, #f7f7f7, #ffffff 90%);
@@ -299,7 +299,7 @@ GtkTextView {
.linked.vertical > .entry:first-child:focus {
background-color: transparent;
background-image: linear-gradient(to bottom, #f7f7f7, #ffffff 90%);
box-shadow: inset 0 3px rgba(0, 0, 0, 0.02), inset 0 2px rgba(0, 0, 0, 0.03), inset 0 1px rgba(0, 0, 0, 0.08), inset 0 0 0 1px rgba(74, 144, 217, 0.15);
box-shadow: inset 0 3px rgba(0, 0, 0, 0.02), inset 0 2px rgba(0, 0, 0, 0.03), inset 0 1px rgba(0, 0, 0, 0.08), inset 0 0 0 1px #4a90d9;
border-color: #4a90d9; }
.linked.vertical > .entry:first-child:insensitive {
background-color: transparent;
@@ -336,7 +336,7 @@ GtkTextView {
box-shadow: 0 1px white; }
.linked.vertical > .entry:last-child:focus {
border-color: #4a90d9;
box-shadow: inset 0 0 0 1px rgba(74, 144, 217, 0.15), 0 -1px 0 0 #4a90d9, 0 1px white; }
box-shadow: inset 0 0 0 1px #4a90d9, 0 -1px 0 0 #4a90d9, 0 1px white; }
.linked.vertical > .entry:last-child:insensitive {
background-color: transparent;
background-image: linear-gradient(to bottom, #f7f7f7, #ffffff 90%);
@@ -375,7 +375,7 @@ GtkTextView {
border-color: #4a90d9;
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5));
background-clip: padding-box;
box-shadow: inset 0 0 0 1px rgba(74, 144, 217, 0.15);
box-shadow: inset 0 0 0 1px #4a90d9;
text-shadow: 0 1px black;
icon-shadow: 0 1px black; }
.osd .entry:backdrop {
@@ -482,7 +482,8 @@ GtkTextView {
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(255, 255, 255, 0); }
.button:backdrop:insensitive > .label, .button.flat:backdrop:insensitive > .label, .header-bar .titlebutton.button:backdrop:insensitive > .label,
.button:backdrop:insensitive > .label, .header-bar .button.titlebutton:backdrop:insensitive > .label,
.titlebar .button.titlebutton:backdrop:insensitive > .label, .button.flat:backdrop:insensitive > .label, .header-bar .titlebutton.button:backdrop:insensitive > .label,
.titlebar .titlebutton.button:backdrop:insensitive > .label {
color: inherit; }
.button:backdrop:insensitive:active, .button:backdrop:insensitive:checked, .button.flat:backdrop:insensitive:active, .header-bar .titlebutton.button:backdrop:insensitive:active,
@@ -492,7 +493,9 @@ GtkTextView {
border-color: #a8a8a8;
background-image: linear-gradient(to bottom, #e7e7e7);
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(255, 255, 255, 0); }
.button:backdrop:insensitive:active > .label, .button:backdrop:insensitive:checked > .label, .button.flat:backdrop:insensitive:active > .label, .header-bar .titlebutton.button:backdrop:insensitive:active > .label,
.button:backdrop:insensitive:active > .label, .header-bar .button.titlebutton:backdrop:insensitive:active > .label,
.titlebar .button.titlebutton:backdrop:insensitive:active > .label, .button:backdrop:insensitive:checked > .label, .header-bar .button.titlebutton:backdrop:insensitive:checked > .label,
.titlebar .button.titlebutton:backdrop:insensitive:checked > .label, .button.flat:backdrop:insensitive:active > .label, .header-bar .titlebutton.button:backdrop:insensitive:active > .label,
.titlebar .titlebutton.button:backdrop:insensitive:active > .label, .button.flat:backdrop:insensitive:checked > .label, .header-bar .titlebutton.button:backdrop:insensitive:checked > .label,
.titlebar .titlebutton.button:backdrop:insensitive:checked > .label {
color: inherit; }
@@ -514,14 +517,17 @@ GtkTextView {
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px white; }
.button:insensitive > .label {
.button:insensitive > .label, .header-bar .button.titlebutton:insensitive > .label,
.titlebar .button.titlebutton:insensitive > .label {
color: inherit; }
.button:insensitive:active, .button:insensitive:checked {
color: #8d9091;
border-color: #a1a1a1;
background-image: linear-gradient(to bottom, #ebebeb, #f4f4f4);
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px white; }
.button:insensitive:active > .label, .button:insensitive:checked > .label {
.button:insensitive:active > .label, .header-bar .button.titlebutton:insensitive:active > .label,
.titlebar .button.titlebutton:insensitive:active > .label, .button:insensitive:checked > .label, .header-bar .button.titlebutton:insensitive:checked > .label,
.titlebar .button.titlebutton:insensitive:checked > .label {
color: inherit; }
.button.osd, .header-bar .osd.button.titlebutton,
.titlebar .osd.button.titlebutton {
@@ -763,7 +769,8 @@ GtkTextView {
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(255, 255, 255, 0); }
.button.suggested-action:backdrop:insensitive > .label, .button.suggested-action.flat:backdrop:insensitive > .label, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive > .label,
.button.suggested-action:backdrop:insensitive > .label, .header-bar .suggested-action.button.titlebutton:backdrop:insensitive > .label,
.titlebar .suggested-action.button.titlebutton:backdrop:insensitive > .label, .button.suggested-action.flat:backdrop:insensitive > .label, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive > .label,
.titlebar .suggested-action.titlebutton.button:backdrop:insensitive > .label {
color: inherit; }
.button.suggested-action:backdrop:insensitive:active, .button.suggested-action:backdrop:insensitive:checked, .button.suggested-action.flat:backdrop:insensitive:active, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive:active,
@@ -773,7 +780,9 @@ GtkTextView {
border-color: #5093da;
background-image: linear-gradient(to bottom, #5093da);
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(255, 255, 255, 0); }
.button.suggested-action:backdrop:insensitive:active > .label, .button.suggested-action:backdrop:insensitive:checked > .label, .button.suggested-action.flat:backdrop:insensitive:active > .label, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive:active > .label,
.button.suggested-action:backdrop:insensitive:active > .label, .header-bar .suggested-action.button.titlebutton:backdrop:insensitive:active > .label,
.titlebar .suggested-action.button.titlebutton:backdrop:insensitive:active > .label, .button.suggested-action:backdrop:insensitive:checked > .label, .header-bar .suggested-action.button.titlebutton:backdrop:insensitive:checked > .label,
.titlebar .suggested-action.button.titlebutton:backdrop:insensitive:checked > .label, .button.suggested-action.flat:backdrop:insensitive:active > .label, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive:active > .label,
.titlebar .suggested-action.titlebutton.button:backdrop:insensitive:active > .label, .button.suggested-action.flat:backdrop:insensitive:checked > .label, .header-bar .suggested-action.titlebutton.button:backdrop:insensitive:checked > .label,
.titlebar .suggested-action.titlebutton.button:backdrop:insensitive:checked > .label {
color: inherit; }
@@ -795,14 +804,17 @@ GtkTextView {
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px white; }
.button.suggested-action:insensitive > .label {
.button.suggested-action:insensitive > .label, .header-bar .suggested-action.button.titlebutton:insensitive > .label,
.titlebar .suggested-action.button.titlebutton:insensitive > .label {
color: inherit; }
.button.suggested-action:insensitive:active, .button.suggested-action:insensitive:checked {
color: #b9d3f0;
border-color: #1c5187;
background-image: linear-gradient(to bottom, #4a8cd1, #5093da);
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px white; }
.button.suggested-action:insensitive:active > .label, .button.suggested-action:insensitive:checked > .label {
.button.suggested-action:insensitive:active > .label, .header-bar .suggested-action.button.titlebutton:insensitive:active > .label,
.titlebar .suggested-action.button.titlebutton:insensitive:active > .label, .button.suggested-action:insensitive:checked > .label, .header-bar .suggested-action.button.titlebutton:insensitive:checked > .label,
.titlebar .suggested-action.button.titlebutton:insensitive:checked > .label {
color: inherit; }
.osd .button.suggested-action {
color: #eeeeec;
@@ -904,7 +916,8 @@ GtkTextView {
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(255, 255, 255, 0); }
.button.destructive-action:backdrop:insensitive > .label, .button.destructive-action.flat:backdrop:insensitive > .label, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive > .label,
.button.destructive-action:backdrop:insensitive > .label, .header-bar .destructive-action.button.titlebutton:backdrop:insensitive > .label,
.titlebar .destructive-action.button.titlebutton:backdrop:insensitive > .label, .button.destructive-action.flat:backdrop:insensitive > .label, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive > .label,
.titlebar .destructive-action.titlebutton.button:backdrop:insensitive > .label {
color: inherit; }
.button.destructive-action:backdrop:insensitive:active, .button.destructive-action:backdrop:insensitive:checked, .button.destructive-action.flat:backdrop:insensitive:active, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive:active,
@@ -914,7 +927,9 @@ GtkTextView {
border-color: #ef3131;
background-image: linear-gradient(to bottom, #ef3131);
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(255, 255, 255, 0); }
.button.destructive-action:backdrop:insensitive:active > .label, .button.destructive-action:backdrop:insensitive:checked > .label, .button.destructive-action.flat:backdrop:insensitive:active > .label, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive:active > .label,
.button.destructive-action:backdrop:insensitive:active > .label, .header-bar .destructive-action.button.titlebutton:backdrop:insensitive:active > .label,
.titlebar .destructive-action.button.titlebutton:backdrop:insensitive:active > .label, .button.destructive-action:backdrop:insensitive:checked > .label, .header-bar .destructive-action.button.titlebutton:backdrop:insensitive:checked > .label,
.titlebar .destructive-action.button.titlebutton:backdrop:insensitive:checked > .label, .button.destructive-action.flat:backdrop:insensitive:active > .label, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive:active > .label,
.titlebar .destructive-action.titlebutton.button:backdrop:insensitive:active > .label, .button.destructive-action.flat:backdrop:insensitive:checked > .label, .header-bar .destructive-action.titlebutton.button:backdrop:insensitive:checked > .label,
.titlebar .destructive-action.titlebutton.button:backdrop:insensitive:checked > .label {
color: inherit; }
@@ -936,14 +951,17 @@ GtkTextView {
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px white; }
.button.destructive-action:insensitive > .label {
.button.destructive-action:insensitive > .label, .header-bar .destructive-action.button.titlebutton:insensitive > .label,
.titlebar .destructive-action.button.titlebutton:insensitive > .label {
color: inherit; }
.button.destructive-action:insensitive:active, .button.destructive-action:insensitive:checked {
color: #f8acac;
border-color: #8e0b0b;
background-image: linear-gradient(to bottom, #e52d2d, #ef3131);
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px white; }
.button.destructive-action:insensitive:active > .label, .button.destructive-action:insensitive:checked > .label {
.button.destructive-action:insensitive:active > .label, .header-bar .destructive-action.button.titlebutton:insensitive:active > .label,
.titlebar .destructive-action.button.titlebutton:insensitive:active > .label, .button.destructive-action:insensitive:checked > .label, .header-bar .destructive-action.button.titlebutton:insensitive:checked > .label,
.titlebar .destructive-action.button.titlebutton:insensitive:checked > .label {
color: inherit; }
.osd .button.destructive-action {
color: #eeeeec;
@@ -1016,7 +1034,8 @@ GtkTextView {
padding-right: 6px;
padding-top: 3px;
padding-bottom: 3px; }
.stack-switcher > .button.text-button {
.stack-switcher > .button.text-button, .header-bar .stack-switcher > .text-button.button.titlebutton,
.titlebar .stack-switcher > .text-button.button.titlebutton {
padding: 5px 10px 6px; }
.stack-switcher > .button.image-button, .header-bar .stack-switcher > .titlebutton.button,
.titlebar .stack-switcher > .titlebutton.button {
@@ -1055,7 +1074,8 @@ GtkTextView {
text-shadow: 0 1px rgba(255, 255, 255, 0.76923);
icon-shadow: 0 1px rgba(255, 255, 255, 0.76923);
box-shadow: inset 0 1px white, 0 1px white; }
.inline-toolbar GtkToolButton > .button:hover {
.inline-toolbar GtkToolButton > .button:hover, .inline-toolbar .header-bar GtkToolButton > .button.titlebutton:hover,
.inline-toolbar .titlebar GtkToolButton > .button.titlebutton:hover {
color: #2e3436;
outline-color: rgba(46, 52, 54, 0.3);
border-color: #a1a1a1;
@@ -1063,7 +1083,9 @@ GtkTextView {
text-shadow: 0 1px rgba(255, 255, 255, 0.76923);
icon-shadow: 0 1px rgba(255, 255, 255, 0.76923);
box-shadow: inset 0 1px white, 0 1px white; }
.inline-toolbar GtkToolButton > .button:active, .inline-toolbar GtkToolButton > .button:checked {
.inline-toolbar GtkToolButton > .button:active, .inline-toolbar .header-bar GtkToolButton > .button.titlebutton:active,
.inline-toolbar .titlebar GtkToolButton > .button.titlebutton:active, .inline-toolbar GtkToolButton > .button:checked, .inline-toolbar .header-bar GtkToolButton > .button.titlebutton:checked,
.inline-toolbar .titlebar GtkToolButton > .button.titlebutton:checked {
color: #2e3436;
outline-color: rgba(46, 52, 54, 0.3);
border-color: #a1a1a1;
@@ -1071,7 +1093,8 @@ GtkTextView {
text-shadow: 0 1px rgba(255, 255, 255, 0.76923);
icon-shadow: 0 1px rgba(255, 255, 255, 0.76923);
box-shadow: inset 0 1px rgba(0, 0, 0, 0.07), inset 0 2px 1px -2px rgba(0, 0, 0, 0.6), 0 1px white; }
.inline-toolbar GtkToolButton > .button:insensitive {
.inline-toolbar GtkToolButton > .button:insensitive, .inline-toolbar .header-bar GtkToolButton > .button.titlebutton:insensitive,
.inline-toolbar .titlebar GtkToolButton > .button.titlebutton:insensitive {
color: #8d9091;
border-color: #a1a1a1;
background-image: linear-gradient(to bottom, #f4f4f4);
@@ -1080,26 +1103,32 @@ GtkTextView {
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px white; }
.inline-toolbar GtkToolButton > .button:insensitive > .label {
color: inherit; }
.inline-toolbar GtkToolButton > .button:insensitive:active, .inline-toolbar GtkToolButton > .button:insensitive:checked {
.inline-toolbar GtkToolButton > .button:insensitive:active, .inline-toolbar .header-bar GtkToolButton > .button.titlebutton:insensitive:active,
.inline-toolbar .titlebar GtkToolButton > .button.titlebutton:insensitive:active, .inline-toolbar GtkToolButton > .button:insensitive:checked, .inline-toolbar .header-bar GtkToolButton > .button.titlebutton:insensitive:checked,
.inline-toolbar .titlebar GtkToolButton > .button.titlebutton:insensitive:checked {
color: #8d9091;
border-color: #a1a1a1;
background-image: linear-gradient(to bottom, #ebebeb, #f4f4f4);
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px white; }
.inline-toolbar GtkToolButton > .button:insensitive:active > .label, .inline-toolbar GtkToolButton > .button:insensitive:checked > .label {
color: inherit; }
.inline-toolbar GtkToolButton > .button:backdrop {
.inline-toolbar GtkToolButton > .button:backdrop, .inline-toolbar .header-bar GtkToolButton > .button.titlebutton:backdrop,
.inline-toolbar .titlebar GtkToolButton > .button.titlebutton:backdrop {
color: #8d9091;
border-color: #a8a8a8;
background-image: linear-gradient(to bottom, #ededed);
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(255, 255, 255, 0); }
.inline-toolbar GtkToolButton > .button:backdrop:active, .inline-toolbar GtkToolButton > .button:backdrop:checked {
.inline-toolbar GtkToolButton > .button:backdrop:active, .inline-toolbar .header-bar GtkToolButton > .button.titlebutton:backdrop:active,
.inline-toolbar .titlebar GtkToolButton > .button.titlebutton:backdrop:active, .inline-toolbar GtkToolButton > .button:backdrop:checked, .inline-toolbar .header-bar GtkToolButton > .button.titlebutton:backdrop:checked,
.inline-toolbar .titlebar GtkToolButton > .button.titlebutton:backdrop:checked {
color: #8d9091;
border-color: #a8a8a8;
background-image: linear-gradient(to bottom, #d4d4d4);
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(255, 255, 255, 0); }
.inline-toolbar GtkToolButton > .button:backdrop:insensitive {
.inline-toolbar GtkToolButton > .button:backdrop:insensitive, .inline-toolbar .header-bar GtkToolButton > .button.titlebutton:backdrop:insensitive,
.inline-toolbar .titlebar GtkToolButton > .button.titlebutton:backdrop:insensitive {
color: #c7c7c7;
border-color: #a8a8a8;
background-image: linear-gradient(to bottom, #f4f4f4);
@@ -1108,7 +1137,9 @@ GtkTextView {
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(255, 255, 255, 0); }
.inline-toolbar GtkToolButton > .button:backdrop:insensitive > .label {
color: inherit; }
.inline-toolbar GtkToolButton > .button:backdrop:insensitive:active, .inline-toolbar GtkToolButton > .button:backdrop:insensitive:checked {
.inline-toolbar GtkToolButton > .button:backdrop:insensitive:active, .inline-toolbar .header-bar GtkToolButton > .button.titlebutton:backdrop:insensitive:active,
.inline-toolbar .titlebar GtkToolButton > .button.titlebutton:backdrop:insensitive:active, .inline-toolbar GtkToolButton > .button:backdrop:insensitive:checked, .inline-toolbar .header-bar GtkToolButton > .button.titlebutton:backdrop:insensitive:checked,
.inline-toolbar .titlebar GtkToolButton > .button.titlebutton:backdrop:insensitive:checked {
color: #c7c7c7;
border-color: #a8a8a8;
background-image: linear-gradient(to bottom, #e7e7e7);
@@ -1147,12 +1178,14 @@ GtkComboBox.combobox-entry .titlebar .button.titlebutton,
.inline-toolbar .header-bar GtkToolButton:backdrop:dir(rtl) > .button.titlebutton,
.header-bar .inline-toolbar GtkToolButton:backdrop:dir(rtl) > .button.titlebutton,
.inline-toolbar .titlebar GtkToolButton:backdrop:dir(rtl) > .button.titlebutton,
.titlebar .inline-toolbar GtkToolButton:backdrop:dir(rtl) > .button.titlebutton, .osd .button:dir(rtl):hover, .osd .button:dir(rtl):active, .osd .button:dir(rtl):checked, .osd .button:dir(rtl):insensitive, .osd .button:dir(rtl):backdrop, .osd .button.suggested-action:dir(rtl), .osd .button.destructive-action:dir(rtl), .inline-toolbar .button:dir(rtl), .linked > .button:dir(rtl), GtkComboBox.combobox-entry .entry:dir(rtl), GtkComboBox.combobox-entry .button:dir(rtl), .linked > GtkComboBox > .button:dir(rtl) {
.titlebar .inline-toolbar GtkToolButton:backdrop:dir(rtl) > .button.titlebutton, .osd .button:dir(rtl):hover, .osd .button:dir(rtl):active, .osd .button:dir(rtl):checked, .osd .button:dir(rtl):insensitive, .osd .button:dir(rtl):backdrop, .osd .button.suggested-action:dir(rtl), .osd .button.destructive-action:dir(rtl), .inline-toolbar .button:dir(rtl), .linked > .button:dir(rtl), .header-bar .linked > .button.titlebutton:dir(rtl),
.titlebar .linked > .button.titlebutton:dir(rtl), GtkComboBox.combobox-entry .entry:dir(rtl), GtkComboBox.combobox-entry .button:dir(rtl), .linked > GtkComboBox > .button:dir(rtl) {
border-radius: 0;
border-right-style: none;
border-left-style: solid; }
.osd .button:first-child:hover, .osd .button:first-child:active, .osd .button:first-child:checked, .osd .button:first-child:insensitive, .osd .button:first-child:backdrop, .osd .button.suggested-action:first-child, .osd .button.destructive-action:first-child, .inline-toolbar .button:first-child, .linked > .button:first-child, .inline-toolbar.toolbar GtkToolButton:first-child > .button.flat, .inline-toolbar GtkToolButton:first-child > .button.flat, .inline-toolbar.search-bar GtkToolButton:first-child > .button.flat, .inline-toolbar.location-bar GtkToolButton:first-child > .button.flat, .inline-toolbar .header-bar GtkToolButton:first-child > .button.titlebutton, .header-bar .inline-toolbar GtkToolButton:first-child > .button.titlebutton,
.osd .button:first-child:hover, .osd .button:first-child:active, .osd .button:first-child:checked, .osd .button:first-child:insensitive, .osd .button:first-child:backdrop, .osd .button.suggested-action:first-child, .osd .button.destructive-action:first-child, .inline-toolbar .button:first-child, .linked > .button:first-child, .header-bar .linked > .button.titlebutton:first-child,
.titlebar .linked > .button.titlebutton:first-child, .inline-toolbar.toolbar GtkToolButton:first-child > .button.flat, .inline-toolbar GtkToolButton:first-child > .button.flat, .inline-toolbar.search-bar GtkToolButton:first-child > .button.flat, .inline-toolbar.location-bar GtkToolButton:first-child > .button.flat, .inline-toolbar .header-bar GtkToolButton:first-child > .button.titlebutton, .header-bar .inline-toolbar GtkToolButton:first-child > .button.titlebutton,
.inline-toolbar .titlebar GtkToolButton:first-child > .button.titlebutton,
.titlebar .inline-toolbar GtkToolButton:first-child > .button.titlebutton,
.inline-toolbar.toolbar GtkToolButton:backdrop:first-child > .button.flat,
@@ -1165,7 +1198,8 @@ GtkComboBox.combobox-entry .titlebar .button.titlebutton,
.titlebar .inline-toolbar GtkToolButton:backdrop:first-child > .button.titlebutton, GtkComboBox.combobox-entry .entry:first-child, GtkComboBox.combobox-entry .button:first-child, .linked > GtkComboBox:first-child > .button {
border-radius: 3px 0 0 3px;
border-left-style: solid; }
.osd .button:last-child:hover, .osd .button:last-child:active, .osd .button:last-child:checked, .osd .button:last-child:insensitive, .osd .button:last-child:backdrop, .osd .button.suggested-action:last-child, .osd .button.destructive-action:last-child, .inline-toolbar .button:last-child, .linked > .button:last-child, .inline-toolbar.toolbar GtkToolButton:last-child > .button.flat, .inline-toolbar GtkToolButton:last-child > .button.flat, .inline-toolbar.search-bar GtkToolButton:last-child > .button.flat, .inline-toolbar.location-bar GtkToolButton:last-child > .button.flat, .inline-toolbar .header-bar GtkToolButton:last-child > .button.titlebutton, .header-bar .inline-toolbar GtkToolButton:last-child > .button.titlebutton,
.osd .button:last-child:hover, .osd .button:last-child:active, .osd .button:last-child:checked, .osd .button:last-child:insensitive, .osd .button:last-child:backdrop, .osd .button.suggested-action:last-child, .osd .button.destructive-action:last-child, .inline-toolbar .button:last-child, .linked > .button:last-child, .header-bar .linked > .button.titlebutton:last-child,
.titlebar .linked > .button.titlebutton:last-child, .inline-toolbar.toolbar GtkToolButton:last-child > .button.flat, .inline-toolbar GtkToolButton:last-child > .button.flat, .inline-toolbar.search-bar GtkToolButton:last-child > .button.flat, .inline-toolbar.location-bar GtkToolButton:last-child > .button.flat, .inline-toolbar .header-bar GtkToolButton:last-child > .button.titlebutton, .header-bar .inline-toolbar GtkToolButton:last-child > .button.titlebutton,
.inline-toolbar .titlebar GtkToolButton:last-child > .button.titlebutton,
.titlebar .inline-toolbar GtkToolButton:last-child > .button.titlebutton,
.inline-toolbar.toolbar GtkToolButton:backdrop:last-child > .button.flat,
@@ -1177,7 +1211,8 @@ GtkComboBox.combobox-entry .titlebar .button.titlebutton,
.inline-toolbar .titlebar GtkToolButton:backdrop:last-child > .button.titlebutton,
.titlebar .inline-toolbar GtkToolButton:backdrop:last-child > .button.titlebutton, GtkComboBox.combobox-entry .entry:last-child, GtkComboBox.combobox-entry .button:last-child, .linked > GtkComboBox:last-child > .button {
border-radius: 0 3px 3px 0; }
.osd .button:last-child:dir(rtl):hover, .osd .button:last-child:dir(rtl):active, .osd .button:last-child:dir(rtl):checked, .osd .button:last-child:dir(rtl):insensitive, .osd .button:last-child:dir(rtl):backdrop, .osd .button.suggested-action:last-child:dir(rtl), .osd .button.destructive-action:last-child:dir(rtl), .inline-toolbar .button:last-child:dir(rtl), .linked > .button:last-child:dir(rtl), .inline-toolbar GtkToolButton:last-child > .button.flat:dir(rtl), .inline-toolbar .header-bar GtkToolButton:last-child > .button.titlebutton:dir(rtl), .header-bar .inline-toolbar GtkToolButton:last-child > .button.titlebutton:dir(rtl),
.osd .button:last-child:dir(rtl):hover, .osd .button:last-child:dir(rtl):active, .osd .button:last-child:dir(rtl):checked, .osd .button:last-child:dir(rtl):insensitive, .osd .button:last-child:dir(rtl):backdrop, .osd .button.suggested-action:last-child:dir(rtl), .osd .button.destructive-action:last-child:dir(rtl), .inline-toolbar .button:last-child:dir(rtl), .linked > .button:last-child:dir(rtl), .header-bar .linked > .button.titlebutton:last-child:dir(rtl),
.titlebar .linked > .button.titlebutton:last-child:dir(rtl), .inline-toolbar GtkToolButton:last-child > .button.flat:dir(rtl), .inline-toolbar .header-bar GtkToolButton:last-child > .button.titlebutton:dir(rtl), .header-bar .inline-toolbar GtkToolButton:last-child > .button.titlebutton:dir(rtl),
.inline-toolbar .titlebar GtkToolButton:last-child > .button.titlebutton:dir(rtl),
.titlebar .inline-toolbar GtkToolButton:last-child > .button.titlebutton:dir(rtl),
.inline-toolbar GtkToolButton:backdrop:last-child > .button.flat:dir(rtl), .inline-toolbar.toolbar GtkToolButton:last-child:dir(rtl) > .button.flat, .inline-toolbar GtkToolButton:last-child:dir(rtl) > .button.flat, .inline-toolbar.search-bar GtkToolButton:last-child:dir(rtl) > .button.flat, .inline-toolbar.location-bar GtkToolButton:last-child:dir(rtl) > .button.flat, .inline-toolbar .header-bar GtkToolButton:last-child:dir(rtl) > .button.titlebutton, .header-bar .inline-toolbar GtkToolButton:last-child:dir(rtl) > .button.titlebutton,
@@ -1192,7 +1227,8 @@ GtkComboBox.combobox-entry .titlebar .button.titlebutton,
.inline-toolbar .titlebar GtkToolButton:backdrop:last-child:dir(rtl) > .button.titlebutton,
.titlebar .inline-toolbar GtkToolButton:backdrop:last-child:dir(rtl) > .button.titlebutton, GtkComboBox.combobox-entry .entry:last-child:dir(rtl), GtkComboBox.combobox-entry .button:last-child:dir(rtl), .linked > GtkComboBox:last-child > .button:dir(rtl) {
border-right-style: solid; }
.osd .button:only-child:hover, .osd .button:only-child:active, .osd .button:only-child:checked, .osd .button:only-child:insensitive, .osd .button:only-child:backdrop, .osd .button.suggested-action:only-child, .osd .button.destructive-action:only-child, .inline-toolbar .button:only-child, .linked > .button:only-child, .inline-toolbar.toolbar GtkToolButton:only-child > .button.flat, .inline-toolbar GtkToolButton:only-child > .button.flat, .inline-toolbar.search-bar GtkToolButton:only-child > .button.flat, .inline-toolbar.location-bar GtkToolButton:only-child > .button.flat, .inline-toolbar .header-bar GtkToolButton:only-child > .button.titlebutton, .header-bar .inline-toolbar GtkToolButton:only-child > .button.titlebutton,
.osd .button:only-child:hover, .osd .button:only-child:active, .osd .button:only-child:checked, .osd .button:only-child:insensitive, .osd .button:only-child:backdrop, .osd .button.suggested-action:only-child, .osd .button.destructive-action:only-child, .inline-toolbar .button:only-child, .linked > .button:only-child, .header-bar .linked > .button.titlebutton:only-child,
.titlebar .linked > .button.titlebutton:only-child, .inline-toolbar.toolbar GtkToolButton:only-child > .button.flat, .inline-toolbar GtkToolButton:only-child > .button.flat, .inline-toolbar.search-bar GtkToolButton:only-child > .button.flat, .inline-toolbar.location-bar GtkToolButton:only-child > .button.flat, .inline-toolbar .header-bar GtkToolButton:only-child > .button.titlebutton, .header-bar .inline-toolbar GtkToolButton:only-child > .button.titlebutton,
.inline-toolbar .titlebar GtkToolButton:only-child > .button.titlebutton,
.titlebar .inline-toolbar GtkToolButton:only-child > .button.titlebutton,
.inline-toolbar.toolbar GtkToolButton:backdrop:only-child > .button.flat,
@@ -1206,20 +1242,24 @@ GtkComboBox.combobox-entry .titlebar .button.titlebutton,
border-radius: 3px;
border-style: solid; }
.linked.vertical > .entry, .linked.vertical > .entry:focus, .linked.vertical > .entry:insensitive, .linked.vertical > .entry:insensitive:backdrop, .linked.vertical > .entry:backdrop, .linked.vertical > .button, .linked.vertical > .button:hover, .linked.vertical > .button:active, .linked.vertical > .button:checked, .linked.vertical > .button:backdrop, .linked.vertical > GtkComboBoxText > .button,
.linked.vertical > .entry, .linked.vertical > .entry:focus, .linked.vertical > .entry:insensitive, .linked.vertical > .entry:insensitive:backdrop, .linked.vertical > .entry:backdrop, .linked.vertical > .button, .header-bar .linked.vertical > .button.titlebutton,
.titlebar .linked.vertical > .button.titlebutton, .linked.vertical > .button:hover, .linked.vertical > .button:active, .linked.vertical > .button:checked, .linked.vertical > .button:backdrop, .linked.vertical > GtkComboBoxText > .button,
.linked.vertical > GtkComboBox > .button {
border-left-style: solid;
border-top-style: none;
border-radius: 0; }
.linked.vertical > .entry:first-child, .linked.vertical > .button:first-child, .linked.vertical > GtkComboBoxText:first-child > .button,
.linked.vertical > .entry:first-child, .linked.vertical > .button:first-child, .header-bar .linked.vertical > .button.titlebutton:first-child,
.titlebar .linked.vertical > .button.titlebutton:first-child, .linked.vertical > GtkComboBoxText:first-child > .button,
.linked.vertical > GtkComboBox:first-child > .button {
border-style: solid;
border-radius: 3px 3px 0 0; }
.linked.vertical > .entry:last-child, .linked.vertical > .button:last-child, .linked.vertical > GtkComboBoxText:last-child > .button,
.linked.vertical > .entry:last-child, .linked.vertical > .button:last-child, .header-bar .linked.vertical > .button.titlebutton:last-child,
.titlebar .linked.vertical > .button.titlebutton:last-child, .linked.vertical > GtkComboBoxText:last-child > .button,
.linked.vertical > GtkComboBox:last-child > .button {
border-radius: 0 0 3px 3px; }
.linked.vertical > .entry:only-child, .linked.vertical > .button:only-child, .linked.vertical > GtkComboBoxText:only-child > .button,
.linked.vertical > .entry:only-child, .linked.vertical > .button:only-child, .header-bar .linked.vertical > .button.titlebutton:only-child,
.titlebar .linked.vertical > .button.titlebutton:only-child, .linked.vertical > GtkComboBoxText:only-child > .button,
.linked.vertical > GtkComboBox:only-child > .button {
border-radius: 3px;
border-style: solid; }
@@ -1430,7 +1470,9 @@ GtkColorButton.button, .header-bar GtkColorButton.button.titlebutton,
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0); }
.spinbutton.vertical .button:first-child:insensitive > .label, .spinbutton.vertical:dir(rtl) .button:first-child:insensitive > .label {
.spinbutton.vertical .button:first-child:insensitive > .label, .spinbutton.vertical .header-bar .button.titlebutton:first-child:insensitive > .label,
.spinbutton.vertical .titlebar .button.titlebutton:first-child:insensitive > .label, .spinbutton.vertical:dir(rtl) .button:first-child:insensitive > .label, .spinbutton.vertical:dir(rtl) .header-bar .button.titlebutton:first-child:insensitive > .label,
.spinbutton.vertical:dir(rtl) .titlebar .button.titlebutton:first-child:insensitive > .label {
color: inherit; }
.spinbutton.vertical .button:first-child:backdrop, .spinbutton.vertical:dir(rtl) .button:first-child:backdrop {
color: #8d9091;
@@ -1470,7 +1512,9 @@ GtkColorButton.button, .header-bar GtkColorButton.button.titlebutton,
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px white; }
.spinbutton.vertical .button:last-child:insensitive > .label, .spinbutton.vertical:dir(rtl) .button:last-child:insensitive > .label {
.spinbutton.vertical .button:last-child:insensitive > .label, .spinbutton.vertical .header-bar .button.titlebutton:last-child:insensitive > .label,
.spinbutton.vertical .titlebar .button.titlebutton:last-child:insensitive > .label, .spinbutton.vertical:dir(rtl) .button:last-child:insensitive > .label, .spinbutton.vertical:dir(rtl) .header-bar .button.titlebutton:last-child:insensitive > .label,
.spinbutton.vertical:dir(rtl) .titlebar .button.titlebutton:last-child:insensitive > .label {
color: inherit; }
.spinbutton.vertical .button:last-child:backdrop, .spinbutton.vertical:dir(rtl) .button:last-child:backdrop {
color: #8d9091;
@@ -1486,7 +1530,9 @@ GtkColorButton.button, .header-bar GtkColorButton.button.titlebutton,
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(255, 255, 255, 0); }
.spinbutton.vertical .button:backdrop:insensitive > .label, .spinbutton.vertical:dir(rtl) .button:backdrop:insensitive > .label {
.spinbutton.vertical .button:backdrop:insensitive > .label, .spinbutton.vertical .header-bar .button.titlebutton:backdrop:insensitive > .label,
.spinbutton.vertical .titlebar .button.titlebutton:backdrop:insensitive > .label, .spinbutton.vertical:dir(rtl) .button:backdrop:insensitive > .label, .spinbutton.vertical:dir(rtl) .header-bar .button.titlebutton:backdrop:insensitive > .label,
.spinbutton.vertical:dir(rtl) .titlebar .button.titlebutton:backdrop:insensitive > .label {
color: inherit; }
.spinbutton.vertical.entry, .spinbutton.vertical:dir(rtl).entry {
border-radius: 0;
@@ -1693,11 +1739,13 @@ GtkComboBox {
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(164, 199, 236, 0);
border-color: #184472; }
.titlebar.selection-mode .button:backdrop:insensitive > .label, .titlebar.selection-mode .button.flat:backdrop:insensitive > .label,
.titlebar.selection-mode .button:backdrop:insensitive > .label, .titlebar.selection-mode .header-bar .button.titlebutton:backdrop:insensitive > .label, .titlebar.selection-mode .button.flat:backdrop:insensitive > .label, .titlebar.selection-mode .header-bar .titlebutton.button:backdrop:insensitive > .label,
.titlebar.selection-mode .titlebutton.button:backdrop:insensitive > .label,
.header-bar.selection-mode .button:backdrop:insensitive > .label,
.header-bar.selection-mode .titlebar .button.titlebutton:backdrop:insensitive > .label,
.header-bar.selection-mode .button.flat:backdrop:insensitive > .label,
.header-bar.selection-mode .titlebutton.button:backdrop:insensitive > .label {
.header-bar.selection-mode .titlebutton.button:backdrop:insensitive > .label,
.header-bar.selection-mode .titlebar .titlebutton.button:backdrop:insensitive > .label {
color: inherit; }
.titlebar.selection-mode .button:backdrop:insensitive:active, .titlebar.selection-mode .button:backdrop:insensitive:checked, .titlebar.selection-mode .button.flat:backdrop:insensitive:active,
.titlebar.selection-mode .titlebutton.button:backdrop:insensitive:active, .titlebar.selection-mode .button.flat:backdrop:insensitive:checked,
@@ -1713,15 +1761,19 @@ GtkComboBox {
background-image: linear-gradient(to bottom, #5093da);
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(164, 199, 236, 0);
border-color: #184472; }
.titlebar.selection-mode .button:backdrop:insensitive:active > .label, .titlebar.selection-mode .button:backdrop:insensitive:checked > .label, .titlebar.selection-mode .button.flat:backdrop:insensitive:active > .label,
.titlebar.selection-mode .titlebutton.button:backdrop:insensitive:active > .label, .titlebar.selection-mode .button.flat:backdrop:insensitive:checked > .label,
.titlebar.selection-mode .button:backdrop:insensitive:active > .label, .titlebar.selection-mode .header-bar .button.titlebutton:backdrop:insensitive:active > .label, .titlebar.selection-mode .button:backdrop:insensitive:checked > .label, .titlebar.selection-mode .header-bar .button.titlebutton:backdrop:insensitive:checked > .label, .titlebar.selection-mode .button.flat:backdrop:insensitive:active > .label, .titlebar.selection-mode .header-bar .titlebutton.button:backdrop:insensitive:active > .label,
.titlebar.selection-mode .titlebutton.button:backdrop:insensitive:active > .label, .titlebar.selection-mode .button.flat:backdrop:insensitive:checked > .label, .titlebar.selection-mode .header-bar .titlebutton.button:backdrop:insensitive:checked > .label,
.titlebar.selection-mode .titlebutton.button:backdrop:insensitive:checked > .label,
.header-bar.selection-mode .button:backdrop:insensitive:active > .label,
.header-bar.selection-mode .titlebar .button.titlebutton:backdrop:insensitive:active > .label,
.header-bar.selection-mode .button:backdrop:insensitive:checked > .label,
.header-bar.selection-mode .titlebar .button.titlebutton:backdrop:insensitive:checked > .label,
.header-bar.selection-mode .button.flat:backdrop:insensitive:active > .label,
.header-bar.selection-mode .titlebutton.button:backdrop:insensitive:active > .label,
.header-bar.selection-mode .titlebar .titlebutton.button:backdrop:insensitive:active > .label,
.header-bar.selection-mode .button.flat:backdrop:insensitive:checked > .label,
.header-bar.selection-mode .titlebutton.button:backdrop:insensitive:checked > .label {
.header-bar.selection-mode .titlebutton.button:backdrop:insensitive:checked > .label,
.header-bar.selection-mode .titlebar .titlebutton.button:backdrop:insensitive:checked > .label {
color: inherit; }
.titlebar.selection-mode .button.flat:backdrop,
.titlebar.selection-mode .titlebutton.button:backdrop, .titlebar.selection-mode .button.flat:insensitive,
@@ -1747,8 +1799,9 @@ GtkComboBox {
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px #a4c7ec; }
.titlebar.selection-mode .button:insensitive > .label,
.header-bar.selection-mode .button:insensitive > .label {
.titlebar.selection-mode .button:insensitive > .label, .titlebar.selection-mode .header-bar .button.titlebutton:insensitive > .label,
.header-bar.selection-mode .button:insensitive > .label,
.header-bar.selection-mode .titlebar .button.titlebutton:insensitive > .label {
color: inherit; }
.titlebar.selection-mode .button:insensitive:active, .titlebar.selection-mode .button:insensitive:checked,
.header-bar.selection-mode .button:insensitive:active,
@@ -1757,9 +1810,11 @@ GtkComboBox {
border-color: #1c5187;
background-image: linear-gradient(to bottom, #4a8cd1, #5093da);
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px #a4c7ec; }
.titlebar.selection-mode .button:insensitive:active > .label, .titlebar.selection-mode .button:insensitive:checked > .label,
.titlebar.selection-mode .button:insensitive:active > .label, .titlebar.selection-mode .header-bar .button.titlebutton:insensitive:active > .label, .titlebar.selection-mode .button:insensitive:checked > .label, .titlebar.selection-mode .header-bar .button.titlebutton:insensitive:checked > .label,
.header-bar.selection-mode .button:insensitive:active > .label,
.header-bar.selection-mode .button:insensitive:checked > .label {
.header-bar.selection-mode .titlebar .button.titlebutton:insensitive:active > .label,
.header-bar.selection-mode .button:insensitive:checked > .label,
.header-bar.selection-mode .titlebar .button.titlebutton:insensitive:checked > .label {
color: inherit; }
.titlebar.selection-mode .button.suggested-action,
.header-bar.selection-mode .button.suggested-action {
@@ -1800,8 +1855,9 @@ GtkComboBox {
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px #a4c7ec;
border-color: #184472; }
.titlebar.selection-mode .button.suggested-action:insensitive > .label,
.header-bar.selection-mode .button.suggested-action:insensitive > .label {
.titlebar.selection-mode .button.suggested-action:insensitive > .label, .titlebar.selection-mode .header-bar .suggested-action.button.titlebutton:insensitive > .label,
.header-bar.selection-mode .button.suggested-action:insensitive > .label,
.header-bar.selection-mode .titlebar .suggested-action.button.titlebutton:insensitive > .label {
color: inherit; }
.titlebar.selection-mode .button.suggested-action:backdrop,
.header-bar.selection-mode .button.suggested-action:backdrop {
@@ -1821,8 +1877,9 @@ GtkComboBox {
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(164, 199, 236, 0);
border-color: #184472; }
.titlebar.selection-mode .button.suggested-action:backdrop:insensitive > .label,
.header-bar.selection-mode .button.suggested-action:backdrop:insensitive > .label {
.titlebar.selection-mode .button.suggested-action:backdrop:insensitive > .label, .titlebar.selection-mode .header-bar .suggested-action.button.titlebutton:backdrop:insensitive > .label,
.header-bar.selection-mode .button.suggested-action:backdrop:insensitive > .label,
.header-bar.selection-mode .titlebar .suggested-action.button.titlebutton:backdrop:insensitive > .label {
color: inherit; }
.titlebar.selection-mode .selection-menu, .titlebar.selection-mode .selection-menu:backdrop,
.header-bar.selection-mode .selection-menu,
@@ -3734,7 +3791,8 @@ GtkPlacesSidebar.sidebar .view .separator:backdrop {
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0);
border-color: #184472; }
.list-row:selected .button:backdrop:insensitive > .label, .list-row:selected .button.flat:backdrop:insensitive > .label, .list-row:selected .header-bar .titlebutton.button:backdrop:insensitive > .label, .header-bar .list-row:selected .titlebutton.button:backdrop:insensitive > .label,
.list-row:selected .button:backdrop:insensitive > .label, .list-row:selected .header-bar .button.titlebutton:backdrop:insensitive > .label,
.list-row:selected .titlebar .button.titlebutton:backdrop:insensitive > .label, .list-row:selected .button.flat:backdrop:insensitive > .label, .list-row:selected .header-bar .titlebutton.button:backdrop:insensitive > .label, .header-bar .list-row:selected .titlebutton.button:backdrop:insensitive > .label,
.list-row:selected .titlebar .titlebutton.button:backdrop:insensitive > .label,
.titlebar .list-row:selected .titlebutton.button:backdrop:insensitive > .label {
color: inherit; }
@@ -3748,7 +3806,9 @@ GtkPlacesSidebar.sidebar .view .separator:backdrop {
background-image: linear-gradient(to bottom, #e7e7e7);
box-shadow: inset 0 1px rgba(255, 255, 255, 0);
border-color: #184472; }
.list-row:selected .button:backdrop:insensitive:active > .label, .list-row:selected .button:backdrop:insensitive:checked > .label, .list-row:selected .button.flat:backdrop:insensitive:active > .label, .list-row:selected .header-bar .titlebutton.button:backdrop:insensitive:active > .label, .header-bar .list-row:selected .titlebutton.button:backdrop:insensitive:active > .label,
.list-row:selected .button:backdrop:insensitive:active > .label, .list-row:selected .header-bar .button.titlebutton:backdrop:insensitive:active > .label,
.list-row:selected .titlebar .button.titlebutton:backdrop:insensitive:active > .label, .list-row:selected .button:backdrop:insensitive:checked > .label, .list-row:selected .header-bar .button.titlebutton:backdrop:insensitive:checked > .label,
.list-row:selected .titlebar .button.titlebutton:backdrop:insensitive:checked > .label, .list-row:selected .button.flat:backdrop:insensitive:active > .label, .list-row:selected .header-bar .titlebutton.button:backdrop:insensitive:active > .label, .header-bar .list-row:selected .titlebutton.button:backdrop:insensitive:active > .label,
.list-row:selected .titlebar .titlebutton.button:backdrop:insensitive:active > .label,
.titlebar .list-row:selected .titlebutton.button:backdrop:insensitive:active > .label, .list-row:selected .button.flat:backdrop:insensitive:checked > .label, .list-row:selected .header-bar .titlebutton.button:backdrop:insensitive:checked > .label, .header-bar .list-row:selected .titlebutton.button:backdrop:insensitive:checked > .label,
.list-row:selected .titlebar .titlebutton.button:backdrop:insensitive:checked > .label,
@@ -3772,14 +3832,17 @@ GtkPlacesSidebar.sidebar .view .separator:backdrop {
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0);
border-color: #184472; }
.list-row:selected .button:insensitive > .label {
.list-row:selected .button:insensitive > .label, .list-row:selected .header-bar .button.titlebutton:insensitive > .label,
.list-row:selected .titlebar .button.titlebutton:insensitive > .label {
color: inherit; }
.list-row:selected .button:insensitive:active, .list-row:selected .button:insensitive:checked {
color: #8d9091;
border-color: #a1a1a1;
background-image: linear-gradient(to bottom, #ebebeb, #f4f4f4);
box-shadow: inset 0 1px rgba(255, 255, 255, 0); }
.list-row:selected .button:insensitive:active > .label, .list-row:selected .button:insensitive:checked > .label {
.list-row:selected .button:insensitive:active > .label, .list-row:selected .header-bar .button.titlebutton:insensitive:active > .label,
.list-row:selected .titlebar .button.titlebutton:insensitive:active > .label, .list-row:selected .button:insensitive:checked > .label, .list-row:selected .header-bar .button.titlebutton:insensitive:checked > .label,
.list-row:selected .titlebar .button.titlebutton:insensitive:checked > .label {
color: inherit; }
.list-row, list-row.button, .header-bar list-row.button.titlebutton,
@@ -3955,7 +4018,8 @@ GtkCalendar {
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0); }
.message-dialog.csd .dialog-action-area .button:insensitive > .label {
.message-dialog.csd .dialog-action-area .button:insensitive > .label, .message-dialog.csd .dialog-action-area .header-bar .button.titlebutton:insensitive > .label,
.message-dialog.csd .dialog-action-area .titlebar .button.titlebutton:insensitive > .label {
color: inherit; }
.message-dialog.csd .dialog-action-area .button:backdrop {
color: #8d9091;
@@ -3971,7 +4035,8 @@ GtkCalendar {
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0); }
.message-dialog.csd .dialog-action-area .button:backdrop:insensitive > .label {
.message-dialog.csd .dialog-action-area .button:backdrop:insensitive > .label, .message-dialog.csd .dialog-action-area .header-bar .button.titlebutton:backdrop:insensitive > .label,
.message-dialog.csd .dialog-action-area .titlebar .button.titlebutton:backdrop:insensitive > .label {
color: inherit; }
.message-dialog.csd .dialog-action-area .button.suggested-action {
color: white;
@@ -4011,7 +4076,8 @@ GtkCalendar {
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0); }
.message-dialog.csd .dialog-action-area .button.suggested-action:backdrop:insensitive > .label {
.message-dialog.csd .dialog-action-area .button.suggested-action:backdrop:insensitive > .label, .message-dialog.csd .dialog-action-area .header-bar .suggested-action.button.titlebutton:backdrop:insensitive > .label,
.message-dialog.csd .dialog-action-area .titlebar .suggested-action.button.titlebutton:backdrop:insensitive > .label {
color: inherit; }
.message-dialog.csd .dialog-action-area .button.suggested-action:insensitive {
color: #8d9091;
@@ -4020,7 +4086,8 @@ GtkCalendar {
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0); }
.message-dialog.csd .dialog-action-area .button.suggested-action:insensitive > .label {
.message-dialog.csd .dialog-action-area .button.suggested-action:insensitive > .label, .message-dialog.csd .dialog-action-area .header-bar .suggested-action.button.titlebutton:insensitive > .label,
.message-dialog.csd .dialog-action-area .titlebar .suggested-action.button.titlebutton:insensitive > .label {
color: inherit; }
.message-dialog.csd .dialog-action-area .button.destructive-action {
color: white;
@@ -4060,7 +4127,8 @@ GtkCalendar {
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0); }
.message-dialog.csd .dialog-action-area .button.destructive-action:backdrop:insensitive > .label {
.message-dialog.csd .dialog-action-area .button.destructive-action:backdrop:insensitive > .label, .message-dialog.csd .dialog-action-area .header-bar .destructive-action.button.titlebutton:backdrop:insensitive > .label,
.message-dialog.csd .dialog-action-area .titlebar .destructive-action.button.titlebutton:backdrop:insensitive > .label {
color: inherit; }
.message-dialog.csd .dialog-action-area .button.destructive-action:insensitive {
color: #8d9091;
@@ -4069,7 +4137,8 @@ GtkCalendar {
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0); }
.message-dialog.csd .dialog-action-area .button.destructive-action:insensitive > .label {
.message-dialog.csd .dialog-action-area .button.destructive-action:insensitive > .label, .message-dialog.csd .dialog-action-area .header-bar .destructive-action.button.titlebutton:insensitive > .label,
.message-dialog.csd .dialog-action-area .titlebar .destructive-action.button.titlebutton:insensitive > .label {
color: inherit; }
.message-dialog.csd .dialog-action-area .button, .message-dialog.csd .dialog-action-area .button:hover, .message-dialog.csd .dialog-action-area .button:active, .message-dialog.csd .dialog-action-area .button:insensitive, .message-dialog.csd .dialog-action-area .button:backdrop, .message-dialog.csd .dialog-action-area .button:backdrop:insensitive, .message-dialog.csd .dialog-action-area .button.suggested-action, .message-dialog.csd .dialog-action-area .button.suggested-action:hover, .message-dialog.csd .dialog-action-area .button.suggested-action:active, .message-dialog.csd .dialog-action-area .button.suggested-action:backdrop, .message-dialog.csd .dialog-action-area .button.suggested-action:backdrop:insensitive, .message-dialog.csd .dialog-action-area .button.suggested-action:insensitive, .message-dialog.csd .dialog-action-area .button.destructive-action, .message-dialog.csd .dialog-action-area .button.destructive-action:hover, .message-dialog.csd .dialog-action-area .button.destructive-action:active, .message-dialog.csd .dialog-action-area .button.destructive-action:backdrop, .message-dialog.csd .dialog-action-area .button.destructive-action:backdrop:insensitive, .message-dialog.csd .dialog-action-area .button.destructive-action:insensitive {
border-left-style: solid;
@@ -4223,10 +4292,17 @@ GtkInfoBar {
text-shadow: none;
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0); }
.info .button:insensitive > .label,
.info .button:insensitive > .label, .info .header-bar .button.titlebutton:insensitive > .label,
.info .titlebar .button.titlebutton:insensitive > .label,
.question .button:insensitive > .label,
.question .header-bar .button.titlebutton:insensitive > .label,
.question .titlebar .button.titlebutton:insensitive > .label,
.warning .button:insensitive > .label,
.error .button:insensitive > .label {
.warning .header-bar .button.titlebutton:insensitive > .label,
.warning .titlebar .button.titlebutton:insensitive > .label,
.error .button:insensitive > .label,
.error .header-bar .button.titlebutton:insensitive > .label,
.error .titlebar .button.titlebutton:insensitive > .label {
color: inherit; }
.info .button:backdrop,
.question .button:backdrop,
@@ -4250,10 +4326,17 @@ GtkInfoBar {
icon-shadow: none;
box-shadow: inset 0 1px rgba(255, 255, 255, 0);
border-color: #1c5187; }
.info .button:backdrop:insensitive > .label,
.info .button:backdrop:insensitive > .label, .info .header-bar .button.titlebutton:backdrop:insensitive > .label,
.info .titlebar .button.titlebutton:backdrop:insensitive > .label,
.question .button:backdrop:insensitive > .label,
.question .header-bar .button.titlebutton:backdrop:insensitive > .label,
.question .titlebar .button.titlebutton:backdrop:insensitive > .label,
.warning .button:backdrop:insensitive > .label,
.error .button:backdrop:insensitive > .label {
.warning .header-bar .button.titlebutton:backdrop:insensitive > .label,
.warning .titlebar .button.titlebutton:backdrop:insensitive > .label,
.error .button:backdrop:insensitive > .label,
.error .header-bar .button.titlebutton:backdrop:insensitive > .label,
.error .titlebar .button.titlebutton:backdrop:insensitive > .label {
color: inherit; }
.info .label:selected,
.info .label:selected:focus,
@@ -4417,6 +4500,12 @@ GtkVolumeButton.button, .header-bar GtkVolumeButton.button.titlebutton,
.window-frame.csd.message-dialog {
border-radius: 7px;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(0, 0, 0, 0.13); }
.window-frame.solid-csd {
border-radius: 0;
margin: 4px;
background-color: #ededed;
border: solid 1px #a8a8a8;
box-shadow: none; }
.header-bar .titlebutton.button,
.titlebar .titlebutton.button {
@@ -4441,8 +4530,7 @@ GtkVolumeButton.button, .header-bar GtkVolumeButton.button.titlebutton,
outline-color: rgba(255, 255, 255, 0.3); }
.view:backdrop:selected, GtkCalendar:backdrop:selected, .label:backdrop:selected, .grid-child:backdrop:selected, .entry:backdrop:selected, .menuitem.button.flat:backdrop:selected, .header-bar .menuitem.titlebutton.button:backdrop:selected,
.titlebar .menuitem.titlebutton.button:backdrop:selected, .list-row:backdrop:selected, .sidebar:backdrop:selected, GtkPlacesSidebar.sidebar .view:backdrop:selected, GtkPlacesSidebar.sidebar GtkCalendar:backdrop:selected {
color: #ffffff;
background-color: #929292; }
color: #ffffff; }
/* Decouple the font of context menus from their entry/textview */
.touch-selection,
+8 -1
View File
@@ -583,7 +583,7 @@ $_dot_color: $selected_bg_color;
&:backdrop {
color: $backdrop_fg_color;
@extend %undecorated_button;
&:hover { color: $selected_fg_color; background-color: selected_bg_color; }
&:hover { color: $selected_fg_color; background-color: $selected_bg_color; }
}
&:insensitive { color: $insensitive_fg_color; }
}
@@ -2260,6 +2260,13 @@ GtkColorChooserWidget #add-color-button {
box-shadow: none;
}
}
&.solid-csd {
border-radius: 0;
margin: 4px;
background-color: $backdrop_bg_color;
border: solid 1px $backdrop_borders_color;
box-shadow: none;
}
}
// Window Close button
+8 -3
View File
@@ -175,8 +175,7 @@
box-shadow: none; }
.label:insensitive, .label:backdrop:insensitive {
color: #7f7f7f;
background-color: white; }
color: #7f7f7f; }
/*********************
* Spinner Animation *
@@ -782,7 +781,7 @@
color: #000; }
.menuitem.button.flat:backdrop:hover {
color: #fff;
background-color: selected_bg_color; }
background-color: #000; }
.menuitem.button.flat:insensitive {
color: #7f7f7f; }
@@ -2512,6 +2511,12 @@ GtkColorChooserWidget #add-color-button {
.window-frame.csd.tooltip {
border-radius: 5px;
box-shadow: none; }
.window-frame.solid-csd {
border-radius: 0;
margin: 4px;
background-color: #fff;
border: solid 1px #8b8b8b;
box-shadow: none; }
.button.titlebutton {
padding: 8px;
+9
View File
@@ -872,3 +872,12 @@ GtkCalendar.button:hover {
.window-frame:backdrop {
box-shadow: 0 2px 5px 1px alpha(black, 0.5);
}
.window-frame.solid-csd {
border-radius: 0;
margin: 2px;
background-color: @bg_color;
border-style: outset;
border-width: 2px;
box-shadow: none;
}
+70 -16
View File
@@ -78,22 +78,13 @@
</packing>
</child>
<child>
<object class="GtkButton" id="browse_new_folder_button">
<property name="tooltip-text" translatable="yes">Create Folder</property>
<object class="GtkMenuButton" id="browse_new_folder_button">
<property name="label" translatable="yes">Create _Folder</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<signal name="clicked" handler="new_folder_button_clicked" swapped="no"/>
<style>
<class name="image-button"/>
</style>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="icon-name">list-add-symbolic</property>
<property name="icon-size">1</property>
</object>
</child>
<property name="popover">new_folder_popover</property>
<signal name="notify::active" handler="new_folder_popover_active"/>
</object>
<packing>
<property name="expand">False</property>
@@ -226,8 +217,6 @@
<child>
<object class="GtkCellRendererText" id="list_name_renderer">
<property name="ellipsize">end</property>
<signal name="edited" handler="renderer_edited_cb" swapped="no"/>
<signal name="editing-canceled" handler="renderer_editing_canceled_cb" swapped="no"/>
</object>
</child>
</object>
@@ -372,4 +361,69 @@
<widget name="browse_new_folder_button"/>
</widgets>
</object>
<object class="GtkPopover" id="new_folder_popover">
<property name="modal">True</property>
<child>
<object class="GtkGrid">
<property name="visible">True</property>
<property name="margin">10</property>
<property name="column-spacing">6</property>
<property name="row-spacing">6</property>
<property name="row-homogeneous">False</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="label" translatable="yes">Folder Name</property>
<property name="halign">start</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
<property name="width">2</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="new_folder_name_entry">
<property name="visible">True</property>
<property name="width-chars">25</property>
<signal name="changed" handler="new_folder_name_changed"/>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="new_folder_create_button">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="label" translatable="yes">_Create</property>
<property name="use_underline">True</property>
<signal name="clicked" handler="new_folder_create_clicked"/>
<style>
<class name="suggested-action"/>
</style>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="new_folder_error_label">
<property name="visible">True</property>
<property name="halign">start</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">2</property>
<property name="width">2</property>
</packing>
</child>
</object>
</child>
</object>
</interface>
+1 -1
View File
@@ -1491,7 +1491,7 @@ build_cache (const gchar *path)
opentmp:
if ((fd = g_open (tmp_cache_path, O_WRONLY | O_CREAT | O_EXCL | O_TRUNC | _O_BINARY, mode)) == -1)
{
if (force_update && retry_count == 0)
if (retry_count == 0)
{
retry_count++;
g_remove (tmp_cache_path);
+1
View File
@@ -118,6 +118,7 @@ gtk/gtkcolorscale.c
gtk/gtkcolorswatch.c
gtk/gtkcombobox.c
gtk/gtkcontainer.c
gtk/gtkcssnode.c
gtk/gtkcssprovider.c
gtk/gtkcssshorthandproperty.c
gtk/gtkcssstyleproperty.c
+3
View File
@@ -60,6 +60,7 @@ gtk/inspector/classes-list.ui
gtk/inspector/classes-list.ui.h
gtk/inspector/css-editor.ui
gtk/inspector/css-editor.ui.h
gtk/inspector/css-node-tree.ui
gtk/inspector/data-list.ui
gtk/inspector/data-list.ui.h
gtk/inspector/general.ui
@@ -167,6 +168,8 @@ testsuite/reftests/border-image-url.ref.ui
testsuite/reftests/border-image-url-scaled.ref.ui
testsuite/reftests/border-image-url-scaled.ui
testsuite/reftests/border-image-url.ui
testsuite/reftests/box-order.ref.ui
testsuite/reftests/box-order.ui
testsuite/reftests/box-packing.ui
testsuite/reftests/box-pseudo-classes.ref.ui
testsuite/reftests/box-pseudo-classes.ui
+2310 -2343
View File
File diff suppressed because it is too large Load Diff
+2268 -2332
View File
File diff suppressed because it is too large Load Diff
+2208 -2208
View File
File diff suppressed because it is too large Load Diff
+2261 -2229
View File
File diff suppressed because it is too large Load Diff
+2206 -2206
View File
File diff suppressed because it is too large Load Diff
+2216 -2209
View File
File diff suppressed because it is too large Load Diff
+930 -1130
View File
File diff suppressed because it is too large Load Diff
+331 -294
View File
File diff suppressed because it is too large Load Diff
+3929 -2975
View File
File diff suppressed because it is too large Load Diff
+324 -292
View File
File diff suppressed because it is too large Load Diff
+2414 -2169
View File
File diff suppressed because it is too large Load Diff
+2699 -2954
View File
File diff suppressed because it is too large Load Diff
+2
View File
@@ -118,6 +118,7 @@ gtk/gtkcolorscale.c
gtk/gtkcolorswatch.c
gtk/gtkcombobox.c
gtk/gtkcontainer.c
gtk/gtkcssnode.c
gtk/gtkcssprovider.c
gtk/gtkcssshorthandproperty.c
gtk/gtkcssstyleproperty.c
@@ -289,6 +290,7 @@ gtk/inspector/classes-list.c
gtk/inspector/classes-list.ui
gtk/inspector/css-editor.c
gtk/inspector/css-editor.ui
gtk/inspector/css-node-tree.ui
gtk/inspector/data-list.ui
gtk/inspector/general.c
gtk/inspector/general.ui
+2
View File
@@ -94,6 +94,8 @@ testsuite/reftests/border-image-url.ref.ui
testsuite/reftests/border-image-url-scaled.ref.ui
testsuite/reftests/border-image-url-scaled.ui
testsuite/reftests/border-image-url.ui
testsuite/reftests/box-order.ref.ui
testsuite/reftests/box-order.ui
testsuite/reftests/box-packing.ui
testsuite/reftests/box-pseudo-classes.ref.ui
testsuite/reftests/box-pseudo-classes.ui
+3919 -2585
View File
File diff suppressed because it is too large Load Diff
+156 -730
View File
File diff suppressed because it is too large Load Diff
+1853 -1781
View File
File diff suppressed because it is too large Load Diff
+1674 -1671
View File
File diff suppressed because it is too large Load Diff
+1641 -1656
View File
File diff suppressed because it is too large Load Diff
+1707 -1669
View File
File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More