~mir-team/miral/release

« back to all changes in this revision

Viewing changes to miral-shell/floating_window_manager.cpp

  • Committer: Bileto Bot
  • Date: 2017-06-21 08:34:34 UTC
  • mfrom: (360.1.1 miral-release)
  • Revision ID: ci-train-bot@canonical.com-20170621083434-e7ftkyg5qr2fzsao
* New upstream release 1.4.0 (https://launchpad.net/miral/+milestone/1.4.0)
  - ABI summary:
    . miral ABI unchanged at 2
  - Enhancements:
    . Support for passing messages to enable Drag & Drop
    . Support for client requested move
    . Port to the undeprecated Mir APIs
    . Added "--cursor-theme" option when configuring a cursor theme
    . Drop support for Mir versions before 0.26
  - Bugs fixed:

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
 * Authored by: Alan Griffiths <alan@octopull.co.uk>
17
17
 */
18
18
 
19
 
#include "titlebar_window_manager.h"
 
19
#include "floating_window_manager.h"
20
20
#include "decoration_provider.h"
21
21
 
22
22
#include <miral/application_info.h>
46
46
}
47
47
}
48
48
 
49
 
TitlebarWindowManagerPolicy::TitlebarWindowManagerPolicy(
 
49
FloatingWindowManagerPolicy::FloatingWindowManagerPolicy(
50
50
    WindowManagerTools const& tools,
51
51
    SpinnerSplash const& spinner,
52
52
    miral::InternalClientLauncher const& launcher,
64
64
    active_workspace = key_to_workspace[KEY_F1];
65
65
}
66
66
 
67
 
TitlebarWindowManagerPolicy::~TitlebarWindowManagerPolicy() = default;
 
67
FloatingWindowManagerPolicy::~FloatingWindowManagerPolicy() = default;
68
68
 
69
 
bool TitlebarWindowManagerPolicy::handle_pointer_event(MirPointerEvent const* event)
 
69
bool FloatingWindowManagerPolicy::handle_pointer_event(MirPointerEvent const* event)
70
70
{
71
71
    auto const action = mir_pointer_event_action(event);
72
72
    auto const modifiers = mir_pointer_event_modifiers(event) & modifier_mask;
137
137
    return consumes_event;
138
138
}
139
139
 
140
 
void TitlebarWindowManagerPolicy::end_resize()
 
140
void FloatingWindowManagerPolicy::end_resize()
141
141
{
142
142
    if (!resizing  && !pinching)
143
143
        return;
160
160
    pinching = false;
161
161
}
162
162
 
163
 
bool TitlebarWindowManagerPolicy::handle_touch_event(MirTouchEvent const* event)
 
163
bool FloatingWindowManagerPolicy::handle_touch_event(MirTouchEvent const* event)
164
164
{
165
165
    auto const count = mir_touch_event_point_count(event);
166
166
 
281
281
    return consumes_event;
282
282
}
283
283
 
284
 
void TitlebarWindowManagerPolicy::advise_new_window(WindowInfo const& window_info)
 
284
void FloatingWindowManagerPolicy::advise_new_window(WindowInfo const& window_info)
285
285
{
286
286
    CanonicalWindowManagerPolicy::advise_new_window(window_info);
287
287
 
306
306
    }
307
307
}
308
308
 
309
 
void TitlebarWindowManagerPolicy::handle_window_ready(WindowInfo& window_info)
 
309
void FloatingWindowManagerPolicy::handle_window_ready(WindowInfo& window_info)
310
310
{
311
311
    if (window_info.window().application() != spinner.session() && window_info.needs_titlebar(window_info.type()))
312
312
        decoration_provider->create_titlebar_for(window_info.window());
314
314
    CanonicalWindowManagerPolicy::handle_window_ready(window_info);
315
315
}
316
316
 
317
 
void TitlebarWindowManagerPolicy::advise_focus_lost(WindowInfo const& info)
 
317
void FloatingWindowManagerPolicy::advise_focus_lost(WindowInfo const& info)
318
318
{
319
319
    CanonicalWindowManagerPolicy::advise_focus_lost(info);
320
320
 
321
321
    decoration_provider->paint_titlebar_for(info, 0x3F);
322
322
}
323
323
 
324
 
void TitlebarWindowManagerPolicy::advise_focus_gained(WindowInfo const& info)
 
324
void FloatingWindowManagerPolicy::advise_focus_gained(WindowInfo const& info)
325
325
{
326
326
    CanonicalWindowManagerPolicy::advise_focus_gained(info);
327
327
 
337
337
    }
338
338
}
339
339
 
340
 
void TitlebarWindowManagerPolicy::advise_state_change(WindowInfo const& window_info, MirWindowState state)
 
