Browse Source

add adwaita, fix various things

adwaita_split_btn
parent
commit
e56c5c27a3
Signed by: alex
GPG Key ID: 022EAE42313D70F3
  1. 2
      .github/azure-macos.yml
  2. 2
      inc/gui/widgets/arranger.h
  3. 3
      inc/gui/widgets/balance_control.h
  4. 3
      inc/gui/widgets/bot_bar.h
  5. 3
      inc/gui/widgets/channel.h
  6. 3
      inc/gui/widgets/channel_send.h
  7. 3
      inc/gui/widgets/channel_slot.h
  8. 3
      inc/gui/widgets/drag_dest_box.h
  9. 5
      inc/gui/widgets/fader.h
  10. 3
      inc/gui/widgets/fader_buttons.h
  11. 3
      inc/gui/widgets/folder_channel.h
  12. 3
      inc/gui/widgets/inspector_port.h
  13. 3
      inc/gui/widgets/panel_file_browser.h
  14. 3
      inc/gui/widgets/plugin_browser.h
  15. 3
      inc/gui/widgets/port_connections_tree.h
  16. 6
      inc/gui/widgets/preferences.h
  17. 3
      inc/gui/widgets/ruler.h
  18. 3
      inc/gui/widgets/track.h
  19. 8
      inc/gui/widgets/transport_controls.h
  20. 14
      inc/utils/gtk.h
  21. 9
      meson.build
  22. 29
      src/gui/widgets/arranger.c
  23. 2
      src/gui/widgets/automation_arranger.c
  24. 6
      src/gui/widgets/balance_control.c
  25. 11
      src/gui/widgets/bot_bar.c
  26. 6
      src/gui/widgets/channel.c
  27. 6
      src/gui/widgets/channel_send.c
  28. 6
      src/gui/widgets/channel_slot.c
  29. 12
      src/gui/widgets/drag_dest_box.c
  30. 6
      src/gui/widgets/fader.c
  31. 9
      src/gui/widgets/fader_buttons.c
  32. 9
      src/gui/widgets/folder_channel.c
  33. 6
      src/gui/widgets/inspector_port.c
  34. 2
      src/gui/widgets/midi_arranger.c
  35. 11
      src/gui/widgets/panel_file_browser.c
  36. 15
      src/gui/widgets/plugin_browser.c
  37. 9
      src/gui/widgets/port_connections_tree.c
  38. 19
      src/gui/widgets/preferences.c
  39. 31
      src/gui/widgets/ruler.c
  40. 2
      src/gui/widgets/timeline_arranger.c
  41. 9
      src/gui/widgets/track.c
  42. 43
      src/gui/widgets/transport_controls.c
  43. 53
      src/utils/gtk.c
  44. 6
      subprojects/libadwaita.wrap

2
.github/azure-macos.yml

@ -33,7 +33,7 @@ jobs: @@ -33,7 +33,7 @@ jobs:
brew update || true
echo "installing deps"
# use || true because it returns 1
brew install gnu-sed fftw meson libsamplerate sdl2 chromaprint libgtop lilv librsvg adwaita-icon-theme guile gtksourceview5 graphviz zstd npm rt-audio rtmidi jack qjackctl cmake help2man xxhash vamp-plugin-sdk json-glib || true
brew install gnu-sed fftw meson libsamplerate sdl2 chromaprint libgtop lilv librsvg adwaita-icon-theme guile gtksourceview5 graphviz zstd npm rt-audio rtmidi jack qjackctl cmake help2man xxhash vamp-plugin-sdk json-glib libsass || true
echo "linking python"
brew link --overwrite python
#npm install -g appdmg

2
inc/gui/widgets/arranger.h

@ -446,6 +446,8 @@ typedef struct _ArrangerWidget @@ -446,6 +446,8 @@ typedef struct _ArrangerWidget
*/
//int queued_playhead_px;
/** Popover to be reused for context menus. */
GtkPopoverMenu * popover_menu;
} ArrangerWidget;
const char *

3
inc/gui/widgets/balance_control.h

@ -67,6 +67,9 @@ typedef struct _BalanceControlWidget @@ -67,6 +67,9 @@ typedef struct _BalanceControlWidget
float balance_at_start;
Port * port;
/** Popover to be reused for context menus. */
GtkPopoverMenu * popover_menu;
} BalanceControlWidget;
/**

3
inc/gui/widgets/bot_bar.h

@ -105,6 +105,9 @@ typedef struct _BotBarWidget @@ -105,6 +105,9 @@ typedef struct _BotBarWidget
char hex_color[8];
char green_hex[8];
char red_hex[8];
/** Popover to be reused for context menus. */
GtkPopoverMenu * popover_menu;
} BotBarWidget;
void

3
inc/gui/widgets/channel.h

