Timm Bäder
601839c825
Remove various sizing related style properties
2016-10-16 18:17:21 +02:00
Benjamin Otte
eace2cf421
API: Remove gdk_window_set_background()
...
Backgrounds are always transparent black.
2016-10-16 18:17:21 +02:00
Benjamin Otte
662001b60a
API: Remove ability to set visuals on windows
...
And with it, gtk_widget_get_visual() and gtk_widget_set_visual() are
gone.
We now always use the RGBA visual (if available) and otherwise fall back
to the system visual.
2016-10-16 18:17:21 +02:00
Benjamin Otte
e1a03ead7a
Use NULL for generic marshallers in g_signal_new()
...
glib will use the correct marshaller automatically. And as a side
effect, we also get all glib optimizations, like a va marshaller.
2016-08-29 16:20:54 +02:00
Matthias Clasen
ae636ba0c2
notebook: Update arrow state when switching pages
...
Otherwise, we may end up showing clickable arrows that don't
do anything.
https://bugzilla.gnome.org/show_bug.cgi?id=770332
2016-08-24 14:10:35 -04:00
William Hua
8701e34f74
port to new gtk_menu_popup_at_* () functions
...
https://bugzilla.gnome.org/show_bug.cgi?id=756579
2016-07-19 09:38:54 -04:00
Matthias Clasen
ca43f6ee28
notebook: Free gadgets in finalize
...
This is the right place for this.
2016-06-05 20:00:43 -04:00
Carlos Soriano
ddb0740a21
gtknotebook: avoid tab dnd from content
...
Before commit 6c1bee2377
we were setting an attribute of GtkNotebook
to track the pressed button if the pressed button happened on the
tab itself.
Later in the motion handling code we were checking whether the private
pressed button attribute was set or not in order to handle a tab dnd
or not.
In commit 6c1bee2377
the code changed and set the pressed button
variable unconditionally, which means, a motion event from within the
tab content triggered a tab reordering.
This happened only if the children hierarchy have a widget that bubbles
up both button press event, which sets the private pressed button
attribute; and motion events, which started the tab dnd checking the
private pressed button attribute.
A widget that experienced the regression was GtkListBox.
In order to fix it, set the button pressed variable only when it press
the tab itself, not the content.
https://bugzilla.gnome.org/show_bug.cgi?id=764395
2016-05-02 13:17:48 +02:00
Matthias Clasen
2148708917
box gadget: Redo expand flag handling
...
We only keep one align flag per child, so it seems odd to
keep separate h/v expand flags. Just keep one expand flag
and interpret it according to orientation. Allow setting
the expand flag for child widgets too, though, so we can
make widget expand without interfering with the recursive
widget expand flag.
Update all callers.
Use the new possibility of expanding child widgets to make
the label of check and radio buttons expand. This fixes
unexpected behavior of these widgets in RTL in some places.
https://bugzilla.gnome.org/show_bug.cgi?id=765742
2016-04-28 21:59:34 -04:00
Carlos Garnacho
160a4fe5ac
GtkNotebook: Make tab DnD use application/x-rootwindow-drop again
...
Besides the ::drag-failed handling in order to trigger the window creation
hook, add some handling of the application/x-rootwindow-drop mimetype, so
the same effect is achieved if the tab could be dropped in a destination
accepting this mimetype.
https://bugzilla.gnome.org/show_bug.cgi?id=763387
2016-03-14 16:16:32 +01:00
Benjamin Otte
61f5562f9f
notebook: Tell everyone we reordered stuff
...
Fixes keybindings for reordering actually emitting signals and properly
updating CSS/the screen.
2016-02-29 23:17:00 +01:00
Benjamin Otte
a74bb0dec4
notebook: Reallocate tab gadgets when we reorder them
...
Otherwise they stay in their position and don't cause a redraw. Which
really confuses Epiphany users apparently.
https://bugzilla.gnome.org/show_bug.cgi?id=762720
2016-02-29 22:00:03 +01:00
Benjamin Otte
245d217e06
boxgadget: Add ability to draw children in reverse
...
This is necessary for GtkNotebook so that the stack is always drawn
before the header.
And that is necessary so that the active tab can use negative
margins to overdraw the border of the stack to create a gap and
simulate old GTK2-style visuals for notebooks.
2016-02-27 03:59:20 +01:00
Benjamin Otte
cdb1cda68b
notebook: The active tab is now :checked
...
:active is reserved for "mouse button down on node", so we have to use
something else. And stack switcher and radio buttons use :checked for
the active widget, so it makes sense to use :checked for the active tab,
too.
Themes have been adapted.
TODO: Implement :active for tabs.
2016-02-27 03:48:46 +01:00
Matthias Clasen
cb43af090b
notebook: Fix a misplaced tab label
...
Sometimes default tab labels ("Page <n>") get created on-demand,
and in that case, we were forgetting to put them below the tab
node in the CSS node tree. The visible result of this is that the
heuristics for when to give notebooks background in Adwaita fail
in some cases. So, make sure to always place the label below the
tab node.
2016-02-15 10:38:13 -05:00
Matthias Clasen
bb15c53966
notebook: fix arrow states
...
Some code was confusing 0 with ARROW_NONE, causing us to not properly
update the state of the arrow gadgets.
2016-02-11 06:47:28 -05:00
Timm Bäder
c5369356e8
Various documentation fixes
...
Always have Since: annotations at the very bottom, use the correct
ClassName::signal-name/ClassName:property-name syntax, fix a few typos
in type names, wrong function names, non-existing type names, etc.
2016-02-08 22:56:52 +01:00
Carlos Garcia Campos
feabf35371
notebook: Do not reorder tabs after a grab notify if there isn't an ongoing reorder operation
...
This broke in f535251507
that removed
during_reorder in favor of using the current operation, but removed the
check from gtk_notebook_stop_reorder().
2016-02-02 19:02:53 +01:00
Matthias Clasen
2cf983eb30
notebook: Document CSS node order
2016-01-22 23:14:09 -05:00
Carlos Garnacho
6c1bee2377
GtkNotebook: Unify two private variables
...
Button state was being kept in two separate variables, which lead
to slight confusions in DnD that caused the notebook to ignore the
first click after DnD happened from (within) it. Unify these two
into one, which helps us keep better track of the really pressed
buttons.
2016-01-20 19:57:23 +01:00
Benjamin Otte
f535251507
notebook: Get rid of during_reorder variable
...
Use operation == OPERATION_REORDER instead.
2016-01-20 17:37:37 +01:00
Benjamin Otte
c162a0cca8
notebook: Properly hide drag window
...
Move code to properly reinsert the tab label to where it belongs.
The if has the distinction between reparented-to-dnd-window and
just-changed-the-gdk-window-to-draw-to right there.
https://bugzilla.gnome.org/show_bug.cgi?id=760754
2016-01-20 17:37:37 +01:00
Benjamin Otte
099662998a
notebook: Get rid of during_detach member
...
use operation == OPERATION_DETACH instead.
2016-01-20 17:37:37 +01:00
Matthias Clasen
bb92428112
notebook: Implement rtl flipping for CSS nodes
...
Use gtk_box_gadget_reverse_children and gtk_css_node_reverse_children
to flip the children of the header_gadget and the tabs_gadget when
appropriate.
Add new CSS node tests to verify that the node order is updated
as expected in all cases.
2016-01-19 21:40:47 -05:00
Benjamin Otte
3281d1a284
notebook: Don't crash when dnd'ing tabs out
...
https://bugzilla.gnome.org/show_bug.cgi?id=760754
2016-01-18 15:39:02 +01:00
Matthias Clasen
44d94a4aeb
Trivial formatting fix
2016-01-17 15:35:14 -05:00
Matthias Clasen
6bf9715ce4
notebook: show tabs when asked to
...
gtk_notebook_set_show_tabs must make the header gadget
visible when show_tabs is TRUE, not the other way around.
https://bugzilla.gnome.org/show_bug.cgi?id=760596
2016-01-17 14:35:58 -05:00
Benjamin Otte
6e4d65d227
notebook: Destroy gadgets after chaining up
...
While chaining up, we might still call into the notebook code. And that
code expects the gadgets to be there.
https://bugzilla.gnome.org/show_bug.cgi?id=760640
2016-01-15 16:22:22 +01:00
Matthias Clasen
87171469b7
box gadget: Implement cross-axis alignment
...
So far, the box gadget is always allocating all children the
full size in the cross axis. This behavior corresponds to the
align-items: stretch behavior in
https://www.w3.org/TR/css-flexbox-1/#align-items-property
This commit implements the other modes described there.
While widgets have halign/valign properties that we can use for
this, the API for inserting gadgets has to change to take an
extra align parameter. All callers have been updated to pass
GTK_ALIGN_FILL, since that corresponds to the previous behavior.
https://bugzilla.gnome.org/show_bug.cgi?id=760668
2016-01-15 09:43:12 -05:00
Cosimo Cecchi
897126ae2b
notebook: fix a GCC warning
2016-01-13 08:30:02 -08:00
Matthias Clasen
93aac8a86c
notebook: Document the .dnd style class
...
We should aim to document all style classes that themes
can encounter during the normal operation of a widget.
2016-01-13 00:24:40 -05:00
Ben Iofel
7e5952c4ea
GTK Notebook: use the right enum type
2016-01-11 19:16:36 -05:00
Matthias Clasen
32eda187ee
Actually deprecate GtkNotebook::has-tab-gap
2016-01-11 13:58:37 -05:00
Matthias Clasen
990be25d63
notebook: Update CSS node docs
...
The stack node is new.
2016-01-11 13:55:23 -05:00
Benjamin Otte
3a8dc01ed2
notebook: Don't reparent tab label when drag stops
...
Use the same unrealize + set_parent_window() trick that we used in
6d5edd18cf
when dragging starts.
2016-01-11 17:52:38 +01:00
Benjamin Otte
b917a0b155
notebook: Add .dnd style class to tabs during reorder
2016-01-11 17:46:15 +01:00
Benjamin Otte
6d5edd18cf
notebook: Don't unparent tab label for drag
...
When a tab drag starts, we need to move the tab label into the drag
window via gtk_widget_set_parent_window().
If we don't unparent, but just unrealize the widget, we don't lose the
cssnode position.
2016-01-11 17:06:46 +01:00
Benjamin Otte
fdc13f315b
notebook: Don't limit motion notify framerate
...
We have a frameclock for that these days.
In particular, this limiting worked at 45fps when monitors are all 60fps.
2016-01-11 17:06:46 +01:00
Benjamin Otte
8020d5f93a
notebook: Don't store gadget allocation twice
...
If we care about a gadget's allocation, we can ask it. There's no need
to store it in GtkNotebookPage.allocation.
2016-01-11 17:05:24 +01:00
Benjamin Otte
2ef3b01442
notebook: No need to recompute remaining space
...
The value is correct.
In particular, subtracting width on notebooks with tabs on left/right is
a very bad idea.
2016-01-11 17:05:24 +01:00
Benjamin Otte
4c083f8182
notebook: Port arrows to be gadgets
...
Also deprecate the arrow-spacing style property.
2016-01-11 17:05:24 +01:00
Benjamin Otte
326fda1b0e
notebook: Pass full allocation instead of min and max value
2016-01-11 17:05:24 +01:00
Benjamin Otte
96f0cf7677
notebook: Pass allocation as argument
...
... instead of querying it later.
2016-01-11 17:05:23 +01:00
Benjamin Otte
6b8c191096
notebook: Simplify allocation code
2016-01-11 17:05:23 +01:00
Benjamin Otte
0e48216c48
notebook: Identify existence of arrows differently
...
Instead of having gbooleans in the priv struct, just look at the
existence of priv->arrow_node[i].
2016-01-11 17:05:23 +01:00
Benjamin Otte
a12e1328e9
notebook: Convert tab nodes to gadgets
...
The code does many bad things, so we get a lot of warning spew. Ignore
this for now, fixes will follow.
2016-01-11 17:05:23 +01:00
Benjamin Otte
d780ce3ff3
notebook: Assume tab allocations always change
...
This causes more redraws, but saves a bunch of code.
2016-01-11 17:05:23 +01:00
Benjamin Otte
7e0c7f7deb
notebook: Remove weird hack where the current page was special-cased
...
I don't even know what it does, but it assumed that the current page was
always as large or larger than any other page. And that isn't true.
2016-01-11 17:05:23 +01:00
Benjamin Otte
a9320d93f6
notebook: Replace redraw_tabs() with gadget_queue_draw(tabs_gadget)
2016-01-11 17:05:23 +01:00
Benjamin Otte
f83c1fedbc
notebook: Don't queue redraw of tabs junction
...
There is no junction anymore, so don't try to redraw it.
2016-01-11 17:05:23 +01:00
Benjamin Otte
e1722baf57
notebook: Convert tabs node to a gadget
...
And in turn, convert the header gadget to a box gadget.
2016-01-11 17:05:23 +01:00
Benjamin Otte
acc534ebfa
boxgadget: Add
...
Adds a GtkBoxGadget that is a Gadget that behaves like a GtkBox.
Use this gadget to implement the notebook base gadget.
2016-01-11 17:05:23 +01:00
Benjamin Otte
749855c1d1
notebook: Remove unused function call
2016-01-11 17:05:23 +01:00
Benjamin Otte
70b9aacfc2
notebook: Simplify event window position computation
...
The event window should overlay the header gadget, so just return its
position.
2016-01-11 17:05:23 +01:00
Benjamin Otte
ad245e0226
notebook: Introduce gtk_notebook_has_current_page()
...
GtkNotebook does not switch the current page if all pages are hidden. So
it may be that no visible page exsits, but there still is a current
page set.
We culd clear the current page, but I'm unsure about backwards
compatibility.
So instead, this new function handles that case.
2016-01-11 17:05:23 +01:00
Benjamin Otte
0d72055b89
notebook: Use gtk_container_class_handle_border_width()
2016-01-11 17:05:23 +01:00
Benjamin Otte
f34059c3b6
notebook: Convert header node to a gadget
...
This allows reworking the content node to do real height-for-width.
The content node also takes care of border width, but we might want to
have the toplevel do it or just get rid of it.
2016-01-11 17:05:22 +01:00
Benjamin Otte
e27551ddb2
notebook: Add a stack gadget
...
The stack gadget contains all the child widgets.
2016-01-11 17:05:22 +01:00
Benjamin Otte
c03fed4840
notebook: Remove extra calls to gtk_notebook_pages_allocate()
...
The function is called during size_allocate() and doesn't need to be
called elsewhere, as all other callers call queue_resize() already.
2016-01-11 17:05:22 +01:00
Benjamin Otte
33b6e30f68
notebook: Remove unnessecary gtk_widget_set_mapped()
...
We chain up, and the chainedup function calls this for us.
2016-01-11 17:05:22 +01:00
Benjamin Otte
dc4148c4e2
notebook: Simplify gtk_notebook_map()
...
We set visibility on our children properly, so we can simply chain up
and let the GtkContainer implementation do the mapping of children.
2016-01-11 17:05:22 +01:00
Benjamin Otte
22398ef459
notebook: Remove irrelevant case
...
The page is never the current page, because it was just created and the
current page wasn't changed yet.
2016-01-11 17:05:22 +01:00
Benjamin Otte
0e528ec74e
notebook: No page switching in size request code
...
We have page switching under control now, we don't need to check every
get_preferred_size() call.
2016-01-11 17:05:22 +01:00
Benjamin Otte
1190efebce
notebook: Set the current page when none is set
...
This case happens when you gtk_widget_show_all (notebook).
2016-01-11 17:05:22 +01:00
Benjamin Otte
0045e57e96
notebook: Draw the same things, no matter the show-border value
...
show-border modifies the "frame" style class on the notebook node, but
not what we actually draw.
2016-01-11 17:05:22 +01:00
Benjamin Otte
fd9ffe5d57
notebook: Turn the base notebook into a gadget
2016-01-11 17:05:22 +01:00
Benjamin Otte
92089ee29e
notebook: Draw tab label while drawing tab
...
Instead of having special case code doing it.
2016-01-11 17:05:22 +01:00
Benjamin Otte
3d980da405
notebook: Don't translate before painting notebook
...
This will allow us to draw children directly from within the notebook
drawing code, which will remove a bunch of special casing.
2016-01-11 17:05:22 +01:00
Benjamin Otte
93dc364b02
notebook: Deprecate and stop supporting has-tab-gap style property
2016-01-11 17:05:22 +01:00
Benjamin Otte
71cc212eb5
notebook: Ignore and deprecate style properties
...
Deprecate initial-gap, tab-curvature and tab-overlap properties. All
their features can be achieved using CSS.
This CSS achieves the same effect as a 10px initial gap:
notebook header {
margin-left: 10px;
margin-right: 10px;
}
A tab overlap of 10px can be achieved via:
notebook tabs {
margin-left: 10px;
}
notebook tab {
margin-left: -10px;
}
And tab curvature is essentially the same as padding or border on a tab.
2016-01-11 17:03:07 +01:00
Alberto Ruiz
496f0892fc
introspection: This patch fixes nullable return values fixes for the following symbols in gtk
...
gtk_accel_group_query
gtk_accel_group_from_accel_closure
gtk_accel_label_get_accel_widget
gtk_accessible_get_widget
gtk_actionable_get_action_name
gtk_app_chooser_get_app_info
gtk_app_chooser_button_get_heading
gtk_app_chooser_dialog_get_heading
gtk_application_get_window_by_id
gtk_assistant_get_nth_page
gtk_binding_set_find
gtk_builder_get_object
gtk_builder_lookup_callback_symbol
gtk_builder_get_application
gtk_button_get_image
gtk_cell_area_get_focus_from_sibling
gtk_cell_renderer_start_editing
gtk_cell_view_get_model
gtk_cell_view_get_displayed_row
gtk_clipboard_get_owner
gtk_container_get_focus_child
gtk_container_get_focus_vadjustment
gtk_container_get_focus_hadjustment
gtk_dialog_get_widget_for_response
gtk_drag_get_source_widget
gtk_drag_dest_get_target_list
gtk_drag_source_get_target_list
gtk_entry_completion_get_model
gtk_entry_completion_compute_prefix
gtk_expander_get_label_widget
gtk_file_chooser_get_filename
gtk_file_chooser_get_current_folder
gtk_file_chooser_get_uri
gtk_file_chooser_get_current_folder_uri
gtk_file_chooser_get_preview_widget
gtk_file_chooser_get_preview_file
gtk_file_chooser_get_preview_filename
gtk_file_chooser_get_preview_uri
gtk_file_chooser_get_extra_widget
gtk_file_chooser_get_filter
gtk_file_chooser_native_get_accept_label
gtk_file_chooser_native_get_cancel_label
gtk_file_filter_get_name
gtk_font_chooser_get_font_family
gtk_font_chooser_get_font_face
gtk_font_chooser_get_font
gtk_font_chooser_get_font_desc
gtk_font_chooser_get_font_map
gtk_frame_get_label
gtk_gesture_get_device
gtk_gesture_get_window
gtk_gl_area_get_error
gtk_header_bar_get_title
gtk_header_bar_get_subtitle
gtk_header_bar_get_custom_title
gtk_icon_info_get_filename
gtk_icon_view_get_path_at_pos
gtk_icon_view_get_model
gtk_image_get_pixbuf
gtk_image_get_animation
gtk_label_get_mnemonic_widget
gtk_label_get_attributes
gtk_check_version
gtk_menu_button_get_popup
gtk_menu_button_get_menu_model
gtk_menu_button_get_align_widget
gtk_menu_button_get_popover
gtk_menu_item_get_submenu
gtk_menu_item_get_accel_path
gtk_native_dialog_get_title
gtk_native_dialog_get_transient_for
gtk_notebook_get_nth_page
gtk_notebook_get_tab_label_text
gtk_notebook_get_menu_label
gtk_notebook_get_menu_label_text
gtk_notebook_get_group_name
gtk_notebook_get_action_widget
gtk_offscreen_window_get_surface
gtk_offscreen_window_get_pixbuf
gtk_paned_get_child1
gtk_paned_get_child2
gtk_places_sidebar_get_location
gtk_places_sidebar_get_nth_bookmark
gtk_plug_get_socket_window
gtk_popover_get_default_widget
gtk_progress_bar_get_text
gtk_recent_filter_get_name
gtk_recent_manager_lookup_item
gtk_settings_get_default
gtk_socket_get_plug_window
gtk_stack_sidebar_get_stack
gtk_stack_switcher_get_stack
gtk_style_context_get_section
gtk_style_context_get_parent
gtk_style_context_get_frame_clock
gtk_test_find_widget
gtk_text_buffer_get_mark
gtk_text_tag_table_lookup
gtk_text_view_get_tabs
gtk_text_view_toggle_cursor_visible
gtk_text_view_get_window
gtk_toolbar_get_nth_item
gtk_tool_button_get_label
gtk_tool_button_get_icon_name
gtk_tool_button_get_label_widget
gtk_tool_button_get_icon_widget
gtk_tool_palette_get_drop_item
gtk_tool_palette_get_drop_group
gtk_tree_model_filter_convert_child_path_to_path
gtk_tree_model_filter_convert_path_to_child_path
gtk_tree_model_sort_convert_child_path_to_path
gtk_tree_model_sort_convert_path_to_child_path
gtk_tree_view_get_column
gtk_tree_view_get_bin_window
gtk_tree_view_column_get_widget
gtk_tree_view_column_get_tree_view
gtk_widget_get_frame_clock
gtk_window_group_get_current_device_grab
GtkTextBufferSerializeFunc
2016-01-08 12:18:23 +00:00
Benjamin Otte
35e98dce9b
notebook: Sync menu labels with page list in visibile_cb
...
It's where it changes. Size requests have nothing to do with that.
2015-12-19 06:13:56 +01:00
Benjamin Otte
c3548328f7
notebook: Don't allocate during size requests
...
wat?
2015-12-19 06:13:56 +01:00
Matthias Clasen
2f544655f9
Revise CSS node documentation
...
Clarify the use of brackets in the CSS node diagrams:
[] means optional nodes or classes, <> means child widgets.
2015-12-16 10:58:47 -05:00
Carlos Garnacho
91b5497d69
GtkNotebook: Use gdk_seat_grab()
...
https://bugzilla.gnome.org/show_bug.cgi?id=759309
2015-12-15 00:32:56 +01:00
Benjamin Otte
971a277419
cssnode: Change style-changed signal
...
Instead of having old and new style, now have a GtkCssStyleChange opaque
object that will compute the changes you are interested in for you.
This simplifies change signal handlers quite a bit and avoids lots of
repeated computation in every signal handler.
2015-12-12 02:16:04 +01:00
Carlos Garnacho
c0477c2c52
GtkNotebook: Use gdouble in coordinate calculations
...
Otherwise rounding errors fool the "tab under coordinates" checks on
crossing events, which will be triggered close enough to the window
rectangle if the pointer moves slowly enough.
With this, the tab_prelight() function correctly figures out we've
moved the pointer outside the tab area when called in
gtk_notebook_leave_notify().
https://bugzilla.gnome.org/show_bug.cgi?id=759091
2015-12-07 17:40:01 +01:00
Matthias Clasen
4faef48410
notebook: Chain up in direction_changed
...
We do this everywhere else.
2015-11-13 06:41:14 -05:00
Matthias Clasen
c283315466
notebook: Update CSS docs
...
The .header style class is no longer used.
2015-11-09 13:33:58 -05:00
Matthias Clasen
4802b515e4
notebook: Use CSS nodes for arrows
...
This converts the drawing of scroll arrows to use separate CSS
nodes.
2015-11-08 21:08:38 -05:00
Matthias Clasen
5686853c6e
notebook: redo notebook styling
...
Add a header node, and put positional classes on it.
2015-11-08 21:08:38 -05:00
Benjamin Otte
e5ef7dc681
notebook: Fix copy/paste error
...
This is from the recent commit 2a1a483ede
2015-11-07 03:29:44 +01:00
Benjamin Otte
2a1a483ede
notebook: Query the right node's padding
2015-11-06 18:59:15 +01:00
Matthias Clasen
e440050134
Fix the build
2015-10-24 17:04:38 -04:00
Matthias Clasen
f1b7560938
notebook: Document css nodes and style class
...
This will have to be updates as we do further changes to the
way GtkNotebook does its rendering.
2015-10-24 10:54:56 -04:00
Matthias Clasen
8917ee5373
notebook: Drop unneeded code
...
We no longer need to set the position classes on the main css node,
since they are already set on the per-tab subnodes.
2015-10-24 10:39:18 -04:00
Matthias Clasen
f194b9608a
notebook: Use the element name notebook
...
Switch GtkNotebook from using the .notebook style class to
using the element name notebook for its main css node.
2015-10-24 10:39:18 -04:00
Matthias Clasen
e2bfe9e95a
notebook: Cosmetic cleanup
2015-10-24 10:39:17 -04:00
Benjamin Otte
6cf7c03334
notebook: On drag window hide, fix css nodes
2015-10-22 20:29:10 +02:00
Benjamin Otte
ed574408f2
notebook: Remove "prelight-page" class
...
Instead, just use the "tab:hover" selector
2015-10-22 16:42:48 +02:00
Benjamin Otte
182f9a7f39
notebook: Remove "active-page" class
...
Instead, just use the "tab:active" selector
2015-10-22 16:42:48 +02:00
Benjamin Otte
2720d97db3
notebook: Remove funciton by folding it into callers
2015-10-22 16:42:48 +02:00
Benjamin Otte
acd63a6019
notebook: Refactor internal function
...
Don't return the state anymore as the function doesn't even look at the
state. Instead, make the callers that need the state query it manually.
2015-10-22 16:42:48 +02:00
Benjamin Otte
7b9844288a
notebook: Make tab positions permanent
...
... on the tab CssNodes.
2015-10-22 16:42:48 +02:00
Benjamin Otte
dd3f2ec987
notebook: Remove last traces of regions
...
Now that we don't use regions anymore, there's no need to update
anything when the regions change.
2015-10-22 16:42:47 +02:00
Benjamin Otte
f713bcd742
notebook: Set reorderable-page style class properly
...
Set it when the reorderable state changes, not just when rendering.
2015-10-22 16:42:47 +02:00
Benjamin Otte
a4e86341e4
notebook: Set active state properly
...
Don't update it on save/restore, actually set it when it changes.
2015-10-22 16:42:47 +02:00
Benjamin Otte
541926089a
notebook: Set prelight state properly
...
Don't update it on save/restore, actually set it when it changes.
2015-10-22 16:42:47 +02:00
Benjamin Otte
3392d53f61
notebook: Use CssNodes instead of regions
...
This almost makes CSS work again with notebooks.
2015-10-22 16:42:47 +02:00
Benjamin Otte
01f7711307
notebook: Move style_context_save() into function
...
This is for future changes.
2015-10-22 16:42:47 +02:00
Alexander Larsson
d5f1754981
gtk: Stop setting GDK_EXPOSURE_MASK on random widgets
...
These days exposure happens only on the native windows (generally the
toplevel window) and is propagated down recursively. The expose event
is only useful for backwards compat, and in fact, for double buffered
widgets we totally ignore the event (and non-double buffering breaks
on wayland).
So, by not setting the mask we avoid emitting these events and then
later ignoring them.
We still keep it on eventbox, fixed and layout as these are used
in weird ways that want backwards compat.
2015-09-14 11:01:13 +02:00
Matthias Clasen
f4b53d4b0c
notebook: Drop use of G_DISABLE_CHECKS
...
Rewrite the one check that the G_DISABLE_CHECKS macro was used for
in terms of g_return_if_fail.
2015-09-09 06:32:46 -04:00
Matthias Clasen
838d5beff7
notebook: Convert to g_object_notify_by_pspec
2015-09-08 08:07:33 -04:00
Benjamin Otte
4daac59941
notebook: Don't needlessly cast in macros
...
That way we disable typechecks done by the compiler and won't notice
when we pass the wrong values to the macro. And that's bad.
2015-09-07 14:33:50 +02:00
Benjamin Otte
f138efa59a
notebook: Remove unused macros
2015-09-07 14:33:40 +02:00
Carlos Garnacho
3e60650fa8
notebook: Fix assert in ::drag-motion
...
The drag destination might be empty, we shouldn't be checking whether
it contains pages at all. Instead, check the source notebook, which
ought to have a selected page if you're dragging something from there.
https://bugzilla.gnome.org/show_bug.cgi?id=749893
2015-05-26 18:05:36 +02:00
Benjamin Otte
0529e15d61
notebook: Protect against invalid allocations
...
A widget can be mapped but not have a size allocated yet. In that case
avoid computing a broken rectangle.
https://bugzilla.gnome.org/show_bug.cgi?id=746301
2015-03-18 15:14:47 +01:00
Matthias Clasen
c7672699e9
Don't pass invalid rectangles to cairo
...
This causes pixman warnings, or worse.
Clearly, something is not quite right here, if we end up
redrawing tabs at a time when the allocation is set to (1, 1).
For now, avoid straining the error handling in the lower layers.
https://bugzilla.gnome.org/show_bug.cgi?id=746301
2015-03-16 12:51:56 -04:00
Philip Withnall
d65ccf96ee
gtknotebook: Add more non-NULL checks for cur_page
...
These were not spotted by scan-build, but from some brief mental
reasoning could potentially be problem areas.
https://bugzilla.gnome.org/show_bug.cgi?id=712760
2015-03-11 11:24:29 +00:00
Benjamin Otte
9e2cdce58e
notebook: Fix boolean check
...
Commit c352093bde
swapped the condition
when turning it into a return_if_fail().
2015-03-10 13:23:06 +01:00
Philip Withnall
c352093bde
gtknotebook: Fix potential use of uninitialised variables
...
Found by scan-build.
https://bugzilla.gnome.org/show_bug.cgi?id=712760
2015-03-10 07:32:19 +00:00
Philip Withnall
51971d56bc
gtknotebook: Remove dead variable assignments
...
Found by scan-build.
https://bugzilla.gnome.org/show_bug.cgi?id=712760
2015-03-09 13:41:37 +00:00
Philip Withnall
c7f5f10853
gtknotebook: Fix a potential NULL pointer dereference
...
Found by scan-build.
https://bugzilla.gnome.org/show_bug.cgi?id=712760
2015-03-09 13:41:37 +00:00
Matthias Clasen
8d7a235a04
notebook: Add api to complete tab dnd from the outside
...
This is necessary to avoid unwanted drag cancel animations,
now that GtkNotebook is careful about cancelling a drag
when the dragged tab disappears unexpectedly.
2015-02-12 17:33:10 -05:00
Matthias Clasen
3fc21b4f3f
notebook: Protect removal-from-within
...
When a tab is dropped, we have to remove it from the notebook to
insert it elsewhere. This is expected part of the tab dnd operation,
and we need to differentiate it from 'spontaneous' removals which
cause us to cancel the drag operation.
2015-01-30 10:13:28 -05:00
Matthias Clasen
63104944a3
notebook: Make dnd safe against tab disappearance
...
when the dragged tab is being removed during the drag operation,
we need to cancel the drag. To do so, we have to keep around
a reference to the drag context.
This should fix
https://bugzilla.gnome.org/show_bug.cgi?id=732051
2015-01-30 10:13:15 -05:00
Matthias Clasen
3a05d9b5a0
notebook: Make reordering safe for tab disappearance
...
If the dragged tab is removed during reordering, we need to
call gtk_notebook_stop_reorder(), to clean up and bring the
remaining tabs back in order.
2015-01-30 09:39:26 -05:00
Matthias Clasen
5127136723
GtkNotebook: Be a bit more safe against cur_page being NULL
...
https://bugzilla.gnome.org/show_bug.cgi?id=477454
2014-12-22 10:52:54 -05:00
Jasper St. Pierre
a78b18c565
Revert part of "gtknotebook: Optimize GtkStyleContext usage"
...
This reverts part of commit c71e213134
.
This part was unfinished and was pushed simply to avoid the warnings.
2014-11-25 11:21:21 -08:00
Jasper St. Pierre
c71e213134
gtknotebook: Optimize GtkStyleContext usage
2014-11-25 11:05:49 -08:00
Benjamin Otte
cde81e169b
notebook: Don't unset state flags on child removal
...
We don't set any state flags, so we shouldn't unset any either.
2014-07-19 23:48:06 +02:00
Benjamin Otte
93b3179042
widgetpath: Deprecate regions
...
This is a foolowup to d80bf0790d
2014-06-21 15:46:44 +02:00
Benjamin Otte
d80bf0790d
stylecontext: Deprecate regions
...
Regions are done in a very non-css way. They don't fit the DOM in that
they don't integrate into the CSS tree and they have very weird matching
behavior in selectors.
So I'm deprecating them now. GtkNotebook and GtkTreeview will continue
to use them and as long as they do, we can't remove the code for it.
But once those are ported it might be safe to remove the code as it will
clean up lots of places in the code by quite a bit.
2014-06-19 22:26:51 +02:00
Matthias Clasen
f0f9c2aa37
Revert "gtkbin: replace internal api"
...
This reverts commit 0f4751c08e
.
This causes warnings from the notebook and combobox code.
2014-06-16 17:31:56 -04:00
Paolo Borelli
c184458ab3
notebook: set tab position style class on the main frame
...
We want to have .top etc also on the notebook frame, not only on
the header frame.
The patch includes a reftest by Benjamin.
2014-06-14 21:37:07 +02:00
Stefan Sauer
0f4751c08e
gtkbin: replace internal api
2014-06-14 08:10:46 +02:00
Matthias Clasen
c93355616f
GtkNotebook: Use G_PARAM_EXPLICIT_NOTIFY
2014-06-09 13:31:06 -04:00
Matthias Clasen
4d1930cf74
Make notebook content redraw during drag
...
The extra condition here that caused the current child to
not redraw during reordering was introduced in f383e1f1
during the port to ::draw, but was not explained in the
commit message, and removing it has no obvious negative
effect.
https://bugzilla.gnome.org/show_bug.cgi?id=730767
2014-05-30 13:39:27 -04:00
Cosimo Cecchi
853dcc615d
notebook: don't use focus-line-width
2014-05-09 11:02:45 -07:00
Cosimo Cecchi
9a811e2c94
notebook: don't use focus padding
2014-05-09 11:02:43 -07:00
William Jon McCann
469d333aa2
docs: use Returns: consistently
...
Instead of Return value:
2014-02-19 18:56:05 -05:00
William Jon McCann
37a8ee6e95
docs: fully break lines in examples
...
Try to do a better job of keeping example content
from being too wide. It is often rendered as <pre>
text so the only time we can wrap it is in the source.
It is best to full break lines at all punctuation and
to try to keep the width under 70 chars or so.
2014-02-12 18:42:50 -05:00
Matthias Clasen
7f6a964c47
Docs: Remove all entities and turn off sgml mode
...
With all element markup gone, it is time to turn off
sgml mode, and get rid of entities as well.
2014-02-09 17:58:07 -05:00
William Jon McCann
13998c55e7
docs: use proper quotations instead of '*'
2014-02-07 14:22:39 -05:00
William Jon McCann
2a45418b67
docs: use proper quotes
2014-02-05 15:08:42 -05:00
William Jon McCann
3b3d8ca456
docs: Use "#" for refsect2 instead of ##
2014-02-04 21:00:58 -05:00
Matthias Clasen
09d1b28249
docs: Convert to markdown
...
Specifically, switch to using markdown syntax for sections.
2014-02-02 00:30:27 -05:00
William Jon McCann
4c8bd8e7cf
docs: Identify examples that are C code
...
https://bugzilla.gnome.org/show_bug.cgi?id=723119
2014-01-29 12:45:49 -05:00
William Jon McCann
768bc44081
docs: use |[ ]| instead of <programlisting></programlisting>
...
https://bugzilla.gnome.org/show_bug.cgi?id=723119
2014-01-29 12:45:49 -05:00
William Jon McCann
6fd7e547c5
notebook: don't use a null page
2014-01-24 18:41:22 -05:00
William Jon McCann
66f8026622
notebook: add a style class when the child tab is reorderable
2014-01-24 17:27:27 -05:00
William Jon McCann
3437f83ff3
notebook: add a style for prelighted labels
2014-01-24 13:15:44 -05:00
Paolo Borelli
609ddec1f8
Always return FALSE from the notebook leave_notify handler
...
As discussed on IRC with Benjamin, this should not make much
difference in practice, but it is more correct
2014-01-14 20:29:46 +01:00
Paolo Borelli
84b44dd2ac
Readd line removed by mistake in the previous commit
2014-01-14 20:23:52 +01:00
Paolo Borelli
4a3f21b693
Prelight notebook tab
...
Set the prelight state when hovering a notebook tab with the mouse.
https://bugzilla.gnome.org/show_bug.cgi?id=711233
2014-01-14 20:18:54 +01:00
Matthias Clasen
64855f1295
GtkNotebook: Fix a problem with tab states
...
When replacing the tab label, we were not adding the
active-page style class. Fix that.
2014-01-04 13:01:49 -05:00
Bastien Nocera
438cd857c4
all: Add names to timeouts
...
Add names to every timeout we setup, so it's easier to track their
usage, and debug possible misbehaviour.
https://bugzilla.gnome.org/show_bug.cgi?id=710651
2013-10-23 13:31:18 +02:00
William Jon McCann
05b1ea84b4
notebook: inform the theme whether show-borders was set
...
So that it can draw a border or not. If show-borders=true then
the notebook will have GTK_STYLE_CLASS_FRAME.
2013-10-16 12:03:33 -04:00
William Jon McCann
6f17c408e6
notebook: inform the theme to draw borders when requested
...
When the show-border property is TRUE ask the theme to draw
borders on the notebook header.
2013-10-04 18:14:25 -04:00
William Jon McCann
053433010b
notebook: add style classes for orientation to the header
2013-10-04 18:14:25 -04:00