340
void FloatingWindowManagerPolicy::advise_state_change(WindowInfo const& window_info, MirWindowState state)
341
341
{
342
342
    CanonicalWindowManagerPolicy::advise_state_change(window_info, state);
343
343
 
344
344
    decoration_provider->advise_state_change(window_info, state);
345
345
}
346
346
 
347
 
void TitlebarWindowManagerPolicy::advise_resize(WindowInfo const& window_info, Size const& new_size)
 
347
void FloatingWindowManagerPolicy::advise_resize(WindowInfo const& window_info, Size const& new_size)
348
348
{
349
349
    CanonicalWindowManagerPolicy::advise_resize(window_info, new_size);
350
350
 
351
351
    decoration_provider->resize_titlebar_for(window_info, new_size);
352
352
}
353
353
 
354
 
void TitlebarWindowManagerPolicy::advise_delete_window(WindowInfo const& window_info)
 
354
void FloatingWindowManagerPolicy::advise_delete_window(WindowInfo const& window_info)
355
355
{
356
356
    CanonicalWindowManagerPolicy::advise_delete_window(window_info);
357
357
 
358
358
    decoration_provider->destroy_titlebar_for(window_info.window());
359
359
}
360
360
 
361
 
bool TitlebarWindowManagerPolicy::handle_keyboard_event(MirKeyboardEvent const* event)
 
361
bool FloatingWindowManagerPolicy::handle_keyboard_event(MirKeyboardEvent const* event)
362
362
{
363
363
    auto const action = mir_keyboard_event_action(event);
364
364
    auto const scan_code = mir_keyboard_event_scan_code(event);
514
514
    return false;
515
515
}
516
516
 
517
 
void TitlebarWindowManagerPolicy::toggle(MirWindowState state)
 
517
void FloatingWindowManagerPolicy::toggle(MirWindowState state)
518
518
{
519
519
    if (auto const window = tools.active_window())
520
520
    {
528
528
    }
529
529
}
530
530
 
531
 
bool TitlebarWindowManagerPolicy::resize(Window const& window, Point cursor, Point old_cursor)
 
531
bool FloatingWindowManagerPolicy::resize(Window const& window, Point cursor, Point old_cursor)
532
532
{
533
533
    if (!window)
534
534
        return false;
579
579
    return true;
580
580
}
581
581
 
582
 
void TitlebarWindowManagerPolicy::keep_size_within_limits(
 
582
void FloatingWindowManagerPolicy::keep_size_within_limits(
583
583
    WindowInfo const& window_info, Displacement& delta, Width& new_width, Height& new_height) const
584
584
{
585
585
    auto const min_width  = std::max(window_info.min_width(), Width{5});
617
617
    }
618
618
}
619
619
 
620
 
WindowSpecification TitlebarWindowManagerPolicy::place_new_window(
 
620
WindowSpecification FloatingWindowManagerPolicy::place_new_window(
621
621
    ApplicationInfo const& app_info, WindowSpecification const& request_parameters)
622
622
{
623
623
    auto parameters = CanonicalWindowManagerPolicy::place_new_window(app_info, request_parameters);
634
634
    return parameters;
635
635
}
636
636
 
637
 
void TitlebarWindowManagerPolicy::advise_adding_to_workspace(
 
637
void FloatingWindowManagerPolicy::advise_adding_to_workspace(
638
638
    std::shared_ptr<Workspace> const& workspace, std::vector<Window> const& windows)
639
639
{
640
640
    if (windows.empty())
653
653
    }
654
654
}
655
655
 
656
 
void TitlebarWindowManagerPolicy::switch_workspace_to(
 
656
void FloatingWindowManagerPolicy::switch_workspace_to(
657
657
    std::shared_ptr<Workspace> const& workspace,
658
658
    Window const& window)
659
659
{
716
716
    }
717
717
}
718
718
 
719
 
void TitlebarWindowManagerPolicy::apply_workspace_hidden_to(Window const& window)
 
719
void FloatingWindowManagerPolicy::apply_workspace_hidden_to(Window const& window)
720
720
{
721
721
    auto const& window_info = tools.info_for(window);
722
722
    auto& pdata = policy_data_for(window_info);
732
732
    }
733
733
}
734
734
 
735
 
void TitlebarWindowManagerPolicy::apply_workspace_visible_to(Window const& window)
 
735
void FloatingWindowManagerPolicy::apply_workspace_visible_to(Window const& window)
736
736
{
737
737
    auto const& window_info = tools.info_for(window);
738
738
    auto& pdata = policy_data_for(window_info);
746
746
    }
747
747
}
748
748
 
749
 
void TitlebarWindowManagerPolicy::handle_modify_window(WindowInfo& window_info, WindowSpecification const& modifications)
 
749
void FloatingWindowManagerPolicy::handle_modify_window(WindowInfo& window_info, WindowSpecification const& modifications)
750
750
{
751
751
    auto mods = modifications;
752
752