@ -143,6 +143,9 @@ typedef struct _ChannelWidget @@ -143,6 +143,9 @@ typedef struct _ChannelWidget
GtkGestureDrag * drag;
bool setup;
/** Popover to be reused for context menus. */
GtkPopoverMenu * popover_menu;
} ChannelWidget;
/**

3
inc/gui/widgets/channel_send.h

@ -71,6 +71,9 @@ typedef struct _ChannelSendWidget @@ -71,6 +71,9 @@ typedef struct _ChannelSendWidget
PangoLayout * empty_slot_layout;
/** Layout cache for name. */
PangoLayout * name_layout;
/** Popover to be reused for context menus. */
GtkPopoverMenu * popover_menu;
} ChannelSendWidget;
/**

3
inc/gui/widgets/channel_slot.h

@ -84,6 +84,9 @@ typedef struct _ChannelSlotWidget @@ -84,6 +84,9 @@ typedef struct _ChannelSlotWidget
/** Whether to open the plugin inspector on click
* or not. */
bool open_plugin_inspector_on_click;
/** Popover to be reused for context menus. */
GtkPopoverMenu * popover_menu;
} ChannelSlotWidget;
/**

3
inc/gui/widgets/drag_dest_box.h

@ -66,6 +66,9 @@ typedef struct _DragDestBoxWidget @@ -66,6 +66,9 @@ typedef struct _DragDestBoxWidget
GtkGestureClick * click;
GtkGestureClick * right_click;
DragDestBoxType type;
/** Popover to be reused for context menus. */
GtkPopoverMenu * popover_menu;
} DragDestBoxWidget;
/**

5
inc/gui/widgets/fader.h

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright (C) 2018-2019 Alexandros Theodotou <alex at zrythm dot org>
* Copyright (C) 2018-2021 Alexandros Theodotou <alex at zrythm dot org>
*
* This file is part of Zrythm
*
@ -60,6 +60,9 @@ typedef struct _FaderWidget @@ -60,6 +60,9 @@ typedef struct _FaderWidget
/** Value at start. */
float amp_at_start;
/** Popover to be reused for context menus. */
GtkPopoverMenu * popover_menu;
} FaderWidget;
/**

3
inc/gui/widgets/fader_buttons.h

@ -67,6 +67,9 @@ typedef struct _FaderButtonsWidget @@ -67,6 +67,9 @@ typedef struct _FaderButtonsWidget
/** Owner track. */
Track * track;
/** Popover to be reused for context menus. */
GtkPopoverMenu * popover_menu;
} FaderButtonsWidget;
void

3
inc/gui/widgets/folder_channel.h

@ -86,6 +86,9 @@ typedef struct _FolderChannelWidget @@ -86,6 +86,9 @@ typedef struct _FolderChannelWidget
gulong fold_toggled_handler_id;
bool setup;
/** Popover to be reused for context menus. */
GtkPopoverMenu * popover_menu;
} FolderChannelWidget;
/**

3
inc/gui/widgets/inspector_port.h

@ -104,6 +104,9 @@ typedef struct _InspectorPortWidget @@ -104,6 +104,9 @@ typedef struct _InspectorPortWidget
/** Cache of port's last drawn number of
* connetions (srcs or dests). */
int last_num_connections;
/** Popover to be reused for context menus. */
GtkPopoverMenu * popover_menu;
} InspectorPortWidget;
void

3
inc/gui/widgets/panel_file_browser.h

@ -76,6 +76,9 @@ typedef struct _PanelFileBrowserWidget @@ -76,6 +76,9 @@ typedef struct _PanelFileBrowserWidget
const SupportedFile * cur_file;
bool first_draw;
/** Popover to be reused for context menus. */
GtkPopoverMenu * popover_menu;
} PanelFileBrowserWidget;
void

3
inc/gui/widgets/plugin_browser.h

@ -182,6 +182,9 @@ typedef struct _PluginBrowserWidget @@ -182,6 +182,9 @@ typedef struct _PluginBrowserWidget
/** Symbol map for string interning. */
Symap * symap;
/** Popover to be reused for context menus. */
GtkPopoverMenu * popover_menu;
} PluginBrowserWidget;
/**

3
inc/gui/widgets/port_connections_tree.h

@ -60,6 +60,9 @@ typedef struct _PortConnectionsTreeWidget @@ -60,6 +60,9 @@ typedef struct _PortConnectionsTreeWidget
/** Temporary storage. */
Port * src_port;
Port * dest_port;
/** Popover to be reused for context menus. */
GtkPopoverMenu * popover_menu;
} PortConnectionsTreeWidget;
/**

6
inc/gui/widgets/preferences.h

@ -26,13 +26,13 @@ @@ -26,13 +26,13 @@
#ifndef __GUI_WIDGETS_PREFERENCES_H__
#define __GUI_WIDGETS_PREFERENCES_H__
#include <gtk/gtk.h>
#include <libadwaita-1/adwaita.h>
#define PREFERENCES_WIDGET_TYPE \
(preferences_widget_get_type ())
G_DECLARE_FINAL_TYPE (
PreferencesWidget, preferences_widget,
Z, PREFERENCES_WIDGET, GtkDialog)
Z, PREFERENCES_WIDGET, AdwPreferencesWindow)
typedef struct Preferences Preferences;
typedef struct _MidiControllerMbWidget
@ -64,7 +64,7 @@ typedef struct SubgroupInfo @@ -64,7 +64,7 @@ typedef struct SubgroupInfo
*/
typedef struct _PreferencesWidget
{
GtkDialog parent_instance;
AdwPreferencesWindow parent_instance;
GtkNotebook * group_notebook;
SubgroupInfo subgroup_infos[12][40];

3
inc/gui/widgets/ruler.h

@ -192,6 +192,9 @@ typedef struct _RulerWidget @@ -192,6 +192,9 @@ typedef struct _RulerWidget
/* layout for drawing text */
PangoLayout * layout_normal;
PangoLayout * layout_small;
/** Popover to be reused for context menus. */
GtkPopoverMenu * popover_menu;
} RulerWidget;
/**

3
inc/gui/widgets/track.h

@ -229,6 +229,9 @@ typedef struct _TrackWidget @@ -229,6 +229,9 @@ typedef struct _TrackWidget
/** Cairo caches. */
cairo_t * cached_cr;
cairo_surface_t * cached_surface;
/** Popover to be reused for context menus. */
GtkPopoverMenu * popover_menu;
} TrackWidget;
const char *

8
inc/gui/widgets/transport_controls.h

@ -1,8 +1,5 @@ @@ -1,8 +1,5 @@
/*
* gui/widgets/transport_controls.h - transport controls
* (play/pause/stop...)
*
* Copyright (C) 2018 Alexandros Theodotou
* Copyright (C) 2018-2021 Alexandros Theodotou <alex at zrythm dot org>
*
* This file is part of Zrythm
*
@ -67,6 +64,9 @@ typedef struct _TransportControlsWidget @@ -67,6 +64,9 @@ typedef struct _TransportControlsWidget
GtkToggleButton * return_to_cue_toggle;
gulong rec_toggled_handler_id;
/** Popover to be reused for context menus. */
GtkPopoverMenu * popover_menu;
} TransportControlsWidget;
void

14
inc/utils/gtk.h

@ -663,12 +663,18 @@ z_gtk_dialog_run ( @@ -663,12 +663,18 @@ z_gtk_dialog_run (
GtkDialog * dialog,
bool destroy_on_close);
/**
* The popover must already exist as a children
* of its intended widget (or a common parent).
*
* This function will set the new menu and show it.
*/
void
z_gtk_show_context_menu_from_g_menu (
GtkWidget * widget,
double x,
double y,
GMenu * menu);
GtkPopoverMenu * popover_menu,
double x,
double y,
GMenu * menu);
/**
* Returns the bitmask of the selected action

9
meson.build

@ -905,6 +905,14 @@ gtk_dep = dependency ( @@ -905,6 +905,14 @@ gtk_dep = dependency (
'build-tests=false',
'media-gstreamer=disabled',],
static: all_static)
libadwaita_dep = dependency (
'libadwaita-1',
fallback: ['libadwaita', 'libadwaita_dep'],
default_options: [
'vapi=false', 'tests=false',
'examples=false',])
min_version = '>=1.0.25'
if get_option ('opus')
cdata.set('HAVE_OPUS', 1)
@ -1197,6 +1205,7 @@ vamp_deps = [ vamp_dep, vamp_host_sdk_dep ] @@ -1197,6 +1205,7 @@ vamp_deps = [ vamp_dep, vamp_host_sdk_dep ]
# TODO add Cantarell font as dependency
zrythm_deps = [
libadwaita_dep,
gtk_dep,
sndfile_dep,
samplerate_dep,

29
src/gui/widgets/arranger.c

@ -6897,6 +6897,27 @@ on_arranger_map_event ( @@ -6897,6 +6897,27 @@ on_arranger_map_event (
return FALSE;
}
static void
on_size_allocate (
GtkWidget * widget,
int width,
int height,
int baseline)
{
ArrangerWidget * self =
Z_ARRANGER_WIDGET (widget);
/* no layout manager, so call this to allocate
* a size for the menu */
gtk_popover_present (
GTK_POPOVER (self->popover_menu));
GTK_WIDGET_CLASS (
arranger_widget_parent_class)->
size_allocate (
widget, width, height, baseline);
}
void
arranger_widget_setup (
ArrangerWidget * self,
@ -7060,6 +7081,7 @@ arranger_widget_class_init ( @@ -7060,6 +7081,7 @@ arranger_widget_class_init (
GtkWidgetClass * wklass =
GTK_WIDGET_CLASS (_klass);
wklass->snapshot = arranger_snapshot;
wklass->size_allocate = on_size_allocate;
}
static void
@ -7068,6 +7090,13 @@ arranger_widget_init ( @@ -7068,6 +7090,13 @@ arranger_widget_init (
{
self->first_draw = true;
self->popover_menu =
GTK_POPOVER_MENU (
gtk_popover_menu_new_from_model (NULL));
gtk_widget_set_parent (
GTK_WIDGET (self->popover_menu),
GTK_WIDGET (self));
/* make widget able to notify */
/*gtk_widget_add_events (*/
/*GTK_WIDGET (self),*/

2
src/gui/widgets/automation_arranger.c

@ -251,7 +251,7 @@ automation_arranger_widget_show_context_menu ( @@ -251,7 +251,7 @@ automation_arranger_widget_show_context_menu (
}
z_gtk_show_context_menu_from_g_menu (
GTK_WIDGET (self), x, y, menu);
self->popover_menu, x, y, menu);
}
/**

6
src/gui/widgets/balance_control.c

@ -344,7 +344,7 @@ show_context_menu ( @@ -344,7 +344,7 @@ show_context_menu (
g_menu_append_item (menu, menuitem);
z_gtk_show_context_menu_from_g_menu (
GTK_WIDGET (self), x, y, menu);
self->popover_menu, x, y, menu);
}
static void
@ -446,6 +446,10 @@ balance_control_widget_init ( @@ -446,6 +446,10 @@ balance_control_widget_init (
gdk_rgba_parse (
&self->end_color, "rgba(0%,50%,50%,1.0)");
self->popover_menu =
GTK_POPOVER_MENU (
gtk_popover_menu_new_from_model (NULL));
gtk_widget_set_margin_start (
GTK_WIDGET (self), 2);
gtk_widget_set_margin_end (

11
src/gui/widgets/bot_bar.c

@ -171,7 +171,7 @@ on_bpm_right_click ( @@ -171,7 +171,7 @@ on_bpm_right_click (
g_menu_append_item (menu, menuitem);
z_gtk_show_context_menu_from_g_menu (
GTK_WIDGET (self), x, y, menu);
self->popover_menu, x, y, menu);
}
static void
@ -241,7 +241,7 @@ on_transport_playhead_right_click ( @@ -241,7 +241,7 @@ on_transport_playhead_right_click (
G_ACTION_GROUP (action_group));
z_gtk_show_context_menu_from_g_menu (
GTK_WIDGET (self), x, y, menu);
self->popover_menu, x, y, menu);
}
void
@ -675,6 +675,13 @@ bot_bar_widget_init (BotBarWidget * self) @@ -675,6 +675,13 @@ bot_bar_widget_init (BotBarWidget * self)
gtk_widget_init_template (GTK_WIDGET (self));
self->popover_menu =
GTK_POPOVER_MENU (
gtk_popover_menu_new_from_model (NULL));
gtk_box_append (
GTK_BOX (self),
GTK_WIDGET (self->popover_menu));
ui_gdk_rgba_to_hex (
&UI_COLORS->bright_orange, self->hex_color);
ui_gdk_rgba_to_hex (

6
src/gui/widgets/channel.c

@ -796,7 +796,7 @@ show_context_menu ( @@ -796,7 +796,7 @@ show_context_menu (
self->channel->track);
z_gtk_show_context_menu_from_g_menu (
GTK_WIDGET (self), x, y, menu);
self->popover_menu, x, y, menu);
}
static void
@ -1100,6 +1100,10 @@ channel_widget_init (ChannelWidget * self) @@ -1100,6 +1100,10 @@ channel_widget_init (ChannelWidget * self)
gtk_widget_init_template (GTK_WIDGET (self));
self->popover_menu =
GTK_POPOVER_MENU (
gtk_popover_menu_new_from_model (NULL));
self->last_midi_trigger_time = 0;
/* set font sizes */

6
src/gui/widgets/channel_send.c

@ -258,7 +258,7 @@ show_context_menu ( @@ -258,7 +258,7 @@ show_context_menu (
g_menu_append_item (menu, menuitem);
z_gtk_show_context_menu_from_g_menu (
GTK_WIDGET (self), x, y, menu);
self->popover_menu, x, y, menu);
}
static void
@ -386,6 +386,10 @@ channel_send_widget_init ( @@ -386,6 +386,10 @@ channel_send_widget_init (
self->cache_tooltip = NULL;
self->popover_menu =
GTK_POPOVER_MENU (
gtk_popover_menu_new_from_model (NULL));
self->click =
GTK_GESTURE_CLICK (
gtk_gesture_click_new ());

6
src/gui/widgets/channel_slot.c

@ -778,7 +778,7 @@ show_context_menu ( @@ -778,7 +778,7 @@ show_context_menu (
}
z_gtk_show_context_menu_from_g_menu (
GTK_WIDGET (self), x, y, menu);
self->popover_menu, x, y, menu);
}
static void
@ -1054,6 +1054,10 @@ channel_slot_widget_init ( @@ -1054,6 +1054,10 @@ channel_slot_widget_init (
gtk_widget_set_tooltip_text (
GTK_WIDGET (self), _("empty slot"));
self->popover_menu =
GTK_POPOVER_MENU (
gtk_popover_menu_new_from_model (NULL));
self->click =
GTK_GESTURE_CLICK (
gtk_gesture_click_new ());

12
src/gui/widgets/drag_dest_box.c

@ -511,7 +511,7 @@ show_context_menu ( @@ -511,7 +511,7 @@ show_context_menu (
g_menu_append_item (menu, menuitem);
z_gtk_show_context_menu_from_g_menu (
GTK_WIDGET (self), x, y, menu);
self->popover_menu, x, y, menu);
}
static void
@ -623,8 +623,16 @@ drag_dest_box_widget_new ( @@ -623,8 +623,16 @@ drag_dest_box_widget_new (
* GTK boilerplate.
*/
static void
drag_dest_box_widget_init (DragDestBoxWidget * self)
drag_dest_box_widget_init (
DragDestBoxWidget * self)
{
self->popover_menu =
GTK_POPOVER_MENU (
gtk_popover_menu_new_from_model (NULL));
gtk_box_append (
GTK_BOX (self),
GTK_WIDGET (self->popover_menu));
self->click =
GTK_GESTURE_CLICK (gtk_gesture_click_new ());
g_signal_connect (

6
src/gui/widgets/fader.c

@ -326,7 +326,7 @@ show_context_menu ( @@ -326,7 +326,7 @@ show_context_menu (
g_menu_append_item (menu, menuitem);
z_gtk_show_context_menu_from_g_menu (
GTK_WIDGET (self), x, y, menu);
self->popover_menu, x, y, menu);
}
static void
@ -416,6 +416,10 @@ fader_widget_init (FaderWidget * self) @@ -416,6 +416,10 @@ fader_widget_init (FaderWidget * self)
self->start_color = UI_COLORS->fader_fill_start;
self->end_color = UI_COLORS->fader_fill_end;
self->popover_menu =
GTK_POPOVER_MENU (
gtk_popover_menu_new_from_model (NULL));
gtk_widget_set_tooltip_text (
GTK_WIDGET (self), _("Fader"));

9
src/gui/widgets/fader_buttons.c

@ -283,7 +283,7 @@ on_btn_right_click ( @@ -283,7 +283,7 @@ on_btn_right_click (
g_menu_append_item (menu, menuitem);
z_gtk_show_context_menu_from_g_menu (
GTK_WIDGET (self), x_dbl, y_dbl, menu);
self->popover_menu, x_dbl, y_dbl, menu);
}
static void
@ -305,6 +305,13 @@ fader_buttons_widget_init ( @@ -305,6 +305,13 @@ fader_buttons_widget_init (
{
gtk_widget_init_template (GTK_WIDGET (self));
self->popover_menu =
GTK_POPOVER_MENU (
gtk_popover_menu_new_from_model (NULL));
gtk_box_append (
GTK_BOX (self),
GTK_WIDGET (self->popover_menu));
/* add css classes */
GtkStyleContext * context =
gtk_widget_get_style_context (

9
src/gui/widgets/folder_channel.c

@ -505,7 +505,7 @@ show_context_menu ( @@ -505,7 +505,7 @@ show_context_menu (
self->track);
z_gtk_show_context_menu_from_g_menu (
GTK_WIDGET (self), x, y, menu);
self->popover_menu, x, y, menu);
}
static void
@ -687,6 +687,13 @@ folder_channel_widget_init ( @@ -687,6 +687,13 @@ folder_channel_widget_init (
gtk_widget_init_template (GTK_WIDGET (self));
self->popover_menu =
GTK_POPOVER_MENU (
gtk_popover_menu_new_from_model (NULL));
gtk_box_append (
GTK_BOX (self),
GTK_WIDGET (self->popover_menu));
gtk_widget_set_hexpand (
GTK_WIDGET (self), 0);

6
src/gui/widgets/inspector_port.c

@ -173,7 +173,7 @@ show_context_menu ( @@ -173,7 +173,7 @@ show_context_menu (
g_menu_append_item (menu, menuitem);
z_gtk_show_context_menu_from_g_menu (
GTK_WIDGET (self), x, y, menu);
self->popover_menu, x, y, menu);
}
static void
@ -613,6 +613,10 @@ inspector_port_widget_init ( @@ -613,6 +613,10 @@ inspector_port_widget_init (
GTK_WIDGET (self->overlay),
GTK_WIDGET (self));
self->popover_menu =
GTK_POPOVER_MENU (
gtk_popover_menu_new_from_model (NULL));
ui_gdk_rgba_to_hex (
&UI_COLORS->bright_orange, self->hex_color);
}

2
src/gui/widgets/midi_arranger.c

@ -550,7 +550,7 @@ midi_arranger_show_context_menu ( @@ -550,7 +550,7 @@ midi_arranger_show_context_menu (
G_MENU_MODEL (selection_submenu));
z_gtk_show_context_menu_from_g_menu (
GTK_WIDGET (self), x, y, menu);
self->popover_menu, x, y, menu);
}
/**

11
src/gui/widgets/panel_file_browser.c

@ -132,7 +132,7 @@ show_bookmarks_context_menu ( @@ -132,7 +132,7 @@ show_bookmarks_context_menu (
g_menu_append_item (menu, menuitem);
z_gtk_show_context_menu_from_g_menu (
GTK_WIDGET (self), x, y, menu);
self->popover_menu, x, y, menu);
}
static void
@ -220,7 +220,7 @@ show_files_context_menu ( @@ -220,7 +220,7 @@ show_files_context_menu (
}
z_gtk_show_context_menu_from_g_menu (
GTK_WIDGET (self), x, y, menu);
self->popover_menu, x, y, menu);
}
static void
@ -895,6 +895,13 @@ panel_file_browser_widget_init ( @@ -895,6 +895,13 @@ panel_file_browser_widget_init (
gtk_widget_init_template (GTK_WIDGET (self));
self->popover_menu =
GTK_POPOVER_MENU (
gtk_popover_menu_new_from_model (NULL));
gtk_box_append (
GTK_BOX (self),
GTK_WIDGET (self->popover_menu));
self->selected_files = g_ptr_array_new ();
gtk_widget_add_css_class (

15
src/gui/widgets/plugin_browser.c

@ -736,7 +736,7 @@ show_plugin_context_menu ( @@ -736,7 +736,7 @@ show_plugin_context_menu (
}
z_gtk_show_context_menu_from_g_menu (
GTK_WIDGET (self), x, y, menu);
self->popover_menu, x, y, menu);
}
static void
@ -831,7 +831,7 @@ show_collection_context_menu ( @@ -831,7 +831,7 @@ show_collection_context_menu (
}
z_gtk_show_context_menu_from_g_menu (
GTK_WIDGET (self), x, y, menu);
self->popover_menu, x, y, menu);
}
static void
@ -910,7 +910,7 @@ show_category_context_menu ( @@ -910,7 +910,7 @@ show_category_context_menu (
g_menu_append_item (menu, menuitem);
z_gtk_show_context_menu_from_g_menu (
GTK_WIDGET (self), x, y, menu);
self->popover_menu, x, y, menu);
}
static void
@ -960,7 +960,7 @@ show_author_context_menu ( @@ -960,7 +960,7 @@ show_author_context_menu (
g_menu_append_item (menu, menuitem);
z_gtk_show_context_menu_from_g_menu (
GTK_WIDGET (self), x, y, menu);
self->popover_menu, x, y, menu);
}
static void
@ -2124,6 +2124,13 @@ plugin_browser_widget_init ( @@ -2124,6 +2124,13 @@ plugin_browser_widget_init (
{
gtk_widget_init_template (GTK_WIDGET (self));
self->popover_menu =
GTK_POPOVER_MENU (
gtk_popover_menu_new_from_model (NULL));
gtk_box_append (
GTK_BOX (self),
GTK_WIDGET (self->popover_menu));
self->stack_switcher =
GTK_STACK_SWITCHER (gtk_stack_switcher_new ());
gtk_stack_switcher_set_stack (

9
src/gui/widgets/port_connections_tree.c

@ -183,7 +183,7 @@ show_context_menu ( @@ -183,7 +183,7 @@ show_context_menu (
g_menu_append_item (menu, menuitem);
z_gtk_show_context_menu_from_g_menu (
GTK_WIDGET (self), x, y, menu);
self->popover_menu, x, y, menu);
}
static void
@ -373,4 +373,11 @@ port_connections_tree_widget_init ( @@ -373,4 +373,11 @@ port_connections_tree_widget_init (
GTK_TREE_VIEW (gtk_tree_view_new ());
gtk_scrolled_window_set_child (
self->scroll, GTK_WIDGET (self->tree));
self->popover_menu =
GTK_POPOVER_MENU (
gtk_popover_menu_new_from_model (NULL));
gtk_box_append (
GTK_BOX (self),
GTK_WIDGET (self->popover_menu));
}

19
src/gui/widgets/preferences.c

@ -46,7 +46,7 @@ @@ -46,7 +46,7 @@
G_DEFINE_TYPE (
PreferencesWidget,
preferences_widget,
GTK_TYPE_DIALOG)
ADW_TYPE_PREFERENCES_WINDOW)
typedef struct CallbackData
{
@ -872,14 +872,13 @@ add_group ( @@ -872,14 +872,13 @@ add_group (
group_name, localized_group_name);
/* create a page for the group */
GtkWidget * box =
gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
gtk_widget_set_visible (box, true);
z_gtk_widget_set_margin (box, 4);
gtk_notebook_append_page (
self->group_notebook, box,
plugin_gtk_new_label (
localized_group_name, true, false, 0.f, 0.5f));
AdwPreferencesPage * page =
ADW_PREFERENCES_PAGE (
adw_preferences_page_new ());
adw_preferences_page_set_title (
page, localized_group_name);
adw_preferences_window_add (
ADW_PREFERENCES_WINDOW (self), page);
/* create a sizegroup for the labels */
GtkSizeGroup * size_group =
@ -951,6 +950,7 @@ static void @@ -951,6 +950,7 @@ static void
preferences_widget_init (
PreferencesWidget * self)
{
#if 0
self->group_notebook =
GTK_NOTEBOOK (gtk_notebook_new ());
gtk_widget_set_visible (
@ -960,4 +960,5 @@ preferences_widget_init ( @@ -960,4 +960,5 @@ preferences_widget_init (
gtk_dialog_get_content_area (
GTK_DIALOG (self))),
GTK_WIDGET (self->group_notebook));
#endif
}

31
src/gui/widgets/ruler.c

@ -1630,7 +1630,7 @@ on_right_click_pressed ( @@ -1630,7 +1630,7 @@ on_right_click_pressed (
/* TODO fire event on change */
z_gtk_show_context_menu_from_g_menu (
GTK_WIDGET (self), x, y, menu);
self->popover_menu, x, y, menu);
}
return FALSE;
@ -2125,9 +2125,37 @@ ruler_widget_set_zoom_level ( @@ -2125,9 +2125,37 @@ ruler_widget_set_zoom_level (
}
}
static void
on_size_allocate (
GtkWidget * widget,
int width,
int height,
int baseline)
{
RulerWidget * self =
Z_RULER_WIDGET (widget);
/* no layout manager, so call this to allocate
* a size for the menu */
gtk_popover_present (
GTK_POPOVER (self->popover_menu));
GTK_WIDGET_CLASS (
ruler_widget_parent_class)->
size_allocate (
widget, width, height, baseline);
}
static void
ruler_widget_init (RulerWidget * self)
{
self->popover_menu =
GTK_POPOVER_MENU (
gtk_popover_menu_new_from_model (NULL));
gtk_widget_set_parent (
GTK_WIDGET (self->popover_menu),
GTK_WIDGET (self));
self->drag =
GTK_GESTURE_DRAG (gtk_gesture_drag_new ());
g_signal_connect (
@ -2206,4 +2234,5 @@ ruler_widget_class_init (RulerWidgetClass * _klass) @@ -2206,4 +2234,5 @@ ruler_widget_class_init (RulerWidgetClass * _klass)
klass->snapshot = ruler_snapshot;
gtk_widget_class_set_css_name (
klass, "ruler");
klass->size_allocate = on_size_allocate;
}

2
src/gui/widgets/timeline_arranger.c

@ -1243,7 +1243,7 @@ timeline_arranger_widget_show_context_menu ( @@ -1243,7 +1243,7 @@ timeline_arranger_widget_show_context_menu (
}
z_gtk_show_context_menu_from_g_menu (
GTK_WIDGET (self), x, y, menu);
self->popover_menu, x, y, menu);
}
/**

9
src/gui/widgets/track.c

@ -1964,7 +1964,7 @@ show_context_menu ( @@ -1964,7 +1964,7 @@ show_context_menu (
}
z_gtk_show_context_menu_from_g_menu (
GTK_WIDGET (self), x, y, menu);
self->popover_menu, x, y, menu);
}
static void
@ -3113,6 +3113,13 @@ track_widget_init (TrackWidget * self) @@ -3113,6 +3113,13 @@ track_widget_init (TrackWidget * self)
gtk_widget_init_template (GTK_WIDGET (self));
self->popover_menu =
GTK_POPOVER_MENU (
gtk_popover_menu_new_from_model (NULL));
gtk_box_append (
GTK_BOX (self),
GTK_WIDGET (self->popover_menu));
gtk_widget_set_vexpand_set (
(GtkWidget *) self, 1);

43
src/gui/widgets/transport_controls.c

@ -63,7 +63,7 @@ play_rb_released ( @@ -63,7 +63,7 @@ play_rb_released (
int n_press,
double x,
double y,
GtkButton * self)
TransportControlsWidget * self)
{
if (n_press != 1)
return;
@ -79,7 +79,7 @@ play_rb_released ( @@ -79,7 +79,7 @@ play_rb_released (
g_menu_append_item (menu, menuitem);
z_gtk_show_context_menu_from_g_menu (
GTK_WIDGET (self), x, y, menu);
self->popover_menu, x, y, menu);
}
static void
@ -88,7 +88,7 @@ stop_rb_released ( @@ -88,7 +88,7 @@ stop_rb_released (
int n_press,
double x,
double y,
GtkButton * self)
TransportControlsWidget * self)
{
if (n_press != 1)
return;
@ -104,7 +104,7 @@ stop_rb_released ( @@ -104,7 +104,7 @@ stop_rb_released (
g_menu_append_item (menu, menuitem);
z_gtk_show_context_menu_from_g_menu (
GTK_WIDGET (self), x, y, menu);
self->popover_menu, x, y, menu);
}
static void
@ -113,7 +113,7 @@ backward_rb_released ( @@ -113,7 +113,7 @@ backward_rb_released (
int n_press,
double x,
double y,
GtkButton * self)
TransportControlsWidget * self)
{
if (n_press != 1)
return;
@ -130,7 +130,7 @@ backward_rb_released ( @@ -130,7 +130,7 @@ backward_rb_released (
g_menu_append_item (menu, menuitem);
z_gtk_show_context_menu_from_g_menu (
GTK_WIDGET (self), x, y, menu);
self->popover_menu, x, y, menu);
}
static void
@ -139,7 +139,7 @@ forward_rb_released ( @@ -139,7 +139,7 @@ forward_rb_released (
int n_press,
double x,
double y,
GtkButton * self)
TransportControlsWidget * self)
{
if (n_press != 1)
return;
@ -156,7 +156,7 @@ forward_rb_released ( @@ -156,7 +156,7 @@ forward_rb_released (
g_menu_append_item (menu, menuitem);
z_gtk_show_context_menu_from_g_menu (
GTK_WIDGET (self), x, y, menu);
self->popover_menu, x, y, menu);
}
static void
@ -165,7 +165,7 @@ loop_rb_released ( @@ -165,7 +165,7 @@ loop_rb_released (
int n_press,
double x,
double y,
GtkButton * self)
TransportControlsWidget * self)
{
if (n_press != 1)
return;
@ -182,7 +182,7 @@ loop_rb_released ( @@ -182,7 +182,7 @@ loop_rb_released (
g_menu_append_item (menu, menuitem);
z_gtk_show_context_menu_from_g_menu (
GTK_WIDGET (self), x, y, menu);
self->popover_menu, x, y, menu);
}
static void
@ -191,7 +191,7 @@ rec_rb_released ( @@ -191,7 +191,7 @@ rec_rb_released (
int n_press,
double x,
double y,
GtkButton * self)
TransportControlsWidget * self)
{
if (n_press != 1)
return;
@ -208,7 +208,7 @@ rec_rb_released ( @@ -208,7 +208,7 @@ rec_rb_released (
g_menu_append_item (menu, menuitem);
z_gtk_show_context_menu_from_g_menu (
GTK_WIDGET (self), x, y, menu);
self->popover_menu, x, y, menu);
}
static void
@ -523,6 +523,13 @@ transport_controls_widget_init ( @@ -523,6 +523,13 @@ transport_controls_widget_init (
gtk_widget_init_template (GTK_WIDGET (self));
self->popover_menu =
GTK_POPOVER_MENU (
gtk_popover_menu_new_from_model (NULL));
gtk_box_append (
GTK_BOX (self),
GTK_WIDGET (self->popover_menu));
/* setup record button */
setup_record_btn (self);
@ -564,7 +571,7 @@ transport_controls_widget_init ( @@ -564,7 +571,7 @@ transport_controls_widget_init (
GDK_BUTTON_SECONDARY);
g_signal_connect (
mp, "released",
G_CALLBACK (play_rb_released), self->play);
G_CALLBACK (play_rb_released), self);
gtk_widget_add_controller (
GTK_WIDGET (self->play),
GTK_EVENT_CONTROLLER (mp));
@ -576,7 +583,7 @@ transport_controls_widget_init ( @@ -576,7 +583,7 @@ transport_controls_widget_init (
GDK_BUTTON_SECONDARY);
g_signal_connect (
mp, "released",
G_CALLBACK (stop_rb_released), self->stop);
G_CALLBACK (stop_rb_released), self);
gtk_widget_add_controller (
GTK_WIDGET (self->stop),
GTK_EVENT_CONTROLLER (mp));
@ -588,7 +595,7 @@ transport_controls_widget_init ( @@ -588,7 +595,7 @@ transport_controls_widget_init (
GDK_BUTTON_SECONDARY);
g_signal_connect (
mp, "released",
G_CALLBACK (backward_rb_released), self->backward);
G_CALLBACK (backward_rb_released), self);
gtk_widget_add_controller (
GTK_WIDGET (self->backward),
GTK_EVENT_CONTROLLER (mp));
@ -600,7 +607,7 @@ transport_controls_widget_init ( @@ -600,7 +607,7 @@ transport_controls_widget_init (
GDK_BUTTON_SECONDARY);
g_signal_connect (
mp, "released",
G_CALLBACK (forward_rb_released), self->forward);
G_CALLBACK (forward_rb_released), self);
gtk_widget_add_controller (
GTK_WIDGET (self->forward),
GTK_EVENT_CONTROLLER (mp));
@ -612,7 +619,7 @@ transport_controls_widget_init ( @@ -612,7 +619,7 @@ transport_controls_widget_init (
GDK_BUTTON_SECONDARY);
g_signal_connect (
mp, "released",
G_CALLBACK (loop_rb_released), self->loop);
G_CALLBACK (loop_rb_released), self);
gtk_widget_add_controller (
GTK_WIDGET (self->loop),
GTK_EVENT_CONTROLLER (mp));
@ -625,7 +632,7 @@ transport_controls_widget_init ( @@ -625,7 +632,7 @@ transport_controls_widget_init (
g_signal_connect (
mp, "released",
G_CALLBACK (rec_rb_released),
self->trans_record_btn);
self);
gtk_widget_add_controller (
GTK_WIDGET (self->trans_record_btn),
GTK_EVENT_CONTROLLER (mp));

53
src/utils/gtk.c

@ -1085,6 +1085,11 @@ on_new_window_destroyed ( @@ -1085,6 +1085,11 @@ on_new_window_destroyed (
GtkNotebook * new_notebook =
g_ptr_array_index (data->new_notebooks, idx);
const char * name =
gtk_widget_get_name (GTK_WIDGET (new_notebook));
g_debug ("widget %s (%p)", name, new_notebook);
g_return_if_fail (
GTK_IS_NOTEBOOK (new_notebook));
g_ptr_array_remove_index (data->new_windows, idx);
g_ptr_array_remove_index (
data->new_notebooks, idx);
@ -1115,6 +1120,7 @@ on_new_window_destroyed ( @@ -1115,6 +1120,7 @@ on_new_window_destroyed (
gtk_notebook_set_tab_reorderable (
data->notebook, page, true);
}
g_object_unref (new_notebook);
}
typedef struct DetachableNotebookDeleteEventData
@ -1124,9 +1130,8 @@ typedef struct DetachableNotebookDeleteEventData @@ -1124,9 +1130,8 @@ typedef struct DetachableNotebookDeleteEventData
} DetachableNotebookDeleteEventData;
static bool
on_new_window_delete_event (
on_new_window_close_request (
GtkWidget * widget,
GdkEvent * event,
DetachableNotebookDeleteEventData * delete_data)
{
GtkWidget * page = delete_data->page;
@ -1164,14 +1169,15 @@ static GtkNotebook * @@ -1164,14 +1169,15 @@ static GtkNotebook *
on_create_window (
GtkNotebook * notebook,
GtkWidget * page,
int x,
int y,
DetachableNotebookData * data)
{
g_return_val_if_fail (data, NULL);
GtkWindow * new_window =
GTK_WINDOW (gtk_window_new ());
GtkNotebook * new_notebook =
GTK_NOTEBOOK (gtk_notebook_new ());
g_object_ref_sink (new_notebook);
gtk_window_set_child (
GTK_WINDOW (new_window),
GTK_WIDGET (new_notebook));
@ -1258,8 +1264,8 @@ on_create_window ( @@ -1258,8 +1264,8 @@ on_create_window (
delete_data->data = data;
delete_data->page = page;
g_signal_connect_data (
G_OBJECT (new_window), "delete-event",
G_CALLBACK (on_new_window_delete_event),
G_OBJECT (new_window), "close-request",
G_CALLBACK (on_new_window_close_request),
delete_data,
(GClosureNotify) free_delete_data, 0);
gtk_window_set_icon_name (
@ -1340,6 +1346,7 @@ detach_pages_programmatically ( @@ -1340,6 +1346,7 @@ detach_pages_programmatically (
GtkNotebook * old_notebook,
DetachableNotebookData * data)
{
g_return_if_fail (GTK_IS_NOTEBOOK (old_notebook));
int n_pages =
gtk_notebook_get_n_pages (old_notebook);
for (int i = n_pages - 1; i >= 0; i--)
@ -1366,7 +1373,7 @@ detach_pages_programmatically ( @@ -1366,7 +1373,7 @@ detach_pages_programmatically (
g_object_ref (tab_label);
GtkNotebook * new_notebook =
on_create_window (
old_notebook, page, 12, 12, data);
old_notebook, page, data);
gtk_notebook_detach_tab (
old_notebook, page);
gtk_notebook_append_page (
@ -1390,6 +1397,7 @@ z_gtk_notebook_make_detachable ( @@ -1390,6 +1397,7 @@ z_gtk_notebook_make_detachable (
GtkNotebook * notebook,
GtkWindow * parent_window)
{
g_return_if_fail (GTK_IS_NOTEBOOK (notebook));
DetachableNotebookData * data =
object_new (DetachableNotebookData);
data->notebook = notebook;
@ -1849,22 +1857,23 @@ z_gtk_dialog_run ( @@ -1849,22 +1857,23 @@ z_gtk_dialog_run (
return ri.response_id;
}
/**
* The popover must already exist as a children
* of its intended widget (or a common parent).
*
* This function will set the new menu and show it.
*/
void
z_gtk_show_context_menu_from_g_menu (
GtkWidget * widget,
double x,
double y,
GMenu * menu)
{
GtkPopoverMenu * popover_menu =
GTK_POPOVER_MENU (
gtk_popover_menu_new_from_model (
G_MENU_MODEL (menu)));
/*gtk_popover_present (*/
/*GTK_POPOVER (popover_menu));*/
if (widget)
gtk_widget_set_parent (
GTK_WIDGET (popover_menu), widget);
GtkPopoverMenu * popover_menu,
double x,
double y,
GMenu * menu)
{
g_return_if_fail (
GTK_IS_POPOVER_MENU (popover_menu));
gtk_popover_menu_set_menu_model (
popover_menu, G_MENU_MODEL (menu));
gtk_popover_set_pointing_to (
GTK_POPOVER (popover_menu),
&Z_GDK_RECTANGLE_INIT_UNIT ((int) x, (int) y));
@ -1872,8 +1881,6 @@ z_gtk_show_context_menu_from_g_menu ( @@ -1872,8 +1881,6 @@ z_gtk_show_context_menu_from_g_menu (
/*GTK_POPOVER (popover_menu), false);*/
gtk_popover_popup (
GTK_POPOVER (popover_menu));
g_message ("------------------------------------------------- popping up");
}
/**

6
subprojects/libadwaita.wrap

@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
[wrap-file]
directory = libadwaita-1171616701bf12a1c56bbad3f0e8821208d87029
source_url = https://gitlab.gnome.org/GNOME/libadwaita/-/archive/1171616701bf12a1c56bbad3f0e8821208d87029/libadwaita-1171616701bf12a1c56bbad3f0e8821208d87029.tar.gz
source_filename = libadwaita-1171616701bf12a1c56bbad3f0e8821208d87029.tar.gz
source_hash = 097fa28ac7b9181f6f5aaabb6fffa1aa20a3179bd163bbf6fcabf720943ede2d
Loading…
Cancel
